1.javascript方法

<style>
#navigation {
width: 200px;
font-family: Arial;
}
#navigation > ul {
list-style-type: none;
/* 不显示项目符号 */ margin: 0px;
padding: 0px;
}
#navigation > ul > li {
border-bottom: 1px solid #ED9F9F;
/* 添加下划线 */
}
#navigation > ul > li > a {
display: block;
/* 区块显示 */ padding: 5px 5px 5px 0.5em;
text-decoration: none;
border-left: 12px solid #711515;
/* 左边的粗红边 */ border-right: 1px solid #711515;
/* 右侧阴影 */
}
#navigation > ul > li > a:link,
#navigation > ul > li > a:visited {
background-color: #c11136;
color: #FFFFFF;
}
#navigation > ul > li > a:hover {
/* 鼠标经过时 */ background-color: #990020;
/* 改变背景色 */ color: #ffff00;
/* 改变文字颜色 */
}
/* 子菜单的CSS样式 */ #navigation ul li ul {
list-style-type: none;
margin: 0px;
padding: 0px 0px 0px 0px;
}
#navigation ul li ul li {
border-top: 1px solid #ED9F9F;
}
#navigation ul li ul li a {
display: block;
padding: 3px 3px 3px 0.5em;
text-decoration: none;
border-left: 28px solid #a71f1f;
border-right: 1px solid #711515;
}
#navigation ul li ul li a:link,
#navigation ul li ul li a:visited {
background-color: #e85070;
color: #FFFFFF;
}
#navigation ul li ul li a:hover {
background-color: #c2425d;
color: #ffff00;
}
#navigation ul li ul.myHide {
/* 隐藏子菜单 */ display: none;
}
#navigation ul li ul.myShow {
/* 显示子菜单 */ display: block;
}
</style> <script type="text/javascript">
function changemenu() {
//通过父元素li,找到兄弟元素ul
var bList = this.parentNode.getElementsByTagName("ul")[0];
//CSS交替更换来实现显、隐
if (bList.className == "myHide")
bList.className = "myShow";
else
bList.className = "myHide";
}
window.onload = function() {
var oList = document.getElementById("listUL");
var nList = oList.childNodes; //子元素
var sList;
for (var i = 0; i < nList.length; i++) {
//如果子元素为li,且这个li有子菜单ul
if (nList[i].tagName == "LI" && nList[i].getElementsByTagName("ul").length) {
slist = nList[i].firstChild; //找到超链接
slist.onclick = changemenu; //动态添加点击函数
}
}
}
</script> <div>
<div id="navigation">
<ul id="listUL">
<li><a href="#">Home</a>
</li>
<li><a href="#">News</a>
<ul class="myHide">
<li><a href="#">Lastest News</a>
</li>
<li><a href="#">All News</a>
</li>
</ul>
</li>
<li><a href="#">Sports</a>
<ul class="myHide">
<li><a href="#">Basketball</a>
</li>
<li><a href="#">Football</a>
</li>
<li><a href="#">Volleyball</a>
</li>
</ul>
</li>
<li><a href="#">Weather</a>
<ul class="myHide">
<li><a href="#">Today's Weather</a>
</li>
<li><a href="#">Forecast</a>
</li>
</ul>
</li>
<li><a href="#">Contact Me</a>
</li>
</ul>
</div> </div>

2.附jQuery方法

<script type="text/javascript">
$(function() {
//找到所有li标记中包含的ul标记
//然后找到它的前一个标记(即<a>),并添加click()事件
$("li").find("ul").prev().click(function() {
//点击<a>时让它后面的兄弟(即<ul>)切换CSS样式
$(this).next().toggleClass("myHide");
});
});
</script>

3.附jQuery toggle()方法

<script language="javascript">
$(function(){
$("li").find("ul").prev().click(function(){
$(this).next().toggle();
});
$("li:has(ul)").find("ul").hide();
});
</script>

Javascript制作伸缩的二级菜单的更多相关文章

  1. jQuery - 制作点击显示二级菜单效果

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  2. javascript 特效实现(3)—— 鼠标滑过显示二级菜单效果

    1. 关键代码:使用 switch 或 if 判断语句,改变对应的二级菜单显示方式为 block 或 none function selectTabMenu(i){ switch(i){ case 7 ...

  3. 个人练习:使用HTML+CSS制作二级菜单

    最近一直在学习HTML+CSS,刚看完如果制作下拉菜单部分,就想着做一个练练手. 先上成品图: 就是上面这个效果,横向菜单选项能点击,鼠标放在上面也能展开二级菜单,二级菜单也能点击,点击后就会在底下的 ...

  4. CSS制作二级菜单时,二级菜单与一级菜单不对齐

    效果如图: 部分代码如图: <li><a href="#" target="_blank">关于我们</a> <ul& ...

  5. html+css二级菜单制作!

    二级菜单!!<!DOCTYPE html<html lang="e<head> <meta charset="UTF-8"> < ...

  6. JavaScript(jquery)实现二级菜单联动

    为什么写这篇随笔? 二级菜单的联动一直是我心中一块石头,犹记得大一的时候只会用一点的Dreamweaver,当时做二级菜单难受啊,啥都不会,网上找了些资料,也看不懂别人的代码更别说用起来了 前些日子. ...

  7. JavaScript处理数据完成左侧二级菜单的搭建

    我们在项目中应用的后台管理框架基本上都是大同小异,左侧是一个二级菜单,点击选中的菜单,右侧对应的页面展示.我把前端页面封装数据的过程整理了一下,虽然不一定适合所有的管理页面,仅作为案例来参考,只是希望 ...

  8. bootstrap学习笔记之为导航条添加标题、二级菜单及状态 http://www.imooc.com/code/3120

    为导航条添加标题.二级菜单及状态 加入导航条标题 在Web页面制作中,常常在菜单前面都会有一个标题(文字字号比其它文字稍大一些),其实在Bootstrap框架也为大家做了这方面考虑,其通过" ...

  9. Jquery垂直下拉二级菜单

    自己做了一个基于Jquery 的垂直下拉二级菜单功能,直接看图: Html的代码如下: <!DOCTYPE html> <html> <head> <meta ...

随机推荐

  1. Apache启动报错Address already in use: make_sock: could not bind to...

    Apache启动时报错:(98)Address already in use: make_sock: could not bind to... # /etc/init.d/httpd start St ...

  2. oracle数据库中将clob字段内容利用java提取出至文本文档中

    代码段: 1.执行clob转String public static String ClobToString(Clob sc) throws SQLException, IOException { S ...

  3. 贝塞尔曲线 WPF MVVM N阶实现 公式详解+源代码下载

    源代码下载 效果图: 本程序主要实现: N阶贝塞尔曲线(通用公式) 本程序主要使用技术 MVVM InterAction 事件绑定 动态添加Canvas的Item 第一部分公式: n=有效坐标点数量 ...

  4. lua luna工具库

    luna工具库 概述 luna库提供了几个lua开发的常见辅助功能: lua/c++绑定 lua序列化与反序列化 变长整数编码,用于lua序列化,当然也可以方便的用于其他场合 这里把代码编译成了动态库 ...

  5. IO模型《四》多路复用IO

    多路复用IO(IO multiplexing) IO multiplexing这个词可能有点陌生,但是如果我说select/epoll,大概就都能明白了.有些地方也称这种IO方式为事件驱动IO (ev ...

  6. ObjectARX二次开发创建自己的静态库,如同objectARX库一样

    objectARX二次开发的时候,经常会用到一些重复使用的类,如果类已经足够的好,那么我们可以编译成静态库,加快开发和编译的速度,提高工作效率. 环境vs2010+objectARX2012wizar ...

  7. 浅析通过"监控"来辅助进行漏洞挖掘

    这篇文章总结了一些笔者个人在漏洞挖掘这一块的"姿势",看了下好像也没相关类似TIPs或者文章出现,就写下此文. 本文作者:Auther : vulkey@MstLab(米斯特安全攻 ...

  8. 使用bootstrap-table等自动使用ajax地址载入数据的插件的数据设计建议

    提出问题: bootstrap-table 可以根据ajax地址load的json数据.这个json数据一般就是数据库中查询的结果,而数据库中存放的数据一般不是用户友好的,比如数据表示一般使用简洁id ...

  9. 使用Git如何优雅的忽略掉一些不必的文件

    熟悉使用Git之后发现,使用sourceTree来管理和开发项目会变得更高效,现在我用bitbucket管理自己的项目,它提供了私有的仓库,用起来还是比较爽,不过刚开始用的时候,只要一打开本地仓库的工 ...

  10. js控制输入框只能输入数字不能输入其他字符

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...