css3与html5实现响应式导航菜单(导航栏)效果分享


Posted in HTML / CSS onFebruary 12, 2014

此方法可以应用到有特别多的链接菜单项目中,特别在移动项目中,它可以将所有菜单转换成一个按钮式的下拉菜单。

HTML

示例中有一个导航菜单的html结构,元素<nav>用来定位导航菜单,.current表示当前活动的导航项。
 

复制代码
代码如下:

<ul>
<li class="current"><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

首先我们要给菜单nav相对定位,我们在.nav li中使用display: inline-block代替float:left,这样一来我们可以使用text-align 来对nav菜单进行左中右对齐设置。
 
 

复制代码
代码如下:

.nav {
position: relative;
margin: 20px 0;
}
.nav ul {
margin: 0;
padding: 0;
}
.nav li {
margin: 0 5px 10px 0;
padding: 0;
list-style: none;
display: inline-block;
}
.nav a {
padding: 3px 12px;
text-decoration: none;
color: #999;
line-height: 100%;
}
.nav a:hover {
color: #d0d0d0;
}
.nav .current a {
background: #999;
color: #fff;
border-radius: 5px;
}
使用text-align对菜单进行右对齐和居中对齐。

/* right nav */
.nav.right ul {
text-align: right;
}

/* center nav */
.nav.center ul {
text-align: center;
}

接下来我们来做响应式设计,我们使用CSS3的media query来实现。当浏览器窗口宽度小于600px时,我们把<nav>设置成relative相对定位,把<ul>设置成absolute绝对定位,并且display:none隐藏所有li元素,这个时候导航菜单变成一个固定大小的按钮。当鼠标滑向nav元素时,菜单下拉展开,设置所有li的样式display: block,具体请看代码:
 
 

复制代码
代码如下:

@media screen and (max-width: 600px) {
.nav {
position: relative;
min-height: 40px;
}
.nav ul {
width: 180px;
padding: 5px 0;
position: absolute;
top: 0;
left: 0;
border: solid 1px #aaa;
background: #fff url(images/menu.png) no-repeat 10px 11px;
border-radius: 5px;
box-shadow: 0 1px 2px rgba(0,0,0,.3);
}
.nav li {
display: none; /* hide all items */
margin: 0;
}
.nav .current {
display: block; /* show only currentitem */
}
.nav a {
display: block;
padding: 5px 5px 5px 32px;
text-align: left;
}
.nav .current a {
background: none;
color: #666;
}

/* on nav hover */
.nav ul:hover {
background-image: none;
}
.nav ul:hover li {
display: block;
margin: 0 0 5px;
}
.nav ul:hover .current {
background: url(images/check.png) no-repeat 10px 7px;
}

/* right nav */
.nav.right ul {
left: auto;
right: 0;
}

/* center nav */
.nav.center ul {
left: 50%;
margin-left: -90px;
}
}

HTML / CSS 相关文章推荐
css3过渡_动力节点Java学院整理
Jul 11 HTML / CSS
CSS3简单实现照片墙
Dec 12 HTML / CSS
使用 css3 实现圆形进度条的示例
Jul 05 HTML / CSS
css3实现小箭头各种图形效果
Jul 08 HTML / CSS
html5 input元素新特性_动力节点Java学院整理
Jul 06 HTML / CSS
浅谈three.js中的needsUpdate的应用
Nov 12 HTML / CSS
HTML5 Canvas中绘制椭圆的4种方法
Apr 24 HTML / CSS
HTML5新增加标签和功能概述
Sep 05 HTML / CSS
基于HTML5 Canvas的3D动态Chart图表的示例
Nov 02 HTML / CSS
详解webapp页面滚动卡顿的解决办法
Dec 26 HTML / CSS
浅谈amaze-ui中datepicker和datetimepicker注意的几点
Aug 21 HTML / CSS
HTML页面中使两个div并排显示的实现
May 15 HTML / CSS
推荐10个CSS3 制作的创意下拉菜单效果
Feb 11 #HTML / CSS
纯css3显示隐藏一个div特效的具体实现
Feb 10 #HTML / CSS
css3让div随鼠标移动而抖动起来
Feb 10 #HTML / CSS
css3 给页面加个半圆形导航条主要利用旋转和倾斜样式
Feb 10 #HTML / CSS
css3的@media属性实现页面响应式布局示例代码
Feb 10 #HTML / CSS
CSS3控制HTML元素动画效果
Feb 08 #HTML / CSS
使用css3匹配手机屏幕横竖状态
Jan 27 #HTML / CSS
You might like
菜鸟修复电子管记
2021/03/02 无线电
PHP5中的this,self和parent关键字详解教程
2007/03/19 PHP
PHP运行模式的深入理解
2013/06/03 PHP
windows7配置Nginx+php+mysql的详细教程
2016/09/04 PHP
PHP实现根据数组的值进行分组的方法
2017/04/20 PHP
Laravel重定向,a链接跳转,控制器跳转示例
2019/10/22 PHP
用jscript实现新建word文档
2007/06/15 Javascript
js调试系列 源码定位与调试[基础篇]
2014/06/18 Javascript
javascript中判断json的方法总结
2015/08/27 Javascript
Nodejs 发送Post请求功能(发短信验证码例子)
2017/02/09 NodeJs
浅谈mint-ui 填坑之路
2017/11/06 Javascript
详解各版本React路由的跳转的方法
2018/05/10 Javascript
vue 移动端适配方案详解
2018/11/15 Javascript
如何在微信小程序里面退出小程序的方法
2019/04/28 Javascript
微信小程序合法域名配置方法
2019/05/06 Javascript
小程序:授权、登录、session_key、unionId的详解
2019/05/15 Javascript
原生js添加一个或多个类名的方法分析
2019/07/30 Javascript
JS实现小米轮播图
2020/09/21 Javascript
[02:51]DOTA2英雄基础教程 艾欧
2014/01/13 DOTA
[02:07]2017国际邀请赛中国区预选赛直邀战队前瞻
2017/06/23 DOTA
[01:46]新英雄登场
2019/09/10 DOTA
[46:14]完美世界DOTA2联赛PWL S3 Magma vs INK ICE 第一场 12.11
2020/12/16 DOTA
跟老齐学Python之大话题小函数(1)
2014/10/10 Python
详解Django中的ifequal和ifnotequal标签使用
2015/07/16 Python
pandas.dataframe中根据条件获取元素所在的位置方法(索引)
2018/06/07 Python
在Sublime Editor中配置Python环境的详细教程
2020/05/03 Python
python输出结果刷新及进度条的实现操作
2020/07/13 Python
澳大利亚UGG工厂直销:Australian Ugg Boots
2017/10/14 全球购物
系统管理员的职责包括那些?管理的对象是什么?
2016/09/20 面试题
税务专业毕业生自荐信
2013/11/10 职场文书
英语简历自我评价
2014/01/26 职场文书
四年级科学教学反思
2014/02/10 职场文书
机关道德讲堂实施方案
2014/03/15 职场文书
企业文化口号
2014/06/12 职场文书
PHP中->和=>的意思
2021/03/31 PHP
在python中读取和写入CSV文件详情
2022/06/28 Python