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图片旋转特效(360/60/-360度)
Oct 10 HTML / CSS
使用CSS3的appearance属性改变元素的外观的方法
Dec 12 HTML / CSS
CSS3弹性盒模型开发笔记(二)
Apr 26 HTML / CSS
CSS3制作圆角图片和椭圆形图片
Jul 08 HTML / CSS
浅谈CSS3动画的回调处理
Jul 21 HTML / CSS
详解rem 适配布局
Oct 31 HTML / CSS
前端canvas动画如何转成mp4视频的方法
Jun 17 HTML / CSS
一张图片能隐含千言万语之隐藏你的程序代码
Dec 13 HTML / CSS
用canvas实现图片滤镜效果附演示
Nov 05 HTML / CSS
深入探究HTML5的History API
Jul 09 HTML / CSS
HTML5 canvas基本绘图之图形组合
Jun 27 HTML / CSS
Html5 Geolocation获取地理位置信息实例
Dec 09 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
PHP实现补齐关闭的HTML标签
2016/03/22 PHP
PHP url的pathinfo模式加载不同控制器的简单实现
2016/08/12 PHP
PHP实现RSA签名生成订单功能【支付宝示例】
2017/06/06 PHP
PHPUnit测试私有属性和方法功能示例
2018/06/12 PHP
javascript编程起步(第一课)
2007/01/10 Javascript
js中格式化日期时间型数据函数代码
2010/11/08 Javascript
Javascript编程之继承实例汇总
2015/11/28 Javascript
jquery判断输入密码两次是否相等
2020/04/22 Javascript
很全面的JavaScript常用功能汇总集合
2016/01/22 Javascript
VUEJS实战之利用laypage插件实现分页(3)
2016/06/13 Javascript
Thinkjs3新手入门之如何使用静态资源目录
2017/12/06 Javascript
微信小程序图片轮播组件gallery slider使用方法详解
2018/01/31 Javascript
Vue.js 踩坑记之双向绑定
2018/05/03 Javascript
微信小程序收藏功能的实现代码
2018/06/12 Javascript
原生js实现form表单序列化的方法
2018/08/02 Javascript
Vue项目数据动态过滤实践及实现思路
2018/09/11 Javascript
微信小程序模板template简单用法示例
2018/12/04 Javascript
react native 仿微信聊天室实例代码
2019/09/17 Javascript
python监控网站运行异常并发送邮件的方法
2015/03/13 Python
详解Python nose单元测试框架的安装与使用
2017/12/20 Python
python中实现字符串翻转的方法
2018/07/11 Python
详解Python list和numpy array的存储和读取方法
2019/11/06 Python
pycharm修改file type方式
2019/11/19 Python
Win系统PyQt5安装和使用教程
2019/12/25 Python
Python面向对象程序设计之私有变量,私有方法原理与用法分析
2020/03/23 Python
Python 实现3种回归模型(Linear Regression,Lasso,Ridge)的示例
2020/10/15 Python
《影子》教学反思
2014/02/21 职场文书
成龙霸王洗发水广告词
2014/03/14 职场文书
民主评议政风行风整改方案
2014/09/17 职场文书
民主生活会对照检查材料(统计局)
2014/09/21 职场文书
旷工检讨书大全
2015/08/15 职场文书
教师个人教学反思
2016/02/23 职场文书
班级元旦晚会开幕词
2016/03/04 职场文书
Python数据分析之pandas函数详解
2021/04/21 Python
Python如何解决secure_filename对中文不支持问题
2021/07/16 Python
解析探秘fescar分布式事务实现原理
2022/02/28 Java/Android