做导航栏的步骤及方法:
目标:
1.布局,画图
2.编写Html文档及代码
- 布局:一个div盒子里面放置一个无序列表
- 具体代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>导航栏</title>
<link rel="stylesheet" href="css/style.css">
</head>
<body>
<div id="menu">
<ul>
<li><a id="current" href="#">首页</a></li>
<li><a href="#">网页版式</a>
<ul>
<li><a href="#">自适应宽度</a></li>
<li><a href="#">固定宽度</a></li>
</ul>
</li>
<li><a href="#">web教程</a>
<ul>
<li><a href="#">新手入门</a></li>
<li><a href="#">视频教程</a></li>
<li><a href="#">常见问题</a></li>
</ul>
</li>
<li><a href="#">web实例</a></li>
<li><a href="#">常用代码</a></li>
</ul>
</div>
</body>
</html>
效果如下:
3.我们去对写的html利用css进行布局,修饰。
首先分析html代码,从body进行布局,然后从最大的div开始,首先是div的高度和宽度开始,
- css代码修饰:
body {
font-family: Verdana;
font-size: 12px;
line-height: 1.5;
}
#menu {
width: 435px;
height: 28px;
margin: 0 auto;
border-bottom: 3px solid #E10001;
background-color: #61BFFF;
}
解释:对该div上面的id选择器进行布局:这里给个背景就是为了方便观看,最后只需要去掉背景色就可以了,利用 margin: 0 auto;对该div进行水平居中,并且在div的下部给个边框 border-bottom: 3px solid #E10001;效果如下图:
4.接下来对该无序列表进行横行排列
并且去掉该无序列表前面的圆点:
css代码:
#menu ul {
list-style: none;
margin: 0;
padding: 0;
}
#menu ul li {
float: left;
}
解释:利用后代选择器进行修饰: list-style: none;去除圆点,float: left;使得无序列表横向。效果如下图:
5.利用后代选择器对a标签进行修饰:
css代码:
a {
color: #000;
text-decoration: none;
}
a:hover {
color: #F00;
}
#menu ul li a {
display: block;
width: 87px;
height: 28px;
line-height: 28px;
text-align: center;
font-size: 14px;
background: url("../images/bg.png") 0 -30px no-repeat;
}
#menu ul li a:hover {
background: url("../images/bg.png") 0 -56px no-repeat;
}
解释:
- 首先单纯的对a标签进行修饰: color: #000;给a标签的字体给个颜色, text-decoration: none;去掉a标签下面的下划线。
- 然后我们通过伪类选择器进行修饰,a:hover {color: #F00;}效果是使得鼠标点击的时候,字体的颜色为 #F00。
- 其次是通过后代选择器#menu ul li a对a标签进行布局, display: block;就是将元素显示为块级元素。这样使得a标签变成块元素。
- 然后给a标签设置大小:width: 87px;height: 28px;。对a标签里面的文字进行垂直和水平居中:text-align: center;line-height: 28px;。
- 设置字号:font-size: 14px;这个就是设置字号,,。。。。
- 通过复合属性background: url("…/images/bg.png") 0 -30px no-repeat;设置背景,通过0 -30px 对一张图片进行移动。(*注意不要习惯的去用background-image: ;**url("…/images/bg.png") 0 -30px no-repeat;*里面有多个属性值,必须的要去用符合属性,所以你不能一个人去拥有多个妻子,这是不正确的,不合法的)
6.最后一步:利用伪类选择器对鼠标悬停上面的样式做修饰。
#menu ul li a:hover {
background: url("../images/bg.png") 0 -56px no-repeat;
}
#menu ul li a#current {
background: url("../images/bg.png") 0 0 no-repeat;
font-weight: bold;
color: #fff;
}
解释:
- #menu ul li a:hover {
background: url("…/images/bg.png") 0 -56px no-repeat;}还是和前面的原理一样,通过移动,进行背景的设置。 - font-weight: bold;和color: #fff;对字体进行加粗,并且设置字体的颜色。
效果如下:
6.最后,去除背景色,完成了。。。。。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>导航栏</title>
<link rel="stylesheet" href="css/style.css">
</head>
<body>
<div id="menu">
<ul>
<li><a id="current" href="#">首页</a></li>
<li><a href="#">网页版式</a>
<ul>
<li><a href="#">自适应宽度</a></li>
<li><a href="#">固定宽度</a></li>
</ul>
</li>
<li><a href="#">web教程</a>
<ul>
<li><a href="#">新手入门</a></li>
<li><a href="#">视频教程</a></li>
<li><a href="#">常见问题</a></li>
</ul>
</li>
<li><a href="#">web实例</a></li>
<li><a href="#">常用代码</a></li>
</ul>
</div>
</body>
</html>
CSS
body {
font-family: Verdana;
font-size: 12px;
line-height: 1.5;
}
#menu {
width: 435px;
height: 28px;
margin: 0 auto;
border-bottom: 3px solid #E10001;
background-color: #61BFFF;
}
#menu ul {
list-style: none;
margin: 0;
padding: 0;
}
#menu ul li {
float: left;
}
#menu ul li a {
display: block;
width: 87px;
height: 28px;
line-height: 28px;
text-align: center;
background: url("../images/bg.png") 0 -30px no-repeat;
font-size: 14px;
}
a {
color: #000;
text-decoration: none;
}
a:hover {
color: #F00;
}
#menu ul li a:hover {
background: url("../images/bg.png") 0 -56px no-repeat;
}
#menu ul li a#current {
background: url("../images/bg.png") 0 0 no-repeat;
font-weight: bold;
color: #fff;
}
附加:
导航栏中的下拉菜单:
在上面的基础上继续添加:
1.首先编写html代码:
<ul>
<li><a id="current" href="#">首页</a></li>
<li><a href="#">网页版式</a>
<ul>
<li><a href="#">自适应宽度</a></li>
<li><a href="#">固定宽度</a></li>
</ul>
</li>
<li><a href="#">web教程</a>
<ul>
<li><a href="#">新手入门</a></li>
<li><a href="#">视频教程</a></li>
<li><a href="#">常见问题</a></li>
</ul>
</li>
<li><a href="#">web实例</a></li>
<li><a href="#">常用代码</a></li>
</ul>
注:在以前的无序列表ul中,继续进行嵌套。在没有css代码进行修饰的时候,布局就会打乱,我们后面进行布局就好了,先不要着急。。。。出现的效果如下:
2.用css将上面的html文档进行修饰
#menu ul li ul {
border: 1px solid #ccc;
display: none;
position: absolute;
}
#menu ul li ul li {
float: none;
width: 87px;
background: #eee;
margin: 0;
}
注: 对该列表进行一个固定定位 position: absolute;我们前面就已经有一个相对定位作为父容器了。并对该列表进行浮动,设置背景。效果如下:
3.对列表进行隐藏,伪类修饰
#menu ul li ul li a {
background: none;
}
#menu ul li ul li a:hover {
background: #333;
color: #fff;
}
#menu ul li:hover ul {
display: block;
}
#menu ul li.sfhover ul {
display: block;
}
注:利用伪类选择器:在鼠标点击时,使得下拉列表显示出来,并设置一个点击时,字体的颜色。
完整代码:
html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>导航栏</title>
<link rel="stylesheet" href="css/style.css">
</head>
<body>
<div id="menu">
<ul>
<li><a id="current" href="#">首页</a></li>
<li><a href="#">网页版式</a>
<ul>
<li><a href="#">自适应宽度</a></li>
<li><a href="#">固定宽度</a></li>
</ul>
</li>
<li><a href="#">web教程</a>
<ul>
<li><a href="#">新手入门</a></li>
<li><a href="#">视频教程</a></li>
<li><a href="#">常见问题</a></li>
</ul>
</li>
<li><a href="#">web实例</a></li>
<li><a href="#">常用代码</a></li>
</ul>
</div>
</body>
</html>
css:
body {
font-family: Verdana;
font-size: 12px;
line-height: 1.5;
}
a {
color: #000;
text-decoration: none;
}
a:hover {
color: white;
}
#menu {
width: 445px;
height: 28px;
margin: 0 auto;
border-bottom: 3px solid #E10001;
}
#menu ul {
list-style: none;
margin: 0px;
padding: 0px;
}
#menu ul li {
float: left;
margin-left: 2px;
}
#menu ul li a {
display: block;
width: 87px;
height: 28px;
line-height: 28px;
text-align: center;
background: url(../images/bg.png) 0 -30px no-repeat;
font-size: 14px;
}
#menu ul li a:hover {
background: url(../images/bg.png) 0 0 no-repeat;
}
#menu ul li a#current {
background: url(../images/bg.png) 0 0 no-repeat;
font-weight: bold;
color: #fff;
}
#menu ul li ul li {
float: none;
}
#menu ul li ul li a {
background: none;
}
#menu ul li ul {
border: 1px solid #ccc;
}
#menu ul li ul li {
float: none;
width: 85px;
background: #eee;
margin: 0;
}
#menu ul li ul li a {
background: none;
}
#menu ul li ul li a:hover {
background: #333;
color: #fff;
}
#menu ul li ul {
display: none;
border: 1px solid #ccc;
}
#menu ul li:hover ul {
display: block;
}
#menu ul li.sfhover ul {
display: block;
}
虽然简单,但是是为了记录整个过程,希望这个过程能够帮助你,代码不是固定的,但是分析过程是个人的一个建议,因为这个样式在好多导航栏都适用,只要学会,导航栏对你很简单,这也是个人自己的理解,希望能够帮到屏幕前你。。。。。。。。
效果如下:使劲戳我:[nav.xiaoyinwh.cn](http://nav.xiaoyinwh.cn)