css3与html5实现响应式导航菜单(导航栏)效果分享
css3与html5实现响应式导航菜单(导航栏)效果分享
发布时间:2016-12-27 来源:查字典编辑
摘要:此方法可以应用到有特别多的链接菜单项目中,特别在移动项目中,它可以将所有菜单转换成一个按钮式的下拉菜单。HTML示例中有一个导航菜单的htm...

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

HTML

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

<ul>

<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

首先我们要给菜单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;

}

}

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新 Div+Css教程学习
热门 Div+Css教程学习
网页设计子分类