我有一个标准的下拉菜单,它使用jQuery来隐藏子li
个元素。但是,在加载网站时,子元素会快速出现并随后消失(有点像快速闪烁)。我不认为这与已经解决的内容已知问题有关。
网站是希伯来语,但这不应该影响任何事情。该网站位于here
如果你想要一个示例HTML + CSS和Javascript代码,我很乐意在这里发布。
我只是想知道以前是否有人遇到过这个问题。我在Chrome浏览器中看到它,我还没有真正检查过它是否也出现在IE和Firefox中。
谢谢!
编辑:HTML / CSS / JS如下所示:
HTML:
<ul class="menu">
<li><a href="#">blah</a>
<ul class="sub-menu">
<li><a href="#">blah</a></li>
</ul>
</li>
</ul>
CSS:
/* NAVIGATION -- level 1 */
ul.menu { float: right; list-style-type: none; font-size: 15px; margin-top: 50px; }
ul.menu > li{ float: right; display: inline; position: relative; margin-left: 30px; }
ul.menu li > a { display: block; color: #5c5d5f; text-decoration: none; border-bottom: solid 1px #9b9a95; }
ul.menu li:hover > a, ul.menu li a:hover , ul.menu li.current_page_item > a { color: black; }
body.home .current_page_item > a { }
body.home .current_page_item > a:hover { }
/* NAVIGATION -- level 2 */
ul.menu li > div { display: none; width: 157px; height: 171px; margin-right: -10px; position: absolute; opacity:0; background: url(images/subNav_bg.png) no-repeat top right; }
ul.menu li > div span { height: 15px; background: transparent; display: block; } /* used to push down the menu */
JS:
// navigation menu //
// add hasSubMenu to each li that has one //
$('.menu > li').has('ul').addClass('hasSubMenu');
// wrap with <div> //
$('li.hasSubMenu > ul').wrap('<div />');
$('ul.menu li > div').css('display', 'none');
$('ul.menu li > div').prepend('<span></span>');
$('li.hasSubMenu > a').click(function () {
return false;
});
// add class to <div> for extendedBg //
$('li.extendedBg').find('div').addClass('subBg2');
$('li.hasSubMenu').hover(function () {
// hover on
$(this).addClass('hover').find('div').stop().fadeTo("medium", 1, /* when done fading */
function () {
$(this).find('div').css('display', 'block');
//$(this).find('ul').css('display','block');
}
);
}, function () {
// hover off
$(this).removeClass('hover').find('div').stop().fadeOut();
});
答案 0 :(得分:8)
在页面的CSS中将下拉菜单设置为display: none
,或使用style="display:none"
直接在元素本身中设置。这将在页面加载时隐藏它。
答案 1 :(得分:3)
我有同样的问题:(除非我使用css在加载时隐藏它,我现在有一个问题,它永远不会显示!即使悬停在父母身上......
即使在我发布我的回复之前,我还想再试一次
#navigation ul ul{
display:none;
}
而不是
#navigation ul ul li{
display:none;
}
现在它完美无缺
答案 2 :(得分:2)
我建议将样式设置为display:none样式表中的li元素,以便浏览器知道最初将它们渲染为不显示。然后,当jQuery加载时,jQuery添加的内联样式将覆盖显示样式。
ul li {
display:none;
}
答案 3 :(得分:0)
尝试:
.mobile-menu:not( .mm-menu ) {
display: none;
}
其中'.mobile-menu'是您给菜单的包含元素提供的任何类或ID。
例如
<div class="mobile-menu">
<ul>
<li><a href="/about">about</a></li>
<li><a href="/food">Food</a></li>
</ul>
</div>