关于CSS样式的那些事_导航条菜单讲解
最近开始忙着开自己的个人博客了,自己的前端确实是渣渣。没办法,一步步来,从慕课网上慢慢学着先。
首先带来的是一个导航栏的设计:
垂直导航栏的设计:
直接上代码:
<!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/html; charset=utf-8" />
<title>导航菜单</title>
<style>
*{margin:0; padding:0; font-size:14px;}
ul{list-style:none;width:100px;}
a{text-decoration:none;line-height:30px;width:100px;background-color:#ccc;margin-bottom:1px;text-indent:10px;display:block;}
a:hover{background-color:#F30;color:#FFFS;}
</style>
</head>
<body> <ul class="nav">
<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> </body>
</html>
在这里搭建菜单使用的是无序列表,即使用的是ul加上li两个标签实现的。
<ul class="nav">
<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>
上面的代码没有使用css的时候还是非常丑的,在这里给添加上css样式:
<style>
*{margin:; padding:; font-size:14px;}
ul{list-style:none;width:100px;}
a{text-decoration:none;line-height:30px;width:100px;background-color:#ccc;margin-bottom:1px;text-indent:10px;display:block;}
a:hover{background-color:#F30;color:#FFFS;}
</style>
这里解释一下CSS的作用和由来:
首先是第二行的一个样式清空和字体预设。首先是接受了扫盲的教育——》margin是表示盒子模型中的外边距,padding是表示盒子模型的内边距。font-size是对文本字体的一个预设。
第三行首先list-style是将默认样式前边的那个点给去掉了,默认样式和老师说起来一样,有点想书的一个目录,看起来有时候确实不咋的哈。导航栏的目录暂时预设为100px。
第四行是将a标签设置为一个块,将它自己的display属性更改为block(块属性),目的是后边对a标签添加悬浮样式的一个方便。第一个是清空超链接的下划线默认样式,height是a标签的高度,同时bottom给了一个像素的目的是将这一块的背景给分开,给读者一个不是连在一块的感觉。在这里使用了text-indent属性而不是padding-left的属性是因为,当使用了padding-left的时候,整体的盒子是向右边扩展了像素的,需要后边自己手动调整,很是麻烦。但是通过text-indent进行一个定位,就不存在这个问题,效果一样。
第五行就是给自己的a标签添加一个悬浮效果了,当鼠标移上去的时候,目录的背景和字体同时改变自己的颜色的特效。
慕课网课程链接:(点击这里):http://www.imooc.com/video/42/0
水平导航栏
想想刚刚看完垂直导航栏,那么水平导航栏的原理也是差不多咯,答案是确实的!
来来来,先上代码:
<!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/html; charset=utf-8" />
<title>导航菜单</title>
<style>
*{margin:; padding:; font-size:14px;}
ul{list-style:none;}
li{float:left;}
a{text-decoration:none;line-height:30px;width:100px;background-color:#ccc;margin-bottom:1px;text-align:center;display:block;}
a:hover{background-color:#F30;color:#FFFS;}
</style>
</head>
<body> <ul class="nav">
<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> </body>
</html>
水平导航栏
两个代码的区别在那里呢?这个是完完全全由css样式来决定的,让我们看看这次的css有那些不同:
<style>
*{margin:; padding:; font-size:14px;}
ul{list-style:none;}
li{float:left;}
a{text-decoration:none;line-height:30px;width:100px;background-color:#ccc;margin-bottom:1px;text-align:center;display:block;}
a:hover{background-color:#F30;color:#FFFS;}
</style>
首先变化的是将ul中的100px像素的宽度限制给取消了,这样子给了目录浮动的横向空间。
然后是给我们的li的标签添加了一个左浮动的效果。
当然,打开浏览器一看,这个时候已经是水平导航栏了,确实是挺快的!
不过还是有些小问题的,我们将以前的字体左移动效果给去掉了,然后给添加上居中的效果(text-align:center)这样子就变得好看多了,棒棒哒
慕课网视频链接:(点击这里)http://www.imooc.com/video/66/0
说完垂直目录和水平目录,好像目录的事情就到此为止了。的确,一般这两种目录就够用了,还有其他的一些特殊的目录我们也都是通过调整它的css样式来实现的。
当然,下边我们谈论的一个主题是如何给自己的博客导航栏添加一个背景,先上图吧,给大家看看一个效果。(点击这里):http://www.zhangjie.site/demo/demo1.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>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>导航菜单</title>
<style type="text/css">
*{margin:0; padding:0; font-size:14px;}
a{color:#333;text-decoration:none}
.nav{list-style:none; height:30px; border-bottom:10px solid #F60; margin-top:20px; padding-left:50px;}
.nav li{float:left}
.nav li a{display:block; height:30px;text-align:center; line-height:30px; width:120px; background:url(http://img.mukewang.com/53846438000168f901200060.jpg); margin-left:1px;}
.nav li a.on, .nav li a:hover{ background-position:0 -30px; color:#fff;}
</style> </head>
<body> <ul class="nav">
<li><a class="on" href="#">首 页</a></li>
<li><a href="#">新闻快讯</a></li>
<li><a href="#">产品展示</a></li>
<li><a href="#">售后服务</a></li>
<li><a href="#">联系我们</a></li>
</ul> </body>
</html>
首先讲解一下原理:在这里采用的方式是给自己的网页进行一个贴图效果,一张圆角矩形的图片,上边是背景色白色,下边是聚焦后的橘黄色,通过上下平移的方式来实现不同背景的效果。

那么我们开始分析html代码。首先看看,html是完全相同的,都只是css样式发生了改变。贴上css看看
<style type="text/css">
*{margin:0; padding:0; font-size:14px;}
a{color:#333;text-decoration:none}
.nav{list-style:none; height:30px; border-bottom:10px solid #F60; margin-top:20px; padding-left:50px;}
.nav li{float:left}
.nav li a{display:block; height:30px;text-align:center; line-height:30px; width:120px; background:url(http://img.mukewang.com/53846438000168f901200060.jpg); margin-left:1px;}
.nav li a.on, .nav li a:hover{ background-position:0 -30px; color:#fff;}
</style>
表示自己最开始也是没有弄懂,没有写出相同的效果,只能直接贴上教程的源码给大家一同来讨论了。
我们可以看见,默认格式是一样的,改变的第一个是将目录进行了一个向下的平移20px,这样子可以使得目录和那根橘黄色的线条( border-bottom:10px solid #F60;第四行的线条)融合一块。然后就是上贴图了:第六行代码中是直接的将line height和width给固定去了,为的就是将显示的范围固定。在第七行代码中,将聚焦后的效果写出来了:
(background-position:0 -30px;背景向上平移了30个像素)
这样子,其中使用了一个on,可以给自己的首页添加一个默认选中的效果,同时当鼠标滑动到其他目录上的时候也会有一个变色的效果。
(纠正上边的一个错误,就是html中要给自己的首页项添加上一个on的class属性,并非是一点都不用改变的哈)
那么现在我们的贴图效果就已经是实现了!
慕课网视频链接:(点击这里)http://www.imooc.com/video/67
说完给导航栏贴图,这里在讲一个向上平移导航栏的默认选中效果。上图:点击这里:http://www.zhangjie.site/demo/demo2.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>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>导航菜单</title>
<style type="text/css">
*{margin:0; padding:0; font-size:14px;}
a{color:#333;text-decoration:none}
.nav{list-style:none; height:30px; border-bottom:10px solid #F60; margin-top:20px; padding-left:50px;}
.nav li{float:left}
.nav li a{display:block; height:30px;text-align:center; line-height:30px; width:120px; margin-left:1px;}
.nav li a.on, .nav li a:hover{ background-color:#f60; color:#fff;height:70px;margin-top:-30px;line-height:70px;}
</style> </head>
<body> <ul class="nav">
<li><a class="on" href="#">首 页</a></li>
<li><a href="#">新闻快讯</a></li>
<li><a href="#">产品展示</a></li>
<li><a href="#">售后服务</a></li>
<li><a href="#">联系我们</a></li>
</ul> </body>
</html>
实现代码
那么这里的css就是先去掉先前贴图效果,然后给选中效果加上向上平移属性,当然,这个时候有点小问题,所以又有一个margin-top有40px的效果。最后给文章一个居中就好了,也就是这个代码:
<style type="text/css">
*{margin:0; padding:0; font-size:14px;}
a{color:#333;text-decoration:none}
.nav{list-style:none; height:30px; border-bottom:10px solid #F60; margin-top:20px; padding-left:50px;}
.nav li{float:left}
.nav li a{display:block; height:30px;text-align:center; line-height:30px; width:120px; margin-left:1px;}
.nav li a.on, .nav li a:hover{ background-color:#f60; color:#fff;height:70px;margin-top:-30px;line-height:70px;}
</style>
代码见第七行,效果完美实现。
慕课网视频:点击这里http://www.imooc.com/video/68
目录栏通过javascript产生水平移动的效果:
<!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/html; charset=utf-8" />
<title>导航菜单</title>
<style type="text/css">
* { margin: 0; padding: 0; font-size: 14px; }
a { color: #333; text-decoration: none }
ul { list-style: none; height: 30px; border-bottom: 5px solid #F60; margin-top: 20px; padding-left: 50px; }
ul li { float: left }
ul li a { display: block; height: 30px; text-align: center; line-height: 30px; width:120px; background: #efefef; margin-left: 1px; }
a.on, a:hover { background: #F60; color: #fff; }
</style>
<script>
window.onload=function(){
var aA=document.getElementsByTagName('a');
for(var i=0; i<aA.length; i++){
aA[i].onmouseover=function(){
var This=this;
clearInterval(This.time);
This.time=setInterval(function(){
This.style.width=This.offsetWidth+8+"px";
if(This.offsetWidth>=160)
clearInterval(This.time);
},30)
}
aA[i].onmouseout=function(){
clearInterval(this.time);
var This=this;
this.time=setInterval(function(){
This.style.width=This.offsetWidth-8+"px";
if(This.offsetWidth<=120){
This.style.width='120px';
clearInterval(This.time);
}
},30)
}
}
}
</script>
</head>
<body>
<ul>
<li><a class="on" href="#">首 页</a></li>
<li><a href="#">新闻快讯</a></li>
<li><a href="#">产品展示</a></li>
<li><a href="#">售后服务</a></li>
<li><a href="#">联系我们</a></li>
</ul>
</body>
</html>
效果展示图:点击这里:http://www.zhangjie.site/demo/demo3.html
慕课网链接:点击这里:http://www.imooc.com/video/93
关于CSS样式的那些事_导航条菜单讲解的更多相关文章
- amazeui学习笔记--css(常用组件10)--导航条Topbar
amazeui学习笔记--css(常用组件10)--导航条Topbar 一.总结 1. 导航条:就是页面最顶端的导航条:在容器上添加 .am-topbar class,然后按照示例组织所需内容.< ...
- css制作漂亮彩带导航条菜单
点击这里查看效果:http://keleyi.com/keleyi/phtml/divcss/17.htm 效果图: 以下是源代码: <!DOCTYPE html PUBLIC "-/ ...
- Jetpack Compose学习(7)——MD样式架构组件Scaffold及导航底部菜单
Jetpack Compose学习(7)--MD样式架构组件Scaffold及导航底部菜单 | Stars-One的杂货小窝 Compose给我们提供了一个Material Design样式的首页组件 ...
- 利用js和JQuery定义一个导航条菜单
利用js和JQuery定义一个导航条 效果: 一.html代码: <div class="Maintenance"> <div class="Title ...
- 一、HTML和CSS基础--网页布局--实践--导航条菜单的制作
案例一:导航菜单的制作 垂直菜单
- 强制改变css样式优先级
.list{ left:20px!important; } css !important作用是提高指定CSS样式规则的应用优先权. !important是CSS1就定义的语法,作用是提高指定样式规则的 ...
- Bootstrap每天必学之导航条
http://www.jb51.net/article/75534.htm Bootstrap每天必学之导航条,本文向大家讲解了多种多样的导航条,以及导航条中元素的实现方法,感兴趣的小伙伴们可以参考一 ...
- 玩转Bootstrap(基础) -- (6.导航条基础)
1.导航条样例 <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" ...
- bootstrap导航条组件
一.导航条模板(官方文档) <nav class="navbar navbar-default"> <div class="container-flui ...
随机推荐
- 如何通过fpmmm和zabbix来监控客户机上MariaDB数据库运行情况
首先在客户机安装MariaDB和zabbix,参考上一篇 安装fpmmm的过程主要参考[1]. 安装fpmmm的依赖 shell> yum install php-cli php-process ...
- C++ 部分知识点
1,return语句返回函数的返回值,就是函数的类型,函数只能有唯一的返回值: return可以停止函数,并将控制返回主调函数: 一个函数可以有许多return语句,执行到哪个return语句,哪个起 ...
- HDU 1269 迷宫城堡(DFS)
迷宫城堡 Problem Description 为了训练小希的方向感,Gardon建立了一座大城堡,里面有N个房间(N<=10000)和M条通道(M<=100000),每个通道都是单向的 ...
- Python 自动给数字前面补0
为了排版方便或者是输出文件命名整洁,通常需要给数字前面补0来做统一.Python中有一个zfill函数用来给字符串前面补0,非常有用,这个zfill看起来也就是zero fill的缩写吧,看一下如何使 ...
- iOS APP中Versions和build版本区别
version是app发布时用户看到的版本号. build的为了方便开发者多次提交binary, 比如被苹果reject后. 例如,第一次提交version和build都是1.0. 假如审核没过,那么 ...
- [6278009]使用Visual Stuido Code 编写Markdown
使用Visual Stuido Code 编写Markdown void main() { printf("Hello world!"); } void main() { Cons ...
- matcaffe的blob维度顺序
matcaffe是caffe的matlab接口.caffe本身是C++写的,其blob的维度顺序是[N,C,H,W],N表示batchSize,C表示channel数目,H表示feature map的 ...
- 斗地主 (NOIP2015 Day1 T3)
斗地主 张牌,因为它可以连在K后, 总体思路为 先出炸弹和四带二 再出三带一 再把对牌和单牌出完 记录并更新Answer,后枚举顺子,并继续向下搜索. 注意:弄明白题意,题目描述不太清楚....另外, ...
- UIDatePicker 时间滚动表
UIDatePicker *datapicker; //时间滚动表 datapicker = [[UIDatePicker alloc]initWithFrame:CGRectMake(50, 200 ...
- 提取出图像中感兴趣的部分,cvSetImageRoi,Rect
在做人脸检测的时候,需要从摄像头拍摄视频中把检测到的人脸区域提取出来,网上找了很多博客,发现多数都是在用cvSetImageRoi函数,该函数声明如下:void cvSetImageROI(IplIm ...