如何用CSS3美化菜单

快速提示:为每个菜单项添加图像,并在鼠标悬停时滑出。

查看DEMO    下载源码

在这个叫做“提示与技巧”的分类中,我们会介绍一些关于Web开发和Web设计的简短有趣的方法。在今天的小提示中,我们会展示如何为菜单添加一个优美的悬停效果。主要的想法就是当鼠标悬停在菜单项时右侧滑出一个图片。

每个菜单项(在本例中是一个无序列表项)会包含一个含有两个 span 的锚点和一个图像:

1
2
3
4
5
6
7
8
9
10
<ul class= "mh-menu" >
     <li>
         <a href= "#" >
             <span>Art Director</span>
             <span>Henry James</span>
         </a>
         <img src= "images/1.jpg" alt= "image01" />
     </li>
     <!-- ... -->
</ul>

我们会把 .mh-menu li a 设置成 display:block 并将背景设置为 rgba(255,255,255, 0.8) ,当鼠标悬停到列表项时,我们再把背景色设置成浅蓝色 rgba(225,239,240, 0.4)

1
2
3
.mh-menu li:hover a{
     background: rgba(225,239,240, 0.4);
}

第二个 span 在鼠标悬停时也会改变背景色,但我们希望不同的列表项能够显示不同的颜色,因此我们首先添加一个颜色渐变,然后使用 nth-child 选择器获取元素(有用的:nth-child秘方  ——译者注。):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
.mh-menu li a span:nth-child(2){
     /*...*/
     transition: color 0.2s linear;
}
.mh-menu li:nth-child(1):hover span:nth-child(2){
     color: #ae3637;
}
.mh-menu li:nth-child(2):hover span:nth-child(2){
     color: #c3d243;
}
.mh-menu li:nth-child(3):hover span:nth-child(2){
     color: #d38439;
}
.mh-menu li:nth-child(4):hover span:nth-child(2){
     color: #8e7463;
}

由于图像要滑到右侧,因此,首先它的 left 值必须是 0px,同时我们也为它的透明度添加一个渐变,它会从初始值 0 渐变到 1 :

1
2
3
4
5
6
7
8
9
10
11
12
.mh-menu li img{
     position: absolute;
     z-index: 1;
     left: 0px;
     top: 0px;
     opacity: 0;
     transition: left 0.4s ease- in -out, opacity 0.6s ease- in -out;
}
.mh-menu li:hover img{
     left: 300px;
     opacity: 1;
}

瞧,这样我们就有了一个很棒的滑出的效果了!

注意要确保锚点的 z-index 值比图像高一点儿,这样图像才会在锚点的下方滑出而不是在它的上面。

另外,我们还可以使背景色在悬浮的时候不透明,例如完全是白色(demo 2),或者为每个子元素设置不同的颜色(demo 3)。

本文中的演示由  Bartosz Kosowski  (CC BY-NC 3.0) 提供。

查看DEMO    下载源码

原文地址:http://tympanus.net/codrops/2012/01/22/how-to-spice-up-your-menu-with-css3/

转载于:https://www.cnblogs.com/jiguang/archive/2012/02/05/2339293.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值