响应式菜单脚本忽略子菜单
Responsive menu script ignores the submenu?
我有一个脚本为响应菜单切换高度:
jQuery(function() {
var pull = jQuery('#pull');
menu = jQuery('nav ul');
menuHeight = menu.height();
jQuery(pull).on('click', function(e) {
e.preventDefault();
menu.slideToggle();
});
});
jQuery(window).resize(function(){
var w = jQuery(window).width();
if(w > 320 && menu.is(':hidden')) {
menu.removeAttr('style');
}
});
问题是嵌套无序列表的高度没有被考虑在内,它只是"突然"出现,破坏了效果。HTML标记应该是:
<ul>
<li></li>
<li>
<ul>
</ul>
</li>
</ul>
你可以在http://www.windycitydigital.net/iconvert上看到它的直播。有人知道我该如何防止嵌套的UL破坏切换动画并使其成为一个流畅的过渡吗?
这里有几件事可能是有用的:
对于菜单的选择器它会选择顶层的ul以及所有的子导航ul。
尝试将选择器更改为:
menu = jQuery('nav > ul')
这个选择器将只选择nav元素的直接子元素,并防止在子导航上触发slideToggle函数,子导航看起来在你的CSS中包含一个显示块,由以下选择器样式:
#navigation ul ul
Slidetoggle会用你当前使用的选择器将它切换为display: none
我也强烈考虑改变你的选择器,使它更干净,更精确:
#navigation > ul
将只选择导航元素的直接子元素。使用这个选择器而不是#navigation ul可以让你使用更少的CSS,因为你不必通过使用更通用的#navigation ul选择器来覆盖你为子导航元素应用的样式(正如你所看到的,它会影响#navigation中的每个ul)。
既然你已经给子导航应用了一个类,你可以直接使用:
#navigation .sub-menu
希望这有助于引导你在正确的方向!
! !编辑(在评论之后)!!
试试这个JavaScript:
jQuery(function() {
var pull = jQuery('#pull'),
menu = jQuery('.menu', '#navigation');
pull.on('click', function(e) {
e.preventDefault();
menu.slideToggle('medium');
});
});
哦,确保你把#navigation ul {display: none}改为#navigation> ul {display: none},否则上面提到的subnav隐藏的问题将继续存在…
相关文章:
- 使用java脚本更改onClick事件中菜单选项卡的颜色
- 何时可以;我的用户脚本在Javascript中触发右键单击(上下文菜单)
- 使用Java脚本将值传递到模式弹出菜单
- 从下拉菜单将值传递给 gsp 中的脚本
- 移动菜单需要 Jquery 2.0.1,但其他站点脚本需要旧版本
- 子菜单的Jquery脚本,我该如何修复它
- 如何修复子菜单的此 jquery 脚本
- 修改此滚动导航菜单脚本
- 正则表达式映射在 Firefox 上下文菜单内容脚本中
- 下拉菜单 java 脚本
- 带有java脚本的下拉菜单,根据第一个下拉菜单更改值
- 在 Illustrator cs5.1 的“脚本”菜单下放置脚本的位置
- css菜单或脚本don'I don’我不干ie
- AJAX-如何在弹出菜单中运行脚本
- Mailto或超链接不会;由于子菜单脚本,无法处理页脚菜单
- 如何在Kendo UI中将java脚本函数设置为菜单栏项
- 谷歌脚本获取谷歌电子表格菜单内容
- 在子菜单脚本中创建一个额外的函数
- 需要修改这个jquery弹出菜单脚本与ajax工作
- 响应式菜单脚本忽略子菜单