如何添加隐藏延迟到完整的CSS下拉垂直菜单
How to add a hiding delay to Full CSS Dropdown Vertical Menu
我的CSS垂直菜单有这个脚本:
//Nested Side Bar Menu (Mar 20th, 09)
//By Dynamic Drive: http://www.dynamicdrive.com/style/
var menuids=["sidebarmenu1"] //Enter id(s) of each Side Bar Menu's main UL, separated by commas
function initsidebarmenu(){
for (var i=0; i<menuids.length; i++){
var ultags=document.getElementById(menuids[i]).getElementsByTagName("ul")
for (var t=0; t<ultags.length; t++){
ultags[t].parentNode.getElementsByTagName("a")[0].className+=" subfolderstyle"
if (ultags[t].parentNode.parentNode.id==menuids[i]) //if this is a first level submenu
ultags[t].style.left=ultags[t].parentNode.offsetWidth+"px" //dynamically position first level submenus to be width of main menu item
else //else if this is a sub level submenu (ul)
ultags[t].style.left=ultags[t-1].getElementsByTagName("a")[0].offsetWidth+"px" //position menu to the right of menu item that activated it
ultags[t].parentNode.onmouseover=function(){
this.getElementsByTagName("ul")[0].style.display="block"
}
ultags[t].parentNode.onmouseout=function(){
this.getElementsByTagName("ul")[0].style.display="none"
}
}
for (var t=ultags.length-1; t>-1; t--){ //loop through all sub menus again, and use "display:none" to hide menus (to prevent possible page scrollbars
ultags[t].style.visibility="visible"
ultags[t].style.display="none"
}
}
}
if (window.addEventListener)
window.addEventListener("load", initsidebarmenu, false)
else if (window.attachEvent)
window.attachEvent("onload", initsidebarmenu)
我在哪里可以使用timeout()来延迟菜单隐藏?
脚本:
//Nested Side Bar Menu (Mar 20th, 09)
//By Dynamic Drive: http://www.dynamicdrive.com/style/
var menuids=["sidebarmenu1"] //Enter id(s) of each Side Bar Menu's main UL, separated by commas
var defaultDelay = 0; //ms
function initsidebarmenu(){
for (var i=0; i<menuids.length; i++){
var ultags=document.getElementById(menuids[i]).getElementsByTagName("ul");
for (var t=0; t<ultags.length; t++){
ultags[t].parentNode.getElementsByTagName("a")[0].className+=" subfolderstyle";
if (ultags[t].parentNode.parentNode.id==menuids[i]){ //if this is a first level submenu
ultags[t].style.left=ultags[t].parentNode.offsetWidth+"px"; //dynamically position first level submenus to be width of main menu item
} else{ //else if this is a sub level submenu (ul)
ultags[t].style.left=ultags[t-1].getElementsByTagName("a")[0].offsetWidth+"px"; //position menu to the right of menu item that activated it
}
ultags[t].parentNode.onmouseover=function(){
var elem = this.getElementsByTagName("ul")[0];
if (elem){
if (elem.timer){
clearTimeout(elem.timer);
}
elem.timer=0;
elem.style.display="block";
}
}
ultags[t].parentNode.onmouseout=function(){
var elem = this.getElementsByTagName("ul")[0];
if (elem){
var delay = defaultDelay;
if (elem.parentNode && elem.parentNode.parentNode && elem.parentNode.parentNode.className){
var match = /submenu-delay-([0-9]*)/i.exec(elem.parentNode.parentNode.className);
delay = (match && (match.length > 1)) ? match[1] : defaultDelay;
}
elem.timer=setTimeout(function(){
elem.style.display="none";
}, delay);
}
};
}
for (var t=ultags.length-1; t>-1; t--){ //loop through all sub menus again, and use "display:none" to hide menus (to prevent possible page scrollbars
ultags[t].style.visibility="visible"
ultags[t].style.display="none"
}
}
}
if (window.addEventListener)
window.addEventListener("load", initsidebarmenu, false)
else if (window.attachEvent)
window.attachEvent("onload", initsidebarmenu)
HTML:
<div class="sidebarmenu">
<ul id="sidebarmenu1" class='submenu-delay-1000'>
<li><a href="#">Item 1</a></li>
<li><a href="#">Item 2</a></li>
<li><a href="#">Folder 1</a>
<ul>
<li><a href="#">Sub Item 1.1</a></li>
<li><a href="#">Sub Item 1.2</a></li>
</ul>
</li>
<li><a href="#">Item 3</a></li>
<li><a href="#">Folder 2</a>
<ul>
<li><a href="#">Sub Item 2.1</a></li>
<li><a href="#">Folder 2.1</a>
<ul>
<li><a href="#">Folder 2.1.1</a>
<ul class='submenu-delay-5000'>
<li><a href="#">Sub Item 2.1.1.1</a></li>
<li><a href="#">Sub Item 2.1.1.2</a></li>
<li><a href="#">Folder 2.1.1.3</a>]
<ul >
<li><a href="#">Sub Item 2.1.1.3.1</a></li>
<li><a href="#">Sub Item 2.1.1.3.2</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="#">Sub Item 2.1.2</a></li>
<li><a href="#">Sub Item 2.1.3</a></li>
<li><a href="#">Sub Item 2.1.4</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="#">Item 4</a></li>
</ul>
</div>
相关文章:
- 打开CSS菜单加载
- 悬停时损坏的CSS菜单 - 闪烁效果
- 为什么我的响应CSS菜单会迫使页面内容向上跳转
- Veritcal下拉Css菜单未按预期运行
- CSS 菜单帮助 - 子/父问题
- 使 CSS 菜单向右浮动
- 突出显示 CSS 菜单栏中当前选定的链接
- 如果我放置图像幻灯片,CSS 菜单无法正常工作
- 是否可以通过下拉CSS菜单运行js函数
- CSS 菜单 - 单击时的子菜单 (JS)
- 这个 CSS 菜单是如何创建的
- css菜单或脚本don'I don’我不干ie
- CSS菜单对齐问题-新手开发人员
- 将第三级添加到CSS菜单
- CSS菜单自动点击第一项时,点击切换手机
- CSS菜单甚至间距和大小
- 如何防止css菜单中的自动滑动
- CSS菜单的页面顶部
- CSS菜单居中
- 使CSS菜单项和标题扩展到正确的宽度