文档章节

从实战中学前端:顶部导航

有力量的神经病
 有力量的神经病
发布于 2016/12/07 22:21
字数 1420
阅读 22
收藏 2

本篇是从实战中学前端的第二篇,上一篇用css实现了几个还不错的按钮,这一篇来实现顶部导航,其中包含二级导航的实现。

首先我们来看看将要实现的导航效果图: 顶部导航效果图

接下来我们要实现的导航功能:

  • 活动导航下滑横线
  • 鼠标悬停于菜单上显示下滑背景
  • 支持二级导航

提示:在第一篇中,我们讲了css的三种用法,这里我们使用第三种即把css放在一个单独的文件中

实现思路:观察导航条我们发现导航分为:大背景、一级菜单、菜单下划线、二级菜单块、二级菜单及部分构成,一级菜单每个菜单是水平一行,而二级菜单是竖行。

这里我们用<ul>标签来实现一个个菜单,<ul>称之为无序列表标签,常用标签之一,其每个子项用<li>标签实现。

html5中新增了<nav>标签,即英文单词navgator的缩写,表示导航,这里我们把nav作为最外层,下面是基本的代码:

<nav>
	<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>
	</ul>
</nav>

效果如图:

输入图片说明

这不是我们想要的效果,下面我们写css代码,并给相应的html代码加上类属性,具体功能看注释:

/*class选择器,导航条类*/
.navbar{
	width: 100%;/*宽度100%*/
	z-index: 1000;
	margin: 0;
	padding-top: 5px;
	height: 60px;
}
/*导航条默认样式,便于以后根据需要更改导航条样式*/
.navbar-default {
	background: #323232;
	color: white;
	font-size: 18px;
}
/*导航正文样式*/
.navbar-content{
	position: relative;/*对菜单进行定位,使用相对模式*/
}
.navbar-content ul,li{
	list-style: none;/*屏蔽每个li之间的小圆点(小圆点也可以为其他样式,如方块)*/
}
.navbar-content li{
	padding: 5px;
	float: left;/*使Li左浮动,即实现水平,因为ul默认是竖直的*/
}
.navbar-default>.navbar-content {
	background: #323232;
	color: white;/*文字颜色*/
	font-size: 18px;/*文本大小*/
}



<nav class="navbar navbar-default">
	<ul class="navbar-content">
		<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>
</nav>

效果图:

输入图片说明

接下来我们改变文本样式和增加绿色下划线效果:


.navbar {
	width: 100%;
	z-index: 1000;
	margin: 0;
	padding-top: 5px;
	min-height: 60px;
	}
.navbar-content {
	display: block;
}
.navbar-header {
	display: none;
}
.navbar-default {
	background: #323232;
}
.navbar>ul>li {
	float: left;
	width: 130px;
	text-align: center;/*文字居中*/
	list-style: none;
}
.navbar>ul>li>a {
	padding: 17px 0;
	color: rgba(255, 255, 255, 0.8);/*rgba颜色模式,分别代表红绿蓝和透明度值*/
	border-bottom: 5px solid rgba(255, 255, 255, 0);
	text-decoration: none;/*链接取消下划线*/
}
.navbar>ul>li>a:hover,
.navbar>ul>.active>a {
	border-bottom: 5px solid rgba(50, 205, 50, 1);/*底部边框,即那条绿色边框*/
	color: rgba(255, 255, 255, 1);
	width: 130px;
}
.navbar>ul>.active>a {
	padding: 17px;
}

效果图:

输入图片说明

接下来实现二级菜单: 思路:所谓二级菜单不过就是正常情况下隐藏,当鼠标悬浮或滑过时显示,这里可以用css的display属性:display:block显示,display:none;就会隐藏。二级菜单我们仍然放在ul中,只是这次li不需要浮动,让它自然显示。

/*二级导航核心部分*/
.navbar>ul>.dropdown-menu>ul {
        display: none;/*使二级菜单隐藏*/
	position: relative;
	top: 25px;
	box-shadow: 0px 8px 16px 0px rgba(0, 0, 0, 0.2);
	border: 1px solid #e7e7e7;
	text-align: center;
}
.dropdown-menu>ul>li {
	padding: 12px;
}
.navbar>ul>.dropdown-menu:hover>a {
	border-bottom: 5px solid rgba(50, 205, 50, 1);
	color: rgba(255, 255, 255, 1);
	padding: 17px 15px;
}

.navbar>ul>.dropdown-menu:hover>ul {
	display: block;/*鼠标悬浮即hover属性时显示*/
}

.dropdown-menu>ul a {
	color: #000000;
	font-weight: 500;
	text-decoration: none;
}

.dropdown-menu>ul a:hover {
	color: orangered;
	font-weight: 800;
}

<!--html代码-->
<nav class="navbar navbar-default">
	<ul class="navbar-content">
	<li class="active"><a href="#">首页</a></li>
	<li class="dropdown-menu">
		<a href="#">新闻类别</a>
		<ul>
			<li><a href="#">创业故事</a></li>
			<li><a href="#">今日热点</a></li>
		</ul>
		</li>
		<li><a href="#">技术达人</a></li>
		<li><a href="#">关于我们</a></li>
		<li><a href="#">加入我们</a></li>
	</ul>
</nav>

效果图

输入图片说明

从图中看,这里的实现还有点问题,本文就不去实现了,留给读者自己去实现。

PS:写文真的是一件痛苦的事,本文整体思路感觉有点混乱,上了一天班也只有晚上有空,在第一篇有网友评论鼓励我继续写下去成为一个系列,感谢鼓励。我会努力,纠正我这种懒惰不想写文的思想。

附全部代码:

注:这里我为了方便就放在一个文件里边,建议将css放在一个单独的css文件。

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>顶部导航</title>
		<style>
			.navbar {
				width: 100%;
				z-index: 1000;
				margin: 0;
				padding-top: 5px;
				min-height: 60px;
			}
			.navbar-content {
				display: block;
			}
			.navbar-header {
				display: none;
			}
			.navbar-default {
				background: #323232;
			}
			.navbar>ul>li {
				float: left;
				width: 130px;
				text-align: center;
				list-style: none;
			}
			.navbar li {
				list-style: none;
			}
			.navbar>ul>li>a {
				padding: 17px 0;
				color: rgba(255, 255, 255, 0.8);
				border-bottom: 5px solid rgba(255, 255, 255, 0);
				text-decoration: none;
			}
			.navbar>ul>li>a:hover,
			.navbar>ul>.active>a {
				border-bottom: 5px solid rgba(50, 205, 50, 1);
				color: rgba(255, 255, 255, 1);
				width: 130px;
			}
			.navbar>ul>.active>a {
				padding: 17px;
			}
			.navbar>ul>.dropdown-menu>ul {
				display: none;
				position: relative;
				top: 25px;
				box-shadow: 0px 8px 16px 0px rgba(0, 0, 0, 0.2);
				border: 1px solid #e7e7e7;
				text-align: center;
			}
			.dropdown-menu>ul>li {
				padding: 12px;
			}
			.navbar>ul>.dropdown-menu:hover>a {
				border-bottom: 5px solid rgba(50, 205, 50, 1);
				color: rgba(255, 255, 255, 1);
				padding: 17px 15px;
			}
			.navbar>ul>.dropdown-menu:hover>ul {
				display: block;
			}
			.dropdown-menu>ul a {
				color: #000000;
				font-weight: 500;
				text-decoration: none;
			}
			.dropdown-menu>ul a:hover {
				color: orangered;
				font-weight: 800;
			}
		</style>
	</head>
	<body>
		<nav class="navbar navbar-default">
			<ul class="navbar-content">
				<li class="active"><a href="#">首页</a></li>
				<li class="dropdown-menu">
					<a href="#">新闻类别</a>
					<ul>
						<li><a href="#">创业故事</a></li>
						<li><a href="#">今日热点</a></li>
					</ul>
				</li>
				<li><a href="#">技术达人</a></li>
				<li><a href="#">关于我们</a></li>
				<li><a href="#">加入我们</a></li>
			</ul>
		</nav>
	</body>
</html>

© 著作权归作者所有

共有 人打赏支持
有力量的神经病
粉丝 5
博文 21
码字总数 10798
作品 0
成都
程序员
私信 提问
【备忘】2017小凡老师泰牛Web基础班项目实战玩完整版-美团网项目

2017小凡老师泰牛Web基础班项目实战玩完整版-美团网项目 1.对于前端开发人员来说,最核心的技能是什么? 2.前端基础,学的怎么样,能否独立开发一些项目? 3.对css和js掌握的怎么样?了解、熟...

qq_38155396
2017/06/30
0
0
Flask开发微电影网站(三)

页面完成后的最终布局 电影视频网站首页面 会员登录页面 会员注册页面 点击退出和会员按钮,直接进入会员登录页面 视频播放页面 可以看到,页面共同的部分是顶部导航和底部导航 所以我们可以...

任平生78
05/22
0
0
微信小程序教学第四章第三节(含视频):小程序中级实战教程:详情-功能完善

详情 - 功能完善 本文配套视频地址: v.qq.com/x/page/f055… 开始前请把 分支中的 目录导入微信开发工具 这一节中,我们把详情的其他功能完善起来:下一篇、 分享、 返回列表。 Step 1. 增加...

iKcamp
2017/11/03
0
0
HTML5开发实战之网易微博 【转】

HTML5在国内外越来越受到互联网开发团队的青睐。国外,谷歌兴致勃勃地开发Chrome Web Store,微软发布了支持使用HTML5技术开发的“Irish Spring”主题网站,诺基亚斥巨资购得并打造的NOKIA M...

曾沙
2012/06/19
0
8
MoMoCMS 企业建站 V3.1 版本更新

更新的地方 1、webkit和IE在前端兼容 2、页面加入侧栏定制功能,每一个页面可以选择不同的侧栏模块 3、页面加入关键字和描述 4、顶部导航、友情链接、底部导航在后台控制,并集中在一个控制菜...

大前端工程师
2014/07/22
2.3K
20

没有更多内容

加载失败,请刷新页面

加载更多

Hashtable 为什么不叫 HashTable?

前几天在写《HashMap 和 Hashtable 的 6 个区别》这篇文章的时候,差点把 Hashtable 写成了 HashTable,后来看源码证实了是:Hashtable,小写的 "t"able,不符合驼峰命名规则。 什么是驼峰命...

Java技术栈
13分钟前
1
0
Position属性四个值:static、fixed、absolute和relative的区别和用法

静下心来慢慢读,读完一定会有所收获的 static(静态定位):默认值。没有定位,元素出现在正常的流中(忽略 top, bottom, left, right 或者 z-index 声明)。 relative(相对定位):生成相...

简心
14分钟前
1
0
Confluence 6 为一个空间应用一个主题

主题允许你对 Confluence 的外表和显示进行自定义。你的 Confluence 空间管理员可以到 The Atlassian Marketplace 上下载主题。 一旦一个主题被安装到 Confluence 后,这个主题可以应用到全站...

honeymose
15分钟前
0
0
python利用os.system执行多条系统命令

先看代码(正确代码): def UpdateCNSubAllInd(): os.system("cd spiders && scrapy runspider CN_UpdateSubIndex.py")def UpdateSSESubAllInd(): os.system("cd spiders && sc......

fang_faye
25分钟前
0
0
容器技术系列汇总

docker docker - 在centos7和windows10安装 docker - 镜像加速器 docker - 构建一个简单的docker镜像 docker - 调试Dockerfile docker - 常用命令 docker - Dockerfile常用指令 docker - doc......

细肉云吞
31分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部