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 相关文章推荐
HTML5和CSS3让网页设计提升到下一个高度
Aug 14 HTML / CSS
CSS3制作缩略图的详细过程
Jul 08 HTML / CSS
详解CSS透明opacity和IE各版本透明度滤镜filter的最准确用法
Dec 20 HTML / CSS
html5 canvas-2.用canvas制作一个猜字母的小游戏
Jan 07 HTML / CSS
深入解析HTML5使用SVG图像时的viewBox属性用法
Sep 02 HTML / CSS
详解移动端HTML5页面端去掉input输入框的白色背景和边框(兼容Android和ios)
Dec 15 HTML / CSS
canvas 下载二维码和图片加水印的方法
Mar 21 HTML / CSS
canvas学习和滤镜实现代码
Aug 22 HTML / CSS
如何在Canvas中添加事件的方法示例
May 21 HTML / CSS
使用layui实现左侧菜单栏及动态操作tab项的方法
Nov 10 HTML / CSS
bootstrapv4轮播图去除两侧阴影及线框的方法
Feb 15 HTML / CSS
css让页脚保持在底部位置的四种方案
Jul 23 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
深入了解php4(2)--重访过去
2006/10/09 PHP
PHP 小心urldecode引发的SQL注入漏洞
2011/10/27 PHP
smarty的section嵌套循环用法示例
2016/05/28 PHP
详解Yii2 定制表单输入字段的标签和样式
2017/01/04 PHP
PHP批量删除jQuery操作
2017/07/23 PHP
可自己添加html的伪弹出框实现代码
2013/09/08 Javascript
jQuery的each终止或跳过示例代码
2013/12/12 Javascript
JS获取iframe中marginHeight和marginWidth属性的方法
2015/04/01 Javascript
javascript使用 concat 方法对数组进行合并的方法
2016/09/08 Javascript
浅析JS中对函数function的理解(基础篇)
2016/10/14 Javascript
jQuery简单实现的HTML页面文本框模糊匹配查询功能完整示例
2018/05/09 jQuery
使用vue根据状态添加列表数据和删除列表数据的实例
2018/09/29 Javascript
JS实现的新闻列表自动滚动效果示例
2019/01/30 Javascript
可能被忽略的一些JavaScript数组方法细节
2019/02/28 Javascript
简单两步使用node发送qq邮件的方法
2019/03/01 Javascript
微信小程序 swiper 组件遇到的问题及解决方法
2019/05/26 Javascript
vue eslint简要配置教程详解
2019/07/26 Javascript
JS精确判断数据类型代码实例
2019/12/18 Javascript
在vue中created、mounted等方法使用小结
2020/07/21 Javascript
Python中__init__和__new__的区别详解
2014/07/09 Python
跟老齐学Python之不要红头文件(2)
2014/09/28 Python
Python的装饰器用法学习笔记
2016/06/24 Python
Python中单例模式总结
2018/02/20 Python
python实现图书管理系统
2018/03/12 Python
Python将二维列表list的数据输出(TXT,Excel)
2020/04/23 Python
Python bisect模块原理及常见实例
2020/06/17 Python
python中rb含义理解
2020/06/18 Python
python3让print输出不换行的方法
2020/08/24 Python
如何一键升级Python所有包
2020/11/05 Python
深入浅析HTML5中的SVG
2015/11/27 HTML / CSS
高级文秘工作总结的自我评价
2013/09/28 职场文书
授权委托书格式模板
2014/04/03 职场文书
公司经营目标责任书
2015/01/29 职场文书
寻衅滋事罪辩护词
2015/05/21 职场文书
导游词之山东红叶谷
2019/10/31 职场文书
Django利用AJAX技术实现博文实时搜索
2021/05/06 Python