发一篇一年前写的CSS代码,纯CSS3做的旋转特效,比较简单,看一遍基本就会了。
解读
做这种旋转的关键是弄清楚CSS的元素层级概念,浏览器渲染元素是有规则的,如果有多个兄弟元素被绝对定位,那么后面的元素z-index
就比前面的高,backface-visibility
也是必须要掌握的,这个属性用的不多,往往在3D场景中才用到,作用是定义当元素不面向屏幕时是否可见,就是说在旋转元素时如果不希望看到其背面,这时候就可以使用它来隐藏。
CSS
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104
| * { padding: 0; margin: 0; box-sizing: border-box; } html, body { height: 100%; width: 100%; } body { position: relative; } .container { position: absolute; width: 100%; height: 250px; top: 50%; left: 50%; transform: translate(-50%,-50%); display: flex; align-items: center; background: rgba(237, 209, 196, 0.6); border-radius: 50%; } .rotate-img-list { width: 100%; display: flex; flex-flow: row nowrap; justify-content: space-around; align-items: center; } .rotate-img-list > li { list-style: none; height: 120px; width: 120px; cursor: pointer; position: relative; } .rotate-img-list > li img { display: block; width: 100%; height: auto; max-width: 100%; } .rotate-img-list > li .front, .rotate-img-list > li .back { position: absolute; left: 0; top: 0; height: 120px; width: 120px; overflow: hidden; border-radius: 50%; border: solid 3px #5ddea9; box-shadow: 0 3px 10px #999; transition: all 400ms ease-in; transform-style: preserve-3d; -webkit-backface-visibility: hidden; backface-visibility: hidden; } .rotate-img-list .front { transform: rotateY(0deg); z-index: 2; } .rotate-img-list .back { transform: rotateY(180deg); z-index: 1; } .rotate-img-list .cover { position: absolute; left: 0; top: 0; right: 0; bottom: 0; background-color: #000; border-radius: 50%; opacity: .65; pointer-events: none; } .rotate-img-list .stars-info { position: absolute; top: 0; width: 114px; height: 114px; line-height: 22px; padding-top: 45px; text-align: center; color: #fff; background: transparent; border-radius: 50%; }
.rotate-img-list li:hover .front { transform: rotateY(180deg); z-index: 1; }
.rotate-img-list li:hover .back { transform: rotateY(0deg); z-index: 2; }
|
HTML
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| <div class="container"> <ul class="rotate-img-list"> <li> <div class="front"><img src="images/t1.png" /></div> <div class="back"> <img src="images/t1.png" /> <div class="cover"></div> <div class="stars-info"> Backface </div> </div> </li> <li> <div class="front"><img src="images/t2.png" /></div> <div class="back"> <img src="images/t2.png" /> <div class="cover"></div> <div class="stars-info"> Backface </div> </div> </li> <li> <div class="front"><img src="images/t3.jpg" /></div> <div class="back"> <img src="images/t3.jpg" /> <div class="cover"></div> <div class="stars-info"> Backface </div> </div> </li> </ul> </div>
|