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 相关文章推荐
让IE6支持css3,让 IE7、IE8 都支持CSS3
Oct 09 HTML / CSS
CSS3属性box-sizing使用指南
Dec 09 HTML / CSS
利用html5 canvas动态画饼状图的示例代码
Apr 02 HTML / CSS
HTML5实现分享到微信好友朋友圈QQ好友QQ空间微博二维码功能
Jan 03 HTML / CSS
html5+css3实现一款注册表单实例
Apr 17 HTML / CSS
html5定位并在百度地图上显示的示例
Apr 27 HTML / CSS
HTML5几个设计和修改的页面范例分享
Sep 29 HTML / CSS
Html5大文件断点续传实现方法
Dec 05 HTML / CSS
详解如何解决canvas图片getImageData,toDataURL跨域问题
Sep 17 HTML / CSS
Html5 Canvas动画基础碰撞检测的实现
Dec 06 HTML / CSS
Html5定位终极解决方案
Feb 05 HTML / CSS
div与span之间的区别与使用介绍
Dec 06 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自动判断字符集并转码的详解
2013/06/26 PHP
php采用curl访问域名返回405 method not allowed提示的解决方法
2014/06/26 PHP
利用PHP脚本在Linux下用md5函数加密字符串的方法
2015/06/29 PHP
PHP 的Opcache加速的使用方法
2017/12/29 PHP
php根据命令行参数生成配置文件详解
2019/03/15 PHP
javascript显式类型转换实例分析
2015/04/25 Javascript
Jquery中request和request.form和request.querystring的区别
2015/11/26 Javascript
js根据手机客户端浏览器类型,判断跳转官网/手机网站多个实例代码
2016/04/30 Javascript
AngularJS辅助库browserTrigger用法示例
2016/11/03 Javascript
jQuery自动或手动图片切换效果
2017/10/11 jQuery
vue 中directive功能的简单实现
2018/01/05 Javascript
浅谈VUE监听窗口变化事件的问题
2018/02/24 Javascript
Angular4集成ng2-file-upload的上传组件
2018/03/14 Javascript
vue中引用swiper轮播插件的教程详解
2018/08/16 Javascript
vue中使用百度脑图kityminder-core二次开发的实现
2019/09/26 Javascript
JQuery实现ul中添加LI和删除指定的Li元素功能完整示例
2019/10/16 jQuery
javascript代码实现简易计算器
2021/01/25 Javascript
Python学生成绩管理系统简洁版
2020/04/05 Python
python爬虫 使用真实浏览器打开网页的两种方法总结
2018/04/21 Python
python实现扫描日志关键字的示例
2018/04/28 Python
django静态文件加载的方法
2018/05/20 Python
python中import与from方法总结(推荐)
2019/03/21 Python
pyqt5实现登录界面的模板
2020/05/30 Python
Python面向对象程序设计类变量与成员变量、类方法与成员方法用法分析
2019/04/12 Python
django框架model orM使用字典作为参数,保存数据的方法分析
2019/06/24 Python
python+mysql实现个人论文管理系统
2019/10/25 Python
Selenium python时间控件输入问题解决方案
2020/07/22 Python
python用opencv 图像傅里叶变换
2021/01/04 Python
CSS3 border-image详解、应用及jQuery插件
2011/08/29 HTML / CSS
viagogo英国票务平台:演唱会、体育比赛、戏剧门票
2017/03/24 全球购物
阿迪达斯墨西哥官方网站:adidas墨西哥
2017/11/03 全球购物
汉森批发:Hansen Wholesale
2018/05/24 全球购物
校领导推荐信
2013/11/01 职场文书
法人代表证明书格式
2014/10/01 职场文书
公司租车协议书
2015/01/29 职场文书
Win10此设备不支持接收Miracast无法投影的解决方法
2022/07/07 数码科技