【发布时间】:2017-03-04 04:44:31
【问题描述】:
我的导航栏有点小问题。当我将鼠标悬停在其中一个父 li 元素上时,子 ul 元素(下拉菜单)突然出现。当我将鼠标悬停在它上面时,它会按原样消失(淡出)。
这是 HTML 结构的示例:
<header id="masthead">
<ul id="menu-main-menu-tabletdesktop" class="menu">
<li><a href="/some-link/">Parent</a>
<ul class="sub-menu">
<li><a href="/some-link/a/">Link A</a></li>
<li><a href="/some-link/b/">Link B</a></li>
<li><a href="/some-link/c/">Link C</a></li>
</ul>
</li>
</ul>
</header>
这是 SCSS:
@mixin transition($target, $time) {
-webkit-transition: $target $time ease-in-out;
transition: $target $time ease-in-out;
}
header#masthead .main-menu ul > li:not(.wdac-active) > ul.sub-menu {
display: none;
}
header#masthead .main-menu ul > li > ul.sub-menu {
opacity: 0;
@include transition(opacity, 0.6s);
}
header#masthead .main-menu ul > li:hover > ul.sub-menu,
header#masthead .main-menu ul > li:focus > ul.sub-menu {
opacity: 1;
@include transition(opacity, 0.6s);
display: block;
}
header#masthead .main-menu ul > li.wdac-active > ul.sub-menu {
display: block;
}
0.6s后为其添加.wdac-active类的jQuery如下:
$("#masthead ul.menu > li").on("hover", function() {
var $menuItem = $(this);
setTimeout(function() {
$menuItem.toggleClass("wdac-active");
}, 600);
});
所以我想要发生的是,在悬停时,ul 设置为阻塞并慢慢淡入,然后应用 wdac-active 类。鼠标移开 li 后,ul 慢慢淡出,一旦 wdac-active 类被移除,它就会被设置为 display: none。
谁能告诉我我在这里做错了什么?淡入很突然(不好),但淡出工作正常。
【问题讨论】:
-
不透明度过渡在同时更改显示时不起作用。您需要为每个过渡创建关键帧。
-
如果您已经在使用 jQuery,您可以在子元素上使用“fadeIn() 方法,然后添加类。这样,fadeIn 将更改显示并为其设置动画,然后添加类将永远设置它
-
LordNero,我首先尝试过,但该网站有其他 css 使 fadeIn() 或 toggleFade() 非常奇怪,所以我选择不使用它。
标签: javascript jquery css sass