javascript - 如何使列表平滑过渡

标签 javascript html css css-transitions css-animations

<分区>


想要改进这个问题?更新问题,使其只关注 editing this post 的一个问题。

关闭 5 年前

到目前为止,我有一个按钮,当单击时会出现一个列表,如果再次单击该列表会关闭,但它非常机械且不流畅,我将在此处向您展示。我只想了解如何在有人单击按钮时进行平滑漂亮的过渡。

这是片段。

document.getElementById("show-list").onclick = function() {

  var l = document.getElementById('List');
  if (l.style.display == '') {
    l.style.display = 'block';
  } else {
    l.style.display = '';
  }

};
#List {
  display: none;
  list-style-type: none;
}
<button id="show-list">Menu</button>
<ul id="List">Algorithms
  <li>Palindromes</li>
  <li>Factorialize Function</li>
  <li>Reverse A String</li>
  <li>Longest Word In String</li>
  <li>Title Case</li>
  <li>Return Largest Number In Array</li>
</ul>

最佳答案

这是一种使用 css 转换来做到这一点的方法:

document.getElementById("show-list").onclick = function() {

  var l = document.getElementById('List');
  if (l.style.height == 0) {
    l.style.height = 'auto';
    l.style.opacity = '1';
  } else {
    l.style.height = '0';
    l.style.opacity = '0';
  }

};
#List {
  height: 0;
  opacity: 0;
  list-style-type: none;
  transition: all 500ms ease-in-out;
}
<button id="show-list">Menu</button>
<ul id="List">Algorithms
  <li>Palindromes</li>
  <li>Factorialize Function</li>
  <li>Reverse A String</li>
  <li>Longest Word In String</li>
  <li>Title Case</li>
  <li>Return Largest Number In Array</li>
</ul>

关于javascript - 如何使列表平滑过渡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45623168/

上一篇:javascript - 当内容分布在多行时显示更多内容的按钮

下一篇:html - 如何使 <aside> 作为包含内容的列

相关文章:

javascript - 使用javascript自动增加firebase中的值

javascript - 我可以将 Traceur 编译成一个文件吗? (包括类的运行时)

javascript - 从 React 数组中填充选择选项

PHP 未以正确的格式导出 MySQL 数据库

css - NativeScript/NativeScript Angular - 如何为页面设置背景图片?

javascript - 单击按钮时隐藏和显示 div

css - 更改字体后最后一个字换行

javascript - 如何检测用户输入时 `input` 值的变化?

html - 按钮对齐问题 - 自动换行?

javascript - 使用具有 matrix3d 值的初始关键帧时,用于转换的 CSS 动画无法正常工作