<html xmlns="http://www.w3.org/1999/xhtml" lang="zh-CN">
<head>
<meta http-equiv="Content-Type" c />
<title>css菜單演示</title>
<style type="text/css">
<!--
*{margin:0;padding:0;border:0;}
body {
font-family: arial, 宋體, serif;
font-size:12px;
}
#nav {
line-height: 24px; list-style-type: none; background:#666;
}
#nav a {
display: block; width: 150px; text-align:center;
}
#nav a:link {
color:#666; text-decoration:none;
}
#nav a:visited {
color:#666;text-decoration:none;
}
#nav a:hover {
color:#FFF;text-decoration:none;font-weight:bold;
}
#nav li {
float: left; width: 80px; background:#CCC;
}
#nav li a:hover{
background:#999;
}
#nav li ul {
line-height: 27px; list-style-type: none;text-align:left;
left: -999em; width: 150px; position: absolute;
}
#nav li ul li{
float: left; width: 150px;
background: #F6F6F6;
}
#nav li ul a{
display: block; width: 156px;text-align:left;padding-left:24px;
}
#nav li ul a:link {
color:#666; text-decoration:none;
}
#nav li ul a:visited {
color:#666;text-decoration:none;
}
#nav li ul a:hover {
color:#F3F3F3;text-decoration:none;font-weight:normal;
background:#C00;
}
#nav li:hover ul {
left: auto;
}
#nav li.sfhover ul {
left: auto;
}
#content {
clear: left;
}
-->
</style>
<script type=text/javascript><!--//--><![cdata[//><!--
function menuFix() {
var sfels = document.getElementById("nav").getElementsByTagName("li");
for (var i=0; i<sfels.length; i++) {
sfels[i].() {
this.className+=(this.className.length>0? " ": "") + "sfhover";
}
sfels[i].() {
this.className+=(this.className.length>0? " ": "") + "sfhover";
}
sfels[i].() {
this.className+=(this.className.length>0? " ": "") + "sfhover";
}
sfels[i].() {
this.className=this.className.replace(new RegExp("( ?|^)sfhover\\b"),
"");
}
}
}
window.;
//--><!]]></script>
</head>
<body>
<ul id="nav">
<li><a href="#">用戶管理</a>
<ul>
<li><a href="#">產品一</a></li>
<li><a href="#">產品一</a></li>
<li><a href="#">產品一</a></li>
<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>
<li><a href="#">服務二</a></li>
<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>
<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>
<li><a href="#">我們四111</a></li>
</ul>
</li>
</ul>
</body>
</html>
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
實現的原理如下:
定義一個id為nav的ul,他下面有一級和二級菜單。
二級菜單默認是隱藏的。因為他的樣式是
#nav li ul {
line-height: 27px; list-style-type: none;text-align:left;
left: -999em; width: 150px; position: absolute;
}
關鍵就在于這個left:-999em和position:absolute,因為把他置為絕對的-999個字符長度后,他就不在父節點的所見范圍內了,所以就看不到了。當鼠標指上去的時候,用js把li的樣式后加了另一個樣式sfhover,即
#nav li.sfhover ul {
left: auto;
}
這個樣式中把left置為了auto,就表示顯示在原地方,這樣就能看到了,這里還做了瀏覽器的兼容。因為IE不支持
#nav li:hover ul {
left: auto;
}這樣的語法,只有用js給加上onmouseover等事件了。其實在firefox中是不需要那段js代碼的。
至于二級菜單的指上去變紅色的效果則純是css寫的。秘密如下:
#nav li ul a:link {
color:#666; text-decoration:none;
}
#nav li ul a:visited {
color:#666;text-decoration:none;
}
#nav li ul a:hover {
color:#F3F3F3;text-decoration:none;font-weight:normal;
background:#C00;
}
link表示一個鏈接a在頁面上顯示的樣式,visited表示鏈接訪問后的樣式,hover表示指上去后的樣式,這里的hover是IE唯一一個支持的這種寫法。還有一個虛選擇器active,表示激活后的樣式。注意,a的這四個虛選擇器是有順序的,必須按lvha這個順序寫才會有效,可以記為love與hate,喜歡和討厭,好記吧,呵呵。