大学生论坛's Archiver

glen 发表于 2007-9-22 01:04

[转贴]使用CSS制作4级下拉菜单

如今的web页面对下拉菜单的需求是越来越广泛了。从单纯的一层下拉菜单到多层菜单。下拉菜单的制作方式也非常多元化。在CSS还没有得到很好普及前,大家通常使用javascript来控制。以便达到下拉菜单的显示效果。由于javascript代码制作下拉菜单比较复杂,导致很多使用下拉菜单的web 页面制作者的困惑。对定位。对色彩的控制都不能很容易的掌控。 随着css技术的普及和日益发展,使用css制作下拉菜单也逐渐得以推广。而且得到了广泛的应用。由于不使用任何javascript脚本控制,完全由css来控制,使得代码更加简洁并得以理解。下面我就给大家介绍一个纯css制作的4级下拉菜单。[code]<style type="text/css">
/**//*<![CDATA[*/
body{font:normal 9pt verdana,sans-serif;color:#000;}

.menu {
height:150px;
font-size:90%;
margin:25px 0 50px 15px; /**//* this page only */
}

/**//* remove all the bullets, borders and padding from the default list styling */
.menu ul {
position:relative;
z-index:500;
padding:0;
margin:0;
list-style-type:none;
width:150px;
}
/**//* style the list items */
.menu li {
background:#d4d8bd;
height:26px;
/**//* for IE7 */
float:left;
}
.menu li.sub {background:#d4d8bd url(http://www.programmer.com.cn/images/sub.gif) no-repeat right center;}

/**//* get rid of the table */
.menu table {position:absolute; border-collapse:collapse; top:0; left:0; z-index:100; font-size:1em;}

/**//* style the links */
.menu a, .menu a:visited {
display:block;
text-decoration:none;
height:25px;
line-height:25px;
width:149px;
color:#000;
text-indent:5px;
border:1px solid #fff;
border-width:0 1px 1px 1px;
}
/**//* hack for IE5.5 */
* html .menu a, * html .menu a:visited {width:150px; width:149px;}
/**//* style the link hover */
* html .menu a:hover {color:#efa; background:#aa7; position:relative;}

.menu li:hover {position:relative;}

/**//* For accessibility of the top level menu when tabbing */
.menu a:active, .menu a:focus {color:#efa; background:#aa7;}

/**//* retain the hover colors for each sublevel IE7 and Firefox etc */
.menu li:hover > a {color:#efa; background:#aa7;}

/**//* hide the sub levels and give them a positon absolute so that they take up no room */
.menu li ul {
visibility:hidden;
position:absolute;
top:-30px;
/**//* set up the overlap (minus the overrun) */
left:100px;
/**//* set up the overrun area */
padding:30px;
/**//* this is for IE to make it interpret the overrrun padding */
background:transparent;
}

/**//* for browsers that understand this is all you need for the flyouts */
.menu li:hover > ul {visibility:visible;}


/**//* for IE5.5 and IE6 you need to style each level hover */

/**//* keep the third level+ hidden when you hover on first level link */
.menu ul a:hover ul ul{
visibility:hidden;
}
/**//* keep the fourth level+ hidden when you hover on second level link */
.menu ul a:hover ul a:hover ul ul{
visibility:hidden;
}
/**//* keep the fifth level hidden when you hover on third level link */
.menu ul a:hover ul a:hover ul a:hover ul ul{
visibility:hidden;
}

/**//* make the second level visible when hover on first level link */
.menu ul a:hover ul {
visibility:visible;
}
/**//* make the third level visible when you hover over second level link */
.menu ul a:hover ul a:hover ul{
visibility:visible;
}
/**//* make the fourth level visible when you hover over third level link */
.menu ul a:hover ul a:hover ul a:hover ul {
visibility:visible;
}
/**//* make the fifth level visible when you hover over fourth level link */
.menu ul a:hover ul a:hover ul a:hover ul a:hover ul {
visibility:visible;
}

/**//*]]>*/
</style>
<div class="menu">
<ul>
<li><a href="#">dropdown menu</a></li>

<li><a href="#">dropdown menu</a></li>
<li class="sub"><a href="#">dropdown menu<!--[if IE 7]><!--></a><!--<![endif]-->
<!--[if lte IE 6]><table><tr><td><![endif]-->
    <ul>
    <li><a href="#">dropdown menu</a></li>
    <li class="sub"><a href="#">dropdown menu<!--[if IE 7]><!--></a><!--<![endif]-->
    <!--[if lte IE 6]><table><tr><td><![endif]-->
        <ul>

            <li><a href="#">dropdown menu</a></li>
            <li><a href="#">dropdown menu</a></li>
            <li class="sub"><a href="#">dropdown menu<!--[if IE 7]><!--></a><!--<![endif]-->
            <!--[if lte IE 6]><table><tr><td><![endif]-->
                <ul>
                    <li><a href="#">dropdown menu1</a></li>
                    <li class="sub"><a href="#">dropdown menu2<!--[if IE 7]><!--></a><!--<![endif]-->

                    <!--[if lte IE 6]><table><tr><td><![endif]-->
                        <ul>
                            <li><a href="#">dropdown menu11</a></li>
                            <li><a href="#">dropdown menu22</a></li>
                            <li><a href="#">dropdown menu33</a></li>
                            <li><a href="#">dropdown menu44</a></li>
                            <li><a href="#">dropdown menu55</a></li>

                        </ul>
                    <!--[if lte IE 6]></td></tr></table></a><![endif]-->
                    </li>
                    <li><a href="#">dropdown menu</a></li>
                    <li><a href="#">dropdown menu</a></li>
                </ul>
            <!--[if lte IE 6]></td></tr></table></a><![endif]-->
            </li>

        </ul>
    <!--[if lte IE 6]></td></tr></table></a><![endif]-->
    </li>
    <li><a href="#">dropdown menu</a></li>
    </ul>
<!--[if lte IE 6]></td></tr></table></a><![endif]-->
    </li>
<li><a href="#">dropdown menu</a></li>
<li><a href="#">dropdown menu</a></li>

<li><a href="#">dropdown menu</a></li>

</ul>
</div>[/code]

页: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.