之前在网上看到一些用纯CSS3实现的酷炫效果,以为实现起来比较困难,于是想看看具体是怎么实现的。

一、笑脸猫动画

实现效果如下:

这个实现起来确实比较麻烦,很多地方需要花时间,有耐心地调整。

1.先看下页面结构:

  1. <body>
  2. <div class="container">
  3. <!-- 脸 -->
  4. <div class="face">
  5. <!-- 头发 -->
  6. <div class="hair">
  7. <div></div>
  8. </div>
  9. <!-- 眼睛 -->
  10. <div class="eye-wrap">
  11. <div class="eye left">
  12. <div class="eye-circle">
  13. <div class="eye-core"></div>
  14. </div>
  15. <div class="eye-bottom"></div>
  16. <div class="eye-red"></div>
  17. </div>
  18. <div class="eye right">
  19. <div class="eye-circle">
  20. <div class="eye-core"></div>
  21. </div>
  22. <div class="eye-bottom"></div>
  23. <div class="eye-red"></div>
  24. </div>
  25. </div>
  26. <!-- 鼻子 -->
  27. <div class="nose">
  28. </div>
  29. <!-- 嘴巴 -->
  30. <div class="mouth-wrap">
  31. <!-- <div class="mouth-top"></div> -->
  32. <div class="mouth left"></div>
  33. <div class="mouth right"></div>
  34. </div>
  35. <!-- 胡子 -->
  36. <div class="mustache-wrap">
  37. <div class="mustache left">
  38. <div></div>
  39. <div></div>
  40. <div></div>
  41. <div></div>
  42. <div></div>
  43. </div>
  44. <div class="mustache right">
  45. <div></div>
  46. <div></div>
  47. <div></div>
  48. <div></div>
  49. <div></div>
  50. </div>
  51. </div>
  52. </div>
  53. <!-- 耳朵 -->
  54. <div class="ear-wrap">
  55. <div class="ear left"> </div>
  56. <div class="ear right"> </div>
  57. </div>
  58. </div>
  59. </body>

2.再看css部分

1.先看脸部face:

  1. .face {
  2. /* top: 100px; */
  3. left: 50%;
  4. top: 50%;
  5. position: absolute;
  6. width: 400px;
  7. height: 340px;
  8. margin-left: -200px;
  9. margin-top: -170px;
  10. border-radius: 50% 50% 35% 35%;
  11. border: 2px solid #000;
  12. z-index:;
  13. background: #f3f3f3;
  14. overflow: hidden;
  15. }

主要是要画出椭圆形,width和height设置的值要注意,脸比较宽。然后关键就是border-radius的设置了:

border-radius全部设置为0时,就是一个长方形,然后把它的四个角对应的设置下,就可以出现我们想要的效果。

2.接下来看耳朵的设置:

耳朵看起来其实也是一个椭圆,通过设置border-radius,调出想要的效果。不过需要被遮住一部分,所以在HTML结构中,我把它放在face的外面了。

  1. /* 耳朵 */
  2. .ear-wrap {
  3. position: absolute;
  4. width: 400px;
  5. top: 100px;
  6. left: 50%;
  7. margin-left: -200px;
  8. }
  9. .ear {
  10. width: 160px;
  11. height: 200px;
  12. position: absolute;
  13. top: -22px;
  14. left:;
  15. border: 2px solid #000;
  16. background: #f3f3f3;
  17. transform: rotate(-15deg);
  18. -ms-transform: rotate(-15deg);
  19. -moz-transform: rotate(-15deg);
  20. -webkit-transform: rotate(-15deg);
  21. -o-transform: rotate(-15deg);
  22. border-radius: 4% 80% 0% 50%;
  23. transition: all 1s;
  24. }
  25. .ear-wrap .right {
  26. left: auto;
  27. right:;
  28. border-radius: 80% 4% 50% 0%;
  29. transform: rotate(15deg);
  30. -ms-transform: rotate(15deg);
  31. -moz-transform: rotate(15deg);
  32. -webkit-transform: rotate(15deg);
  33. -o-transform: rotate(15deg);
  34. }

这是竖起来的耳朵,通过 transform:rotate(15deg); 旋转一点,耳朵就塌下来了。

3.然后是头发:

有了上述的实践,知道头发也好弄了,还是椭圆

  1. /* 头发 */
  2. .hair {
  3. position: absolute;
  4. width: 180px;
  5. height: 160px;
  6. left: 50%;
  7. margin-left: -90px;
  8. background: #8d8d8d;
  9. overflow: hidden;
  10. border-radius: 0 0 50% 50%;
  11. }
  12. .hair div {
  13. width: 90px;
  14. height: 160px;
  15. background: #f0ac6b;
  16. }

另外一个颜色,只需要在里面加一个子div,然后给不同的颜色就ok。

4.再来看眼睛:

眼睛比较复杂,拆分四个小部件,眼眶,眼珠,下眼线,眼红(笑起来露出的表情),对应的效果设置为:

  1. /* 眼睛 */
  2. .eye-wrap {
  3. position: absolute;
  4. width: 300px;
  5. height: 60px;
  6. top: 200px;
  7. left: 50%;
  8. margin-left: -150px;
  9. overflow: hidden;
  10. }
  11. .eye-wrap .eye {
  12. height: 100px;
  13. width: 100px;
  14. position: absolute;
  15. }
  16. .eye-wrap .eye-circle {
  17. width: 100px;
  18. height: 100px;
  19. border: 2px solid #000;
  20. overflow: hidden;
  21. position: absolute;
  22. border-radius: 50%;
  23. box-sizing: border-box;
  24. }
  25. .eye-wrap .eye-core {
  26. height: 100px;
  27. width: 30px;
  28. /* margin: 0 auto; */
  29. background: #000;
  30. position: absolute;
  31. left: 50%;
  32. margin-left: -15px;
  33. transition: all 1s;
  34. }
  35. .eye-wrap .eye-bottom {
  36. height: 50px;
  37. width: 160px;
  38. border-radius: 50%;
  39. position: absolute;
  40. /* background: #000; */
  41. margin-top: 50px;
  42. border-top: 2px solid #000;
  43. left: -30px;
  44. background: #f6f7f2;
  45. transition: all 1s;
  46. }
  47. .eye-wrap .right {
  48. left: auto;
  49. right: 0px;
  50. }
  51. .eye-red {
  52. position: absolute;
  53. height: 28px;
  54. width: 70px;
  55. background: red;
  56. top: 34px;
  57. /*top: 64px;*/
  58. left: 18px;
  59. border-radius: 50% 50% 50% 50%;
  60. background-image: -moz-radial-gradient( 50% 50%, rgba(253,214,240,0.8) 0%, rgba(253,224,244,0.8) 66%, rgba(253,234,247,0.8) 100%);
  61. background-image: -webkit-radial-gradient( 50% 50%, rgba(253,214,240,0.8) 0%, rgba(253,224,244,0.8) 66%, rgba(253,234,247,0.8) 100%);
  62. background-image: -ms-radial-gradient( 50% 50%, rgba(253,214,240,0.8) 0%, rgba(253,224,244,0.8) 66%, rgba(253,234,247,0.8) 100%);
  63. opacity: 0.0;
  64. /* transition: all 1.5s; */
  65. transition: all 0.1s ease-in 0.2s;
  66. }

注意左右两只眼睛效果大致是一样,只是位置不一样,这是我们只需要设置右边的 right: 0px; 就可以(因为设置了position: absolute)

5.鼻子:

  1. /* 鼻子 */
  2. .nose {
  3. width: 30px;
  4. height: 10px;
  5. /* background: #000; */
  6. border-bottom: 8px solid #000;
  7. border-radius: 0% 0% 50% 50%;
  8. top: 250px;
  9. left: 50%;
  10. margin-left: -15px;
  11. position: absolute;
  12. }

这里特别注意,height:10px; border-bottom: 8px solid #000;的设置,我本来想只用height:10px;然后设置border-radius,可是效果却长这样:

没有半圆的效果,是高度设置不够?变成18px,这货长这样,也不对,所以就加上border-bottom

6.嘴巴:

  1. /* 嘴巴 */
  2. .mouth-wrap {
  3. position: absolute;
  4. top: 268px;
  5. width: 100px;
  6. left: 50%;
  7. margin-left: -50px;
  8. height: 20px;
  9. overflow: hidden;
  10. }
  11. .mouth {
  12. width: 50px;
  13. height: 40px;
  14. border-bottom: 4px solid #000;
  15. border-right: 4px solid #000;
  16. border-radius: 0% 40% 50% 20%;
  17. margin-top: -26px;
  18. position: absolute;
  19. left:;
  20. transition: all 1s;
  21. }
  22. .mouth-wrap .right {
  23. border-bottom: 4px solid #000;
  24. border-right: none;
  25. border-left: 4px solid #000;
  26. border-radius: 40% 0% 20% 50%;
  27. position: absolute;
  28. left: auto;
  29. right:;
  30. }

算是比较简单,设置border-bottom,border-left或border-right就可以。嘴巴上翘的效果是改变其border-radius值

7.两边的胡子:

  1. /* 胡子 */
  2. .mustache-wrap {
  3. height: 80px;
  4. width: 380px;
  5. position: absolute;
  6. top: 190px;
  7. z-index:;
  8. left: 50%;
  9. margin-left: -190px;
  10. }
  11. .mustache > div:first-child {
  12. width: 30px;
  13. height: 10px;
  14. border-top: 6px #E53941 solid;
  15. border-radius: 30% 50% 20% 50%;
  16. transform: rotate(25deg);
  17. -ms-transform: rotate(25deg);
  18. -moz-transform: rotate(25deg);
  19. -webkit-transform: rotate(25deg);
  20. -o-transform: rotate(25deg);
  21. margin-left: 20px;
  22. }
  23. .mustache > div:nth-child(2) {
  24. width: 20px;
  25. height: 6px;
  26. background-color: #E53941;
  27. border-radius: 50% 50% 50% 50%;
  28. transform: rotate(25deg);
  29. -ms-transform: rotate(25deg);
  30. -moz-transform: rotate(25deg);
  31. -webkit-transform: rotate(25deg);
  32. -o-transform: rotate(25deg);
  33. margin-left: 20px;
  34. }
  35. .mustache > div:nth-child(3) {
  36. /*margin-top:10px;*/
  37. width: 32px;
  38. height: 10px;
  39. border-bottom: 4px #E53941 solid;
  40. border-radius: 30% 0% 50% 30%;
  41. transform: rotate(25deg);
  42. -ms-transform: rotate(25deg);
  43. -moz-transform: rotate(25deg);
  44. -webkit-transform: rotate(25deg);
  45. -o-transform: rotate(25deg);
  46. margin-left: 8px;
  47. }
  48. .mustache > div:nth-child(4) {
  49. margin-top: 20px;
  50. width: 26px;
  51. height: 20px;
  52. border-bottom: 4px #E53941 solid;
  53. border-radius: 30% 0% 50% 30%;
  54. transform: rotate(30deg);
  55. -ms-transform: rotate(30deg);
  56. -moz-transform: rotate(30deg);
  57. -webkit-transform: rotate(30deg);
  58. -o-transform: rotate(30deg);
  59. margin-left: 28px;
  60. }
  61. .mustache > div:last-child {
  62. width: 22px;
  63. height: 10px;
  64. border-bottom: 3px #E53941 solid;
  65. border-radius: 0% 0% 50% 50%;
  66. transform: rotate(-15deg);
  67. -ms-transform: rotate(-15deg);
  68. -moz-transform: rotate(-15deg);
  69. -webkit-transform: rotate(-15deg);
  70. -o-transform: rotate(-15deg);
  71. margin-left: 40px;
  72. margin-top: -8px;
  73. }
  74. /*右边胡子*/
  75. .mustache-wrap .right {
  76. transform: rotateY(180deg);
  77. -webkit-transform: rotateY(180deg); /* Safari 和 Chrome */
  78. -moz-transform: rotateY(180deg); /* Firefox */
  79. margin-top: -85px;
  80. }

虽然比较麻烦,不过也算是简单的图形,只需要把height,width,border-top,border-radius,transform: rotate这些值设置恰当就好。

8.鼠标hover样式:

  1. /*鼠标hover样式*/
  2. .container:hover .ear-wrap > div:first-child {
  3. /* left: -10px; */
  4. transform: rotate(0deg);
  5. -ms-transform: rotate(0deg);
  6. -moz-transform: rotate(0deg);
  7. -webkit-transform: rotate(0deg);
  8. -o-transform: rotate(0deg);
  9. border-radius: 4% 80% 0% 60%;
  10. transition: all 1s;
  11. /*transition: transform 1s,left 1s;*/
  12. }
  13.  
  14. .container:hover .ear-wrap > div:last-child {
  15. /* right: -10px; */
  16. transform: rotate(0deg);
  17. -ms-transform: rotate(0deg);
  18. -moz-transform: rotate(0deg);
  19. -webkit-transform: rotate(0deg);
  20. -o-transform: rotate(0deg);
  21. border-radius: 80% 4% 60% 0%;
  22. transition: all 1s;
  23. /*transition: transform 1s,right 1s;*/
  24. }
  25. .container:hover .eye-bottom {
  26. margin-top: 30px;
  27. transition: all 1s;
  28. }
  29. .container:hover .eye-red {
  30. opacity:;
  31. transition: all 2.5s;
  32. }
  33. .container:hover .mouth {
  34. border-radius: 50%;
  35. transition: all 1s;
  36. }
  37. .container:hover .eye-core {
  38. width: 40px;
  39. margin-left: -20px;
  40. transition: all 1s;
  41. }

耳朵,嘴巴,眼睛等地方需要修改transform,border-radius,width等值的属性。

3.线上效果及源码

线上效果:点我呀

源码:戳我看看

参考资料:再看看

二:立方体旋转

效果:

HTML部分:

  1. <body class="body">
  2. <div class="rect-wrap"> <!-- //舞台元素,设置perspective,让其子元素获得透视效果。 -->
  3. <div class="container"> <!-- //容器,设置transform-style: preserve-3d,让其子元素在3D空间呈现 -->
  4. <div class="top slide">1</div> <!-- //立方体的六个面 -->
  5. <div class="bottom slide">2</div>
  6. <div class="left slide">3</div>
  7. <div class="right slide">4</div>
  8. <div class="front slide">5</div>
  9. <div class="back slide">6</div>
  10. </div>
  11. </div>
  12. </body>

CSS:

  1. <style>
  2. .rect-wrap {
  3. position: relative;
  4. perspective: 2000px;
  5. }
  6. .container {
  7. width: 400px;
  8. height: 400px;
  9. transform-style: preserve-3d;
  10. transform-origin: 50% 50% 100px; /* //设置3d空间的原点在平面中心再向Z轴移动200px的位置 */
  11. /* left: 50%;
  12. margin-left: -200px; */
  13. top: 100px;
  14. }
  15. .slide {
  16. width: 200px;
  17. height: 200px;
  18. position: absolute;
  19. background: #000;
  20. line-height: 200px;
  21. text-align: center;
  22. color: #fff;
  23. font-size: 30px;
  24. font-weight: bold;
  25. }
  26. .top {
  27. left: 100px;
  28. top: -100px;
  29. transform: rotateX(-90deg);
  30. transform-origin: bottom;
  31. background: red;
  32. }
  33. .bottom {
  34. left: 100px;
  35. bottom: -100px;
  36. transform: rotateX(90deg);
  37. transform-origin: top;
  38. background: grey;
  39. }
  40. .left {
  41. left: -100px;
  42. bottom: 100px;
  43. transform: rotateY(90deg);
  44. transform-origin: right;
  45. background: green;
  46. }
  47. .right {
  48. left: 300px;
  49. bottom: 100px;
  50. transform: rotateY(-90deg);
  51. transform-origin: left;
  52. background: yellow;
  53. }
  54. .front {
  55. left: 100px;
  56. top: 100px;
  57. transform: translateZ(200px);
  58. background: black;
  59. }
  60. .back {
  61. left: 100px;
  62. top: 100px;
  63. transform: translateZ(0);;
  64. background: blue;
  65. }
  66. @keyframes rotate-frame {
  67. 0% {
  68. transform: rotateX(0deg) rotateY(0deg);
  69. }
  70. 10% {
  71. transform: rotateX(0deg) rotateY(180deg);
  72. }
  73. 20% {
  74. transform: rotateX(-180deg) rotateY(180deg);
  75. }
  76. 30% {
  77. transform: rotateX(-360deg) rotateY(180deg);
  78. }
  79. 40% {
  80. transform: rotateX(-360deg) rotateY(360deg);
  81. }
  82. 50% {
  83. transform: rotateX(-180deg) rotateY(360deg);
  84. }
  85. 60% {
  86. transform: rotateX(90deg) rotateY(180deg);
  87. }
  88. 70% {
  89. transform: rotateX(0) rotateY(180deg);
  90. }
  91. 80% {
  92. transform: rotateX(90deg) rotateY(90deg);
  93. }
  94. 90% {
  95. transform: rotateX(90deg) rotateY(0);
  96. }
  97. 100% {
  98. transform: rotateX(0) rotateY(0);
  99. }
  100. }
  101. .container{
  102. animation: rotate-frame 30s linear infinite;
  103. }
  104. </style>

1.3维空间图

电脑屏幕中心为原点,横向为X轴,纵向为Y轴,人脸的方向为Z轴;

translate(x,y)、translateX(x)、translateY(y)、translateZ(z)、translate3d(x,y,z):定义位置的移动距离

rotate(angle)、rotateX(a)、rotateY(a)、rotateZ(a)、rotate3d(x,y,z,angle):定义元素的旋转角度

2.perspective属性

perspective 属性定义 3D 元素距视图的距离,以像素计。该属性允许您改变 3D 元素查看 3D 元素的视图。

当为元素定义 perspective 属性时,其子元素会获得透视效果,而不是元素本身。

注释:perspective 属性只影响 3D 转换元素。

提示:请与 perspective-origin 属性一同使用该属性,这样您就能够改变 3D 元素的底部位置。

3.transform-style属性

  1. transform-style: flat|preserve-3d; 默认值为flat,表示子元素以2D平面呈现;perserve-3d表示子元素以3D平面呈现

4.transform-origin属性

transform-origin 属性允许您改变被转换元素的位置(可以理解为元素以哪个位置为旋转原点)。

语法:

  1. transform-origin: x-axis y-axis z-axis;

属性演示效果:戳我

默认值为: 50% 50% 0

5.线上效果及源码

线上效果:点我呀

源代码:戳我看看

参考资料:再看看

三、酷炫button

效果:(渣渣像素(/ □ \))

看下Twitter 做的 立体按钮效果,类似翻盖的动作是怎么做的。

HTML部分:

  1. <body class="body">
  2. <section>
  3. <div class="button">
  4. hello, welcome to the new world!
  5. </div>
  6. <div class="cover">
  7. <div class="innie"></div>
  8. <div class="spine"></div>
  9. <div class="outie"></div>
  10. </div>
  11. <div class="shadow"></div>
  12. </section>
  13. </body>

CSS部分:

  1. <style>
  2. section, section div {
  3. transition-duration: .6s;
  4. }
  5.  
  6. * { box-sizing: border-box; }
  7. html, body { height: 100%; }
  8. body {
  9. display: flex;
  10. flex-direction: column;
  11. justify-content: center;
  12. align-items: center;
  13. background-image: -webkit-radial-gradient(center top, circle farthest-corner, #FFFFFF 0%, #D8DFE9 100%);
  14. background-image: radial-gradient(circle farthest-corner at center top, #FFFFFF 0%, #D8DFE9 100%);
  15. overflow: hidden;
  16. }
  17.  
  18. section, .button { transition-timing-function: ease; }
  19.  
  20. section {
  21. display: inline-block;
  22. position: relative;
  23. padding: .375rem .375rem 0;
  24. height: 2.5rem;
  25. background: #A9ADB6;
  26. border-radius: .25rem;
  27. perspective:;
  28. box-shadow: 0 -1px 2px #fff, inset 0 1px 2px rgba(0,0,0,.2), inset 0 .25rem 1rem rgba(0,0,0,.1);
  29. }
  30.  
  31. .button { opacity:; }
  32.  
  33. .cover {
  34. position: absolute;
  35. top:; right:; bottom:; left:;
  36. transform-origin: center bottom;
  37. transform-style: preserve-3d;
  38. font: 1.25em/2 "icon";
  39. color: white;
  40. text-align: center;
  41. pointer-events: none;
  42. z-index:;
  43. }
  44.  
  45. .innie, .outie, .spine, .shadow { position: absolute; width: 100%; }
  46.  
  47. .innie, .outie {
  48. height: 100%;
  49. background-image: -webkit-linear-gradient(top, transparent 0%, rgba(0,0,0,.1) 100%);
  50. border-radius: .25rem;
  51. }
  52. .innie:after, .outie:after { content:"t"; }
  53.  
  54. .innie {
  55. background-color: #67E2FE;
  56. text-shadow: 0 -2px 4px rgba(0,0,0,.2);
  57. }
  58.  
  59. .spine {
  60. top: .25rem;
  61. background: #20C7F3;
  62. height: .25rem;
  63. transform: rotateX(90deg);
  64. transform-origin: center top;
  65. }
  66.  
  67. .shadow {
  68. top: 100%;
  69. left:;
  70. height: 3.5rem;
  71. transform-origin: center top;
  72. transform: rotateX(90deg);
  73. opacity:;
  74. z-index:;
  75. background-image: -webkit-linear-gradient(top, rgba(0,0,0,.6) 0%, transparent 100%);
  76. background-image: linear-gradient(to bottom, rgba(0,0,0,.6) 0%, transparent 100%);
  77. border-radius: .4rem;
  78. }
  79.  
  80. .outie {
  81. background-color: #2EC8FA;
  82. transform: translateZ(.25rem);
  83. text-shadow: 0 2px 4px rgba(0,0,0,.2);
  84. }
  85.  
  86. section:hover { background: #EBEFF2; }
  87. section:hover .button { opacity:; }
  88.  
  89. section:hover .cover, section:hover .innie, section:hover .spine, section:hover .outie, section:hover .spine { transition-timing-function: cubic-bezier(.2,.7,.1,1.1); }
  90.  
  91. section:hover .cover { transform: rotateX(-120deg); }
  92.  
  93. section:hover .innie { background-color: #3ADAFC; }
  94. section:hover .spine { background-color: #52B1E0; }
  95. section:hover .outie { background-color: #2174A0; color: rgba(255,255,255,0); }
  96.  
  97. section:hover .shadow {
  98. opacity:;
  99. transform: rotateX(45deg) scale(.95);
  100. }
  101. </style>

主要是一些效果的叠加,然后注意 transform-style: preserve-3d;设置3D效果。

线上效果及源码

线上效果:点我呀

源代码:戳我看看

参考:具体的没找到(/ □ \)

四:3D照片墙

效果:

HTML部分:

  1. <body class="body">
  2. <div class="photo-wrap"> <!-- 舞台 -->
  3. <div class="container"> <!-- 容器 -->
  4. <div class="img">我是中心</div>
  5. <div class="img img01">1</div>
  6. <div class="img img02">2</div>
  7. <div class="img img03">3</div>
  8. <div class="img img04">4</div>
  9. <div class="img img05">5</div>
  10. <div class="img img06">6</div>
  11. <div class="img img07">7</div>
  12. <div class="img img08">8</div>
  13. <div class="img img09">9</div>
  14. </div>
  15. </div>
  16. </body>

CSS部分:

  1. <style>
  2. @keyframes rotate-frame {
  3. 0% {
  4. transform: rotateX(-20deg) rotateY(0deg);
  5. }
  6. 10% {
  7. transform: rotateX(-20deg) rotateY(36deg);
  8. }
  9. 20% {
  10. transform: rotateX(-20deg) rotateY(72deg);
  11. }
  12. 30% {
  13. transform: rotateX(-20deg) rotateY(108deg);
  14. }
  15. 40% {
  16. transform: rotateX(-20deg) rotateY(144deg);
  17. }
  18. 50% {
  19. transform: rotateX(-20deg) rotateY(180deg);
  20. }
  21. 60% {
  22. transform: rotateX(-20deg) rotateY(216deg);
  23. }
  24. 70% {
  25. transform: rotateX(-20deg) rotateY(252deg);
  26. }
  27. 80% {
  28. transform: rotateX(-20deg) rotateY(288deg);
  29. }
  30. 90% {
  31. transform: rotateX(-20deg) rotateY(324deg);
  32. }
  33. 100% {
  34. transform: rotateX(-20deg) rotateY(360deg);
  35. }
  36.  
  37. }
  38. body {
  39. background: #f9f9f9;
  40. }
  41. .photo-wrap {
  42. perspective: 800px;
  43. width: 800px;
  44. }
  45. .container {
  46. width: 800px;
  47. height: 500px;
  48. margin: 0 auto;
  49. position: relative;
  50. transform-style: preserve-3d;
  51. transform:rotateX(-10deg);
  52. animation: rotate-frame 10s linear infinite;
  53. }
  54. .img {
  55. width: 200px;
  56. height: 118px;
  57. line-height: 118px;
  58. text-align: center;
  59. position: absolute;
  60. top: 160px;
  61. left: 300px;
  62. box-shadow: 0 0 20px rgba(0, 0, 0, 0.9) inset;
  63. -webkit-box-reflect:below 3px -webkit-linear-gradient(top,rgba(0,0,0,0) 40%,rgba(0,0,0,0.5));
  64. background: pink;
  65. background:-moz-linear-gradient(top, pink, rgba(0, 0, 255, 0.5));
  66. background:-webkit-gradient(linear, 0 0, 0 bottom, from(#ccccff), to(rgba(174, 221, 129, 0.5)));
  67. background:-o-linear-gradient(top, pink, rgba(0, 0, 255, 0.5));
  68. transform: rotateY(0deg);
  69. }
  70. .img01 {
  71. transform: rotateY(0deg) translateZ(300px);
  72. }
  73. .img02 {
  74. transform: rotateY(40deg) translateZ(300px);
  75. }
  76. .img03 {
  77. transform: rotateY(80deg) translateZ(300px);
  78. }
  79. .img04 {
  80. transform: rotateY(120deg) translateZ(300px);
  81. }
  82. .img05 {
  83. transform: rotateY(160deg) translateZ(300px);
  84. }
  85. .img06 {
  86. transform: rotateY(200deg) translateZ(300px);
  87. }
  88. .img07 {
  89. transform: rotateY(240deg) translateZ(300px);
  90. }
  91. .img08 {
  92. transform: rotateY(280deg) translateZ(300px);
  93. }
  94. .img09 {
  95. transform: rotateY(320deg) translateZ(300px);
  96. }
  97. </style>

1.倒影的实现

基本语法:

  1. img {
  2. -webkit-box-reflect: below;
  3. }

offset属性值定义图片和倒影影像之间的间距:

  1. img {
  2. -webkit-box-reflect: below 3px;
  3. }

给倒影增加消影效果:

  1. -webkit-box-reflect:below 3px -webkit-linear-gradient(top,rgba(0,0,0,0) 40%,rgba(0,0,0,0.5));

2.线上效果及源码

线上效果:点我呀

源代码:戳我看看

参考资料:来源1来源2

补充:没想到这篇文章不仅上了最多推荐,还上了编辑推荐,有点受宠若惊,自己感觉写得还不够用心,感谢大家的点赞,博主以后会继续努力。

纯CSS3实现的一些酷炫效果的更多相关文章

  1. css3带你实现酷炫效果

    css3 私有前缀 -webkit- chrome/safari等webkit内核浏览器 -moz- firfox -o- opera -ms- IE css3 盒子模型 box-sizing 值co ...

  2. 纯CSS3实现的图片滑块程序 效果非常酷

    原文:纯CSS3实现的图片滑块程序 效果非常酷 之前我们经常会看到很多利用jQuery实现的焦点图插件,种类太多了,今天我想给大家分享一款利用纯CSS3实现的图片滑块应用,完全是利用CSS3的相关特性 ...

  3. 推荐9款使用CSS3实现的超酷动画效果

    大家都知道,在网页制作时使用CSS技术,可以有效地对页面的布局.字体.颜色.背景和其它效果实现更加精确的控制.只要对相应的代码做一些简单的修改,就可以改变同一页面的不同部分,或者页数不同的网页的外观和 ...

  4. 微信小程序左右滑动切换图片酷炫效果

    开门见山,先上效果吧!感觉可以的用的上的再往下看. 心动吗?那就继续往下看! 先上页面结构吧,也就是wxml文件,其实可以理解成微信自己封装过的html,这个不多说了,不懂也没必要往下看了. < ...

  5. 微信小程序左右滑动切换图片酷炫效果(附效果)

    开门见山,先上效果吧!感觉可以的用的上的再往下看. 心动吗?那就继续往下看! 先上页面结构吧,也就是wxml文件,其实可以理解成微信自己封装过的html,这个不多说了,不懂也没必要往下看了. < ...

  6. 纯CSS3制作卡通场景汽车动画效果

    前言 今天分享一下我昨晚做的CSS3动画效果——卡通场景汽车动画.在接触CSS3动画之前,我之前实现一些简单的动画效果都是使用flash完成的.但是自从CSS3横空出世,在移动端对CSS3动画的运用越 ...

  7. 纯CSS3向右循环闪过效果

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8&quo ...

  8. 纯css3代码写下拉菜单效果

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  9. github上一些酷炫效果

    转自:http://blog.csdn.net/shulianghan/article/details/18046021 主要介绍那些不错个性化的View,包括ListView.ActionBar.M ...

随机推荐

  1. 结巴分词3--基于汉字成词能力的HMM模型识别未登录词

    作者:zhbzz2007 出处:http://www.cnblogs.com/zhbzz2007 欢迎转载,也请保留这段声明.谢谢! 1 算法简介 在 结巴分词2--基于前缀词典及动态规划实现分词 博 ...

  2. CRL快速开发框架系列教程三(更新数据)

    本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...

  3. JavaScript 常量定义

    相信同学们在看见这个标题的时候就一脸懵逼了,什么?JS能常量定义?别逗我好吗?确切的说,JS当中确实没有常量(ES6中好像有了常量定义的关键字),但是深入一下我们可以发现JS很多不为人知的性质,好好利 ...

  4. wordpress优化之结合prism.js为编辑器自定义按钮转化代码

    原文链接 http://ymblog.net/2016/07/24/wordpress-prism/ 继昨天花了一天一夜的时间匆匆写了主题Jiameil3.0之后,心中一直在想着优化加速,体验更好,插 ...

  5. jQuery可自动播放动画焦点图插件Koala

    Koala是一款简单而实用的jQuery焦点图幻灯片插件,焦点图不仅可以在播放图片的时候让图片有淡入淡出的动画效果,而且图片可以自动播放.该jQuery焦点图的每一张图片都可以设置文字描述,并浮动在图 ...

  6. JavaScript学习笔记(三)——this、原型、javascript面向对象

    一.this 在JavaScript中this表示:谁调用它,this就是谁. JavaScript是由对象组成的,一切皆为对象,万物皆为对象.this是一个动态的对象,根据调用的对象不同而发生变化, ...

  7. SAP CRM 性能小技巧

    导言 本页面打算收集SAP CRM实施中可以用于避免性能问题的注意事项,重要的事项会由图标标识. 如果你有其他的技巧想要说出来,别犹豫! 性能注意事项 通用 缓存读取类访问,特别是在性能关键的地方,比 ...

  8. iOS之UILabel的自动换行

    思路: 获取UILabel的frame大小 获取UILabel的字体大小 获取UILabel的文本内容 根据上面的3部分数据,计算文本显示区域大小 根据4计算的大小,实时改变UILabel的frame ...

  9. 解决 Error: getaddrinfo EADDRINFO 错误

    安装npm失败,提示Error: getaddrinfo EADDRINFO,原因在于虚拟机未连接互联网,悲剧.

  10. 我对BFC的理解

    最初这篇文章打算回答寒冬大神的第一问,谈谈CSS布局.本来呢我以为布局主要涉及float跟display相关属性,以及他们的包含框.静态位置等等.后来看了大神的一片面试文章,嗯?这里怎么还有个BFC, ...