javascript - 如何平滑展开元素
问题描述
通过单击“ #sidebarnav>li
”:
1)它的第二个子元素 -元素将展开并且它的类在和<ul>
之间切换"collapse"
"collapse in"
2)"#sidebarnav>li"
获得“活跃”课程。
<a>
3)标签中的“aria-expanded”属性<ul>
变为“true”
我想在单击其父元素时平滑地扩展 ul 元素,但我无法实现。尝试将 transition: height 500ms ease-in-out
style 添加到类“ collapse in
”但不起作用。那么如何让它发挥作用呢?在Fiddle上查看
<!--language: lang-html-->
<nav class="sidebar-nav">
<ul class="in" id="sidebarnav">
<li>
<a class="has-arrow waves-effect waves-dark" aria-expanded="false" href="#">
<span class="hide-menu">Dashboard</span>
</a>
<ul class="collapse" aria-expanded="false">
<li><a href="index.html">Minimal </a></li>
<li><a href="index2.html">Analytical</a></li>
<li><a href="index3.html">Demographical</a></li>
<li><a href="index4.html">Modern</a></li>
</ul>
</li>
</ul>
</nav>
解决方案
不幸的是,您不能height
使用百分比值制作动画,因此您能做的最好的事情就是使用transform
.
如果您需要“扩展”效果,您将不得不求助于使用 JavaScript。以下是使用方法transform
:
ul
在容器中包围:
<div class="collapse-container">
<ul class="collapse" aria-expanded="false">
[...]
</ul>
</div>
隐藏容器上的溢出,以免ul
重叠:
.collapse-container {
overflow: hidden;
}
动画translateY
on .in
:
.collapse {
transition: transform 250ms ease-in-out;
transform: translateY(-100%);
}
.collapse.in {
transform: translateY(0%);
}
这是一个工作小提琴。(我更改了 JS 以使用容器元素)
推荐阅读
- python - 如何获得熊猫列的特定百分位跨度?
- c# - 将 SQL 查询转换为 LINQ 或 LINQ fluent 语法
- c# - BoDi.ObjectContainerException:无法解析接口:OpenQA.Selenium.IWebDriver
- c++ - 在模板化数据结构上调用 begin() 或 end()
- jestjs - 开玩笑 puppeteer 自定义测试环境中的全局在测试中丢失上下文
- google-apps-script - 如何使用应用程序脚本调用工作簿/工作表 - 完全合格的参考
- java - org.springframework.web.servlet.DispatcherServlet noHandlerFound 404 错误响应
- r - 如何在闪避直方图的不同 bin 之间插入填充?
- javascript - AJAX 请求返回带有属性的 JSON,而不是整个字符串作为一个值
- asp.net-mvc - 发布网站后表单不起作用,但它在本地主机上工作