CSS如何实现网页导航栏置顶

html-css016

CSS如何实现网页导航栏置顶,第1张

1、在电脑上打开软件,新建一个html文件,在head部分,编写css样式, list-style-type: none是除掉导航前面默认带的点,li a,li a.active ,li a:hover:not(.active) 设置鼠标滑到导航栏的颜色变化。

2、在html页面body里面编写导航栏内容,可以看到是通过<ul><li><a href=""></a></li></ul>的格式来实现导航。

3、在浏览器中打开页面,可以看到已经制作成了一个比较美观的垂直导航栏。

4、将鼠标滑向垂直导航栏的列表项上,可以看到列表项颜色发生变化。

5、也可以制作成水平导航栏,overflow: hidden代码的意思是超出高度和宽度的部分自动隐藏,float: left使导航栏水平显示。

6、在浏览器中打开页面,可以看到制作出美观的水平导航栏,已经置顶了。

<!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>

<meta http-equiv="Content-Type" content="text/htmlcharset=utf-8" />

<title>仿菜单</title>

<style type="text/css">

body{font-size:14px}

ul{margin:0padding:0list-style:none}

a{text-decoration:nonecolor:#000}

#menu{position:absolutetop:0left:100pxwidth:780px}

#menu li{float:leftheight:34pxline-height:34px}

#menu li a{ display:blockfont-weight:boldbackground:url(link.gif) left toppadding-left:20px}

#menu span{display:blockbackground:url(link.gif) no-repeat right toppadding-right:20px}

#menu li a:hover{background:url(hover.gif) no-repeat left topcolor:#C30}

#menu li a:hover span{background:url(hover.gif) no-repeat right top}

#sub_menu {position:absolutetop:35pxfont-size:12pxline-height:2em}

#sub_menu #sub_2{margin-left:150px}

#sub_menu #sub_3{margin-left:250px}

#sub_menu #sub_4{margin-left:350px}

.dis { display:block}

.undis { display:none}

</style>

<script type="text/javascript" language="javascript">

<!--

function show(n){

//如果有N个标签,就将i<=N

for(var i=1i<=6i++){

document.getElementById('sub_'+i).className='undis'

}

document.getElementById('sub_'+n).className='dis'

}

-->

</script>

</head>

<!--急冲冲赶出来的,还没有什么时间去添加一些注析,你要是有什么不明白的,可以问我。其他的一些小细节,你再自己修改啦!-->

<body>

<div id="Nav">

<div id="menu">

<ul>

<li><a href="#" onmouseover="show(1)"><span>凯撒首页</span></a></li>

<li><a href="#" onmouseover="show(2)"><span>最新动态页</span></a></li>

<li><a href="#" onmouseover="show(3)"><span>产品及预定中心页</span></a></li>

<li><a href="#" onmouseover="show(4)"><span>帮助及查询中心页</span></a></li>

<li><a href="#" onmouseover="show(5)"><span>会员俱乐部页</span></a></li>

<li><a href="#" onmouseover="show(6)"><span>凯撒论坛页</span></a></li>

</ul>

</div>

<div id="sub_menu">

<div id="sub_1" class="undis" ></div>

<div id="sub_2" class="undis" ><a href="#">聚焦凯撒</a>| <a href="#">国内新闻</a>| <a href="#">国际新闻</a></div>

<div id="sub_3" class="undis" ><a href="#">聚焦凯撒</a>| <a href="#">国内新闻</a>| <a href="#">国际新闻</a>聚焦凯撒</a>| <a href="#">国内新闻</a></div>

<div id="sub_4" class="undis" ><a href="#">预定流程</a>| <a href="#">订单查询</a>| <a href="#">在线答疑</a><a href="#">签证服务</a>| <a href="#">出游宝典</a>| <a href="#">网站地图</a></div>

<div id="sub_5" class="undis" ></div>

<div id="sub_6" class="undis" ></div>

</div>

</div>

</body>

</html>

有两种思路。解决

第一种:通过判断当前的页面的分类ID和每个菜单的ID进行对比,哪个菜单的ID等于当前页面的分类ID。。那么给其添加一个CLASS让其样式发生变化。。这种方法需要PHP ASP .NET等WEB服务器脚本辅助实现。

第二种:就是通过纯CSS实现。。简单点说就是给每个菜单进点击进入的页面的body元素各添加一个class.然后通过CSS层叠样式表定义其页面击后的效果。示例如下

如果是产品介绍的页面那么body元素添加一个样式<body class=“product”>

介绍页面呢给body元素再添加另一个样式<body class='about'>

其他页面以此类推

然后在样式表中这样定义点击后的页面的样式

/*定义菜单的初始样式*/

.menu li a{display:blockwidth:80pxheight:30pxbackground:greenfloat:left}

/*定义当前页面对应的菜单样式*/

body.product .menu li a,body.about .menu li a{display:blockwidth:100%height:100%background:red}

这样你进入产品介绍 和 公司介绍页面之后对应的CSS生效对应的菜单背景颜色会变红。。点进去变红。其他菜单还是初始样式。。

其实第二种比较麻烦。因为分别定义body加class那部分。。或者你用服务器脚本动态生成lclass 。也行。。但相比第一种还是麻烦了许多。

如果对您有帮助。还望采纳。谢谢。