JSFiddle - React, Tailwind, and code Playground
by XianfaLang
HTML
<!-- 二级菜单导航-横排 -->
<ul id="nav">
<li><a href="#">首页</a></li>
<li><a href="#">关于我们</a>
<ul>
<li><a href="#">我们的故事</a></li>
<li><a href="#">我们的团队</a></li>
</ul>
</li>
<li><a href="#">我们的服务</a>
<ul>
<li><a href="#">网页设计</a></li>
<li><a href="#">页面制作</a></li>
<li><a href="#">程序开发</a></li>
</ul>
</li>
<li><a href="#">联系我们</a>
<ul>
<li><a href="#">团队主力</a></li>
<li><a href="#">团队成员</a></li>
</ul>
</li>
</ul>
CSS
body {
font:normal 12px/1.5em "宋体", Verdana,Lucida, Arial, Helvetica, sans-serif;
} /* 设置页面中所有文字的样式 */
ul {
width:400px;
margin:0;
padding:0;
list-style:none;
border-right:1px solid #CCCCCC;
} /* 将无序列表ul的宽度设置为400px,并且去除内补丁和外补丁以及默认的列表修饰符,最后再添加边框 */
ul:after {
display:block;
visibility:hidden;
font-size:0;
line-height:0;
clear:both;
content:"";
} /* 清除无序列表的浮动,使其具有自适应高度的能力 */
#nav li {
position:relative; /* 将列表li标签设置为相对定位方式,未添加top、left、bottom和right,只是起到子级定位的对象作用 */
float:left;
width:100px;
height:30px;
} /* 设置列表li标签浮动,并且固定宽度以及高度的属性值 */
#nav li ul {
display:none;
position:absolute;
left:0;
top:30px;
width:100%; /* 宽度属性值为100%,相对于其父级元素的宽度100%显示 */
} /* 将列表li标签内的无序列表设置为绝对定位,相对于其父级顶部30px,靠左0px,并且暂时先隐藏不可见 */
ul li a {
display:block;
height:28px;
overflow:hidden;
line-height:30px;
text-align:center;
text-decoration:none;
color:#777777;
border:1px solid #CCCCCC;
border-right:0 none;
background:#FFFFFF;
} /* 设置列表li标签内的锚点a标签为块并设置基本样式属性,最终显示的文字效果 */
ul li li {
margin-top:-1px;
} /* 将列表li标签内的子级中的列表li标签外补丁设置为-1px,上移一个像素覆盖底边框 */
#nav li:hover ul, #nav li.over ul {
display: block;
} /* 触发列表li标签的鼠标经过时显示其子级的无序列表ul标签中的内容,以及类名为over下的子级ul */
/* 针对IE6在触发弹出层时的错位解决方案 */
* html ul li {float:left;zoom:1;}
* html ul li a {zoom:1;}
JavaScript
<!--
// IE6使用JS模拟hover效果,因为IE6不支持非锚点元素的:hover伪类。
startList = function() {
if (document.all && document.getElementById) {
navRoot = document.getElementById("nav");
for (i=0; i<navRoot.childNodes.length; i++) {
node = navRoot.childNodes[i];
if (node.nodeName=="LI") {
node.onmouseover=function() {
this.className+=" over";
}
node.onmouseout=function() {
this.className=this.className.replace(" over", "");
}
}
}
}
}
window.onload=startList;
-->