CSS3-3D导航(transform:rotate)


借助transform:rotate实现上图的3D导航效果 

具体代码如下

 1     <div class="nav">
 2         <ul>
 3             <li>
 4                 <a href="#">首页a>
 5                 <a href="#">indexa>
 6             li>
 7             <li><a href="#">新闻a>
 8                 <a href="#">newsa>
 9             li>
10             <li><a href="#">产品a>
11                 <a href="#">producta>
12             li>
13             <li><a href="#">关于a>
14                 <a href="#">abouta>
15             li>
16         ul>
17     div>
 1 <style>
 2     .nav {
 3         margin: 200px auto;
 4         width: 600px;
 5 
 6     }
 7 
 8     ul {
 9         list-style: none;
10     }
11 
12     .nav li {
13         float: left;
14         position: relative;
15         width: 100px;
16         height: 50px;
17         line-height: 50px;
18         /* 需要在父元素设置transform-style:preserve-3d 以实现子元素的3d效果 */
19         transform-style: preserve-3d;
20 
21         transition: all .5s;
22     }
23 
24     .nav li a {
25         position: absolute;
26         top: 0;
27         left: 0;
28         width: 100%;
29         height: 100%;
30         text-align: center;
31         text-decoration: none;
32         color: #fff;
33     }
34 
35     .nav li a:first-child {
36         transform: translateZ(25px);
37         background-color: green;
38     }
39 
40     .nav li a:last-child {
41         /* 此时橙色盒子躺平之后,需要俯视才能看到橙色盒子,看它的方向始终是Z轴方向,所以这里要向Z轴移动,相当于旋转的时候它的三个轴也会跟着旋转 */
42         transform: rotateX(90deg) translateZ(25px);
43         background-color: orange;
44     }
45 
46     .nav li:hover {
47         transform: rotateX(-90deg);
48     }
49 style>

rotate旋转的时候遵循左手法则:轻握左手,大拇指指向旋转轴正方向,四指指向的方向就是旋转方向。屏幕到眼睛方向为rotate的Z轴正方向,水平为X,垂直是Y,如下图所示

 

相关