丄諦啲仇魜ヤ
如 果 敌 人 让 你 生 气 , 那 说 明 你 没 有 胜 他 的 把 握!
posts - 6,comments - 56,trackbacks - 1

<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,喜欢和讨厌,好记吧,呵呵。

posted on 2007-09-02 09:14 Crying 阅读(642) 评论(0)  编辑  收藏 所属分类: JavaScript和CSS

只有注册用户登录后才能发表评论。


网站导航: