CSS3实现动画相册

桃扇骨 2022-02-26 04:46 431阅读 0赞

See the Pen ainmated image hover effects by haiqing wang (@whqet) onCodePen.

1.效果解析

CSS3实现的动画相册,很棒的鼠标hover效果,效果如下图所示

20130505220725063

2.难点分析

难点1,圆形遮罩

难点2,:after实现提示文本

难点3,css3实现动画

3.实现步骤

a.html架构

  1. <ul class="nav">
  2. <li><a href="#" title="Swing"><img src="imgs/1.jpg" alt="" /></a></li>
  3. <li><a href="#" title="Dive"><img src="imgs/2.jpg" alt="" /></a></li>
  4. <li><a href="#" title="Destroy"><img src="imgs/3.jpg" alt="" /></a></li>
  5. <li><a href="#" title="Ride"><img src="imgs/4.jpg" alt="" /></a></li>
  6. <li><a href="#" title="Kick"><img src="imgs/5.jpg" alt="" /></a></li>
  7. <li><a href="#" title="About"><img src="imgs/6.jpg" alt="" /></a></li>
  8. <li><a href="#" title="Why"><img src="imgs/7.jpg" alt="" /></a></li>
  9. <li><a href="#" title="Weess"><img src="imgs/8.jpg" alt="" /></a></li>
  10. </ul>

使用无序列表来布局图像,图像的提示文本使用:after读取a的title属性。

b.整体设置

  1. *{
  2. padding: 0;
  3. margin: 0;
  4. border: none;
  5. }
  6. body{
  7. background-color: #333;
  8. }
  9. .nav{
  10. width: 980px;
  11. margin: 100px auto;
  12. list-style: none;
  13. }

c.li实现圆角

  1. .nav li{
  2. float: left;
  3. width: 200px;
  4. height: 200px;
  5. overflow:hidden;
  6. border-radius: 50%;
  7. border:6px solid #fff;
  8. box-shadow: 2px 2px 0 0 rgba(0,0,0,.5);
  9. margin: 12px;
  10. position: relative;
  11. transition:all .5s ease;
  12. }
  13. .nav li img{
  14. position: absolute;
  15. left: 0;
  16. top: 0;
  17. transition:all .5s ease;
  18. }

d. :after实现提示文本

  1. .nav li a{
  2. text-decoration: none;
  3. font-size: 18px;
  4. font-weight: bold;
  5. color: #fff;
  6. }
  7. .nav li a:after{
  8. content: attr(title);
  9. position: absolute;
  10. bottom: -20px;
  11. left: 80px;
  12. transition:all .5s ease;
  13. }

e. 动画效果

  1. .nav li:hover{
  2. border:6px solid #333;
  3. box-shadow: 0px 0px 2px 0 rgba(0,0,0,.8);
  4. }
  5. .nav li:hover img{
  6. left: -80px;
  7. top: -80px;
  8. }
  9. .nav li:hover a:after{
  10. bottom: 20px;
  11. }

完工!

前端开发whqet制作,火狐浏览器适用,其他浏览器兼容请高手指点。

4.兼容修正

之前webkit浏览的兼容问题源于图像和提示文本设置了绝对定位,脱离了标准流。

修正如下。

  1. *{
  2. padding: 0;
  3. margin: 0;
  4. border: none;
  5. -webkit-backface-visibility: hidden;
  6. }
  7. body{
  8. background-color: #333;
  9. }
  10. .nav{
  11. width: 980px;
  12. margin: 100px auto;
  13. list-style: none;
  14. position: relative;
  15. z-index: 1;
  16. }
  17. .nav li{
  18. height: 200px;
  19. width: 200px;
  20. margin: 25px;
  21. float: left;
  22. overflow: hidden;
  23. border-radius: 50%;
  24. border:6px solid #fff;
  25. box-shadow: 2px 2px 0 0 rgba(0,0,0,.5);
  26. margin: 12px;
  27. transition:all 1s ease;
  28. }
  29. .nav li img{
  30. margin: -70px 0px 0px 0px; /*去除绝对定位,改为margin的方式*/
  31. transition:all 1s ease;
  32. }
  33. .nav li a{
  34. text-decoration: none;
  35. font-size: 18px;
  36. font-weight: bold;
  37. color: #fff;
  38. }
  39. .nav li a:before{
  40. content: attr(title);
  41. position: relative; /*改绝对定位为相对定位*/
  42. left: 80px;
  43. top: 200px;
  44. transition:all 1s ease;
  45. }
  46. .nav li:hover{
  47. border:6px solid #333;
  48. box-shadow: 0px 0px 2px 0 rgba(0,0,0,.8);
  49. }
  50. .nav li:hover img{
  51. margin-left: -150px;
  52. margin-top: -150px;
  53. cursor: pointer;
  54. }
  55. .nav li:hover a:before{
  56. top: 160px;
  57. }

OK!

发表评论

表情:
评论列表 (有 0 条评论,431人围观)

还没有评论,来说两句吧...

相关阅读