文档章节

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

有力量的神经病
 有力量的神经病
发布于 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
博文 16
码字总数 9692
作品 0
成都
程序员
【备忘】2017小凡老师泰牛Web基础班项目实战玩完整版-美团网项目

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

qq_38155396
2017/06/30
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、顶部导航、友情链接、底部导航在后台控制,并集中在一个控制菜...

YouYaX开发者
2014/07/22
2.2K
20
Bootstrap响应式前端框架笔记十——导航栏相关组件

Bootstrap响应式前端框架笔记十——导航栏相关组件 Bootstrap中提供的导航栏分为两种模式,使用nav-tabs类可以创建页卡模式的导航栏,使用nav-pills类可以创建胶囊模式的导航栏,示例如下: ...

珲少
2016/12/12
45
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

OSChina 周三乱弹 —— 我居然在 osc 里追剧

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @舆情风控小组 :分享王菲的单曲《笑忘书》 《笑忘书》- 王菲 手机党少年们想听歌,请使劲儿戳(这里) @艾尔库鲁斯:如果给大家一个选择的机...

小小编辑
46分钟前
70
8
rabbitMq的客户端使用笔记

1、channel声明队列的queueDeclare方法的参数解析 durable: 是否持久化, 队列的声明默认是存放到内存中的,如果rabbitmq重启会丢失,如果想重启之后还存在就要使队列持久化,保存到Erlang自...

DemonsI
54分钟前
0
0
“全新” 编程语言 Julia开箱体验

本文共 851字,阅读大约需要 3分钟 ! 概 述 Julia 是一个 “全新”的高性能动态编程语言,前两天迎来了其 1.0 正式版的重大更新。Julia集 Python、C、R、Ruby 之所长,感觉就像一种脚本语言...

CodeSheep
今天
12
0
软件自动化测试初学者忠告

题外话 测试入门 很多受过高等教育的大学生经常问要不要去报测试培训班来入门测试。 答案是否。 高等教育的合格毕业生要具备自学能力,如果你不具备自学能力,要好好地反省一下,为什么自己受...

python测试开发人工智能安全
今天
5
0
java并发备忘

不安全的“先检查后执行”,代码形式如下: if(条件满足){ //这里容易出现线程安全问题//doSomething}else{//doOther} 读取-修改-写入 原子操作:使用CAS技术,即首先从V中读取...

Funcy1122
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部