如何制作纵向二级菜单

html-css09

如何制作纵向二级菜单,第1张

使用CSS两步实现横向或纵向二级菜单

首先我们写一个<li>格式的代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<title>无标题页</title>

</head>

<body>

<ul>

<li>1</li>

<li>2</li>

<li>3</li>

<li>4</li>

</ul>

</body>

</html>

从上面的代码我们得到如下的效果:

清除它的默认样式即把ul的list-style:none,这样就显示如下(图二):

增加二级子节点

<ul>

<li>

<a href ="#">1</a>

<ul>

<li><a href="#">11</a>

</li>

<li><a href="#">11</a>

</li>

</ul>

</li>

<li><a href ="#">2</a>

<ul>

<li><a href="#">22</a>

</li>

<li><a href="">22</a></li>

</ul></li>

<li><a href="">3</a>

<ul>

<li><a href="">33</a></li>

<li><a href="">33</a></li>

<li><a href="">33</a></li>

</ul>

</li>

<li><a href="">4</a>

<ul>

<li><a href="">44</a></li>

<li><a href="">44</a></li>

<li><a href="">44</a></li>

</ul>

</li>

</ul>

得到如下效果:

我们可以看到二级菜单很正常的显示了,所以我们要使其不可见:设置子无序列表为不可见:ul li ul

{

display:none

}

效果出来了,但是是图一的效果,不是我们需要的,在做如下设置:

ul li:hover ul

{

display:block

}

上面的代码的意思是:当鼠标滑过一级菜单的li时,二级菜单ul显示为块级元素;可是运行程序发现当鼠标真的划过一级菜单时,二级菜单会把一级菜单给挤开了,这个时候我们应该想到一个属性position:absolute就是说把二级菜单设置为绝对定位;这样二级菜单将脱离原来文档流,不再占据空间,因此也不会一级菜单内容挤开了,这样以来一个超级简陋的纵向二级菜单就算是完成了。

我们把全部的代码都显示出现:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<title></title>

<style>

ul

{

list-style:none

}

ul li ul

{

display:none

position:absolute

}

ul li:hover ul

{

display:block

}

</style>

</head>

<body>

<div id="nav">

<ul>

<li>

<a href ="#">1</a>

<ul>

<li><a href="#">11</a>

</li>

<li><a href="#">11</a>

</li>

</ul>

</li>

<li><a href ="#">2</a>

<ul>

<li><a href="#">22</a>

</li>

<li><a href="">22</a></li>

</ul></li>

<li><a href="">3</a>

<ul>

<li><a href="">33</a></li>

<li><a href="">33</a></li>

<li><a href="">33</a></li>

</ul>

</li>

<li><a href="">4</a>

<ul>

<li><a href="">44</a></li>

<li><a href="">44</a></li>

<li><a href="">44</a></li>

</ul>

</li>

</ul>

</div>

</body>

</html>

大家可以运行看看,基本的效果实现的.但是不好看,感觉有点粗糙,下面对代码进行美化.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<title>无标题页</title>

<style type ="text/css" >

a

{

text-decoration:none

}

#nav

{

width:100px

border:1px solid #ccc

border-bottom:none

}

ul

{

list-style:none

margin:0

padding:0

}

ul li

{

background:silver

padding:0 8px

height:30px

border-bottom:1px solid #ccc

position:relative

}

ul li ul

{

display:none

position:absolute

width:100px

left:100px

border-bottom:none

}

ul li:hover ul

{

display:block

}

</style>

</head>

<body>

<div id="nav">

<ul>

<li>

<a href ="#">1</a>

<ul>

<li><a href="#">11</a>

</li>

<li><a href="#">11</a>

</li>

</ul>

</li>

<li><a href ="#">2</a>

<ul>

<li><a href="#">22</a>

</li>

<li><a href="">22</a></li>

</ul></li>

<li><a href="">3</a>

<ul>

<li><a href="">33</a></li>

<li><a href="">33</a></li>

<li><a href="">33</a></li>

</ul>

</li>

<li><a href="">4</a>

<ul>

<li><a href="">44</a></li>

<li><a href="">44</a></li>

<li><a href="">44</a></li>

</ul>

</li>

</ul>

</div>

</body>

</html>

所谓的美化,无非就是一个高度,背景颜色等进行设置.这样就得到了可以使用的菜单.

你给的那个网站使用了jQuery框架来实现的,下面给你一个简单的例子(前提是你必须先要引用jQuery框架):

<script>

window.onload = function()

{

//说明:当鼠标移动到li标签上的时候,显示当前标签下ul标签,反之隐藏

$('li').mouseover(function(){

$(this).find('ul').show()//显示当前li下面的ul

}).mouseout(function(){

$(this).find('ul').hide()//隐藏

})

}

</script>

<div>

<ul>

<li>

一级栏目1

<ul style="display:none">

<li>二级栏目1</li>

<li>二级栏目2</li>

<li>二级栏目3</li>

</ul>

</li>

<li>一级栏目2</li>

<li>一级栏目3</li>

<ul>

</div>