下拉菜单的 CSS 转换不起作用

标签 css css-transitions

我有以下两级菜单:

 <ul class="mid-nav-top-ul">

            <li class="mid-nav-top-li"><a class="mid-nav-top-a">Trading News</a>
                <ul class="mid-nav-two-ul">
                    <li class="mid-nav-two-li"><a class="mid-nav-two-a" href="#">Articles</a></li>
                    <li class="mid-nav-two-li"><a class="mid-nav-two-a" href="#">Stocks</a></li>
                    <li class="mid-nav-two-li"><a class="mid-nav-two-a" href="#">Forex</a></li>
                    <li class="mid-nav-two-li"><a class="mid-nav-two-a" href="#">Commodities</a></li>
                    <li class="mid-nav-two-li"><a class="mid-nav-two-a" href="#">Options</a></li>
                </ul>
            </li>

        </ul>

我有以下 CSS 使其成为下拉式菜单:

.mid-nav-two-ul{height: 0px; -webkit-transition: height 0.5s;  transition: height 0.5s;}
.mid-nav-top-ul:hover .mid-nav-two-ul{height: auto;}

它不考虑过渡 - 它会立即下降/改变高度。

有什么想法吗?

谢谢

最佳答案

首先,设置菜单 ul 的高度不一定会影响可见内容。如果溢出设置为hidden,例如overflow: hidden; 那么高度的变化会影响里面的内容,因为我们会理解如何处理“溢出”的内容。

其次,我们不能直接为 height 属性设置动画,您必须使用 max-height。然后,您可以将 max-height 设置为某个任意值,该值保证高于您的 ul 列表。

这是工作代码:

.mid-nav-two-ul
{
    max-height: 0px;
    overflow: hidden;
    -webkit-transition: max-height 0.5s; 
    transition: max-height 0.5s;

}

.mid-nav-top-ul:hover .mid-nav-two-ul
{
    max-height: 1000px;
}

Here's a working JSFiddle for you.

关于下拉菜单的 CSS 转换不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26220332/

相关文章:

javascript - Bootstrap Dropdown - 移动其他内容

javascript - 使用 CSS 'float' 时删除额外空间

css - 如何让我 float 的 <li> 扩展到覆盖整个 <ul>?

css - 将 css 分配给 *ngFor item 的值

html - Firefox 不支持过渡

javascript - 如何在过渡时获得平移偏移量

CSS transition [background-image property] 仅适用于 chrome

javascript - 使 div 总是直接出现在另一个 div 之上?

jquery - 向正文 :after when sidebar is clicked and run animation 上的背景 (rgba) 添加叠加层

html - 我试图在我的标签上放置一个过渡属性,当链接被访问时,当它悬停以改变颜色时