javascript - 如何在css中隐藏带有滑动效果的li

标签 javascript html css

<分区>

我有一个 ul 并点击其中一个 li 我想隐藏其中的子 ul 具有滑动效果。我已经尝试将 animationheight 从 100% 调整到 0。但这不起作用。

这是代码片段,在真实场景中会有动态数据和 n 个 li

function hide() {
  var li = document.getElementById("game");
  game.classList.add("hide")
}
.hide {
  height: 0;
  overflow: hidden;
  animation-name: example;
  animation-duration: 4s;
}

@keyframes example {
  0% {
    height: 100%;
  }
  25% {
    height: 75%;
  }
  50% {
    height: 50%;
  }
  100% {
    height: 0%;
  }
}
<ul>
  <li>A</li>
  <li onclick="hide()">b</li>
  <li id="game" style="height:100%">
    <ul>
      <li>1</li>
      <li>2</li>
    </ul>
  </li>

</ul>

我怎样才能做到这一点?

最佳答案

使用百分比在您的示例中不起作用。

解决方案 1:您需要在 @keyframes 中设置固定高度像这样:

function hide() {
  var li = document.getElementById("game");
  game.classList.add("hide")
}
.hide {
  height: 0;
  overflow: hidden;
  animation-name: example;
  animation-duration: 1s;
}

@keyframes example {
  0% {
    height: 40px;
  }
  25% {
    height: 30px;
  }
  50% {
    height: 20px;
  }
  100% {
    height: 0px;
  }
}
<ul>
  <li>A</li>
  <li onclick="hide()">b</li>
  <li id="game">
    <ul>
      <li>1</li>
      <li>2</li>
    </ul>
  </li>

</ul>

解决方案 2:向父级添加固定高度 <ul>元素,然后您可以在 @keyframe 中使用百分比就像这样:

function hide() {
  var li = document.getElementById("game");
  game.classList.add("hide")
}
.hide {
  height: 0;
  overflow: hidden;
  animation-name: example;
  animation-duration: 1s;
}

ul {
  height: 200px;
}

@keyframes example {
  0% {
    height: 100%;
  }
  25% {
    height: 75%;
  }
  50% {
    height: 50%;
  }
  100% {
    height: 0%;
  }
}
<ul>
  <li>A</li>
  <li onclick="hide()">b</li>
  <li id="game">
    <ul>
      <li>1</li>
      <li>2</li>
    </ul>
  </li>

</ul>

Here is an article详细介绍了这个主题。

关于javascript - 如何在css中隐藏带有滑动效果的li,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50581969/

上一篇:php - 内联 CSS 不适用于 Mpdf

下一篇:css - Chrome 元素检查器字体

相关文章:

javascript - 我的 Bootstrap Modal ANCHOR 在菜单(导航栏)的行元素中不起作用

css - 调整导航栏的大小使其与内容框的宽度相同

html - 如何将页脚与 flexbox "cards?"的底部对齐

javascript - 我如何从居中 div 中的可移动 div 获得左侧位置的安全规范?

javascript - Angularjs ng-click() 不是从 ng-repeat 指令触发

javascript - 单击带有 DOM 内容的 Javascript 按钮触发文件下载

javascript - 如何用连续的长字符串添加空格

javascript - 基于点击菜单的 HTML5 主页

javascript - 如何删除 jQuery-ui 对话框标题栏?

javascript - 如何解决多个异步请求期间刷新 api token 的竞争条件?