博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
3D魔方的思路与实现
阅读量:4343 次
发布时间:2019-06-07

本文共 6796 字,大约阅读时间需要 22 分钟。

  思路:(要实现魔方六个面以及九个小块的样式并旋转展示。)

  内容部分:魔方分为六个面,每个面有九个小块,使用一个div内嵌套六个div再嵌套九个div实现内容部分。  样式部分:最外层div设置属性 transform-style: preserve-3d;实现整体的3D效果。

        内部六个面使用 transform: rotateX/Y/Z(0deg) translateZ(1px); 分别平移旋转不同的角度,与第一个面组成立方体。

        设置每个面九个小块的大小和边框样式(圆角)以及背景颜色。

       最后设置整体的旋转方式以及循环时间等。

  实现

html 部分

1  2  3 
4 5 6
7 Document 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
View Code

css 部分

 

1 body {  2     position: relative;  3     width: 500px;  4     height: 500px;  5     padding: 0;  6     margin: 0 auto;  7 }  8   9  10 /*整体视角与样式*/ 11  12 .perspective { 13     position: relative; 14     width: 300px; 15     height: 300px; 16     -webkit-transform: perspective(1500px); 17     -moz-transform: perspective(1500px); 18 } 19  20  21 /*整体3d效果*/ 22  23 .m3d { 24     -moz-transform-style: preserve-3d; 25     -webkit-transform-style: preserve-3d; 26     -webkit-animation-name: animation; 27     -o-animation-name: animation; 28     animation-name: animation; 29     -webkit-animation-timing-function: ease-in-out; 30     -o-animation-timing-function: ease-in-out; 31     animation-timing-function: ease-in-out; 32     -webkit-animation-iteration-count: infinite; 33     -o-animation-iteration-count: infinite; 34     animation-iteration-count: infinite; 35     -webkit-animation-duration: 9s; 36     -o-animation-duration: 9s; 37     animation-duration: 9s; 38     margin: 100px; 39     -webkit-transform-origin: 150px 150px 0; 40     -moz-transform-origin: 150px 150px 0; 41     -ms-transform-origin: 150px 150px 0; 42     -o-transform-origin: 150px 150px 0; 43     transform-origin: 150px 150px 0; 44 } 45  46  47 /*六个面的样式*/ 48  49 .perspective div { 50     display: block; 51     position: absolute; 52     width: 298px; 53     height: 298px; 54     border: 1px solid rgba(255, 200, 0, 0.2); 55     border-radius: 3%; 56 } 57  58  59 /*正面样式*/ 60  61 .front { 62     -webkit-transform: rotateY(0deg) translateZ(150px); 63     -moz-transform: rotateY(0deg) translateZ(150px); 64 } 65  66  67 /*正面小块颜色*/ 68  69 .front div { 70     background: rgba(57, 170, 174, 0.8); 71 } 72  73  74 /*背面样式*/ 75  76 .back { 77     -webkit-transform: rotateY(180deg) translateZ(150px); 78     -moz-transform: rotateY(180deg) translateZ(150px); 79 } 80  81  82 /*背面小块颜色*/ 83  84 .back div { 85     background: rgba(99, 234, 106, 0.8); 86 } 87  88  89 /*右面样式*/ 90  91 .right { 92     -webkit-transform: rotateY(90deg) translateZ(150px); 93     -moz-transform: rotateY(90deg) translateZ(150px); 94 } 95  96  97 /*右面小块颜色*/ 98  99 .right {100     background: rgba(57, 209, 209, 0.8);101 }102 103 104 /*左面样式*/105 106 .left {107     -webkit-transform: rotateY(-90deg) translateZ(150px);108     -moz-transform: rotateY(-90deg) translateZ(150px);109 }110 111 112 /*左面小块颜色*/113 114 .left div {115     background: rgba(252, 29, 20, 0.8);116 }117 118 119 /*上面样式*/120 121 .top {122     -webkit-transform: rotateX(90deg) translateZ(150px);123     -moz-transform: rotateX(90deg) translateZ(150px);124 }125 126 127 /*上面小块颜色*/128 129 .top div {130     background: rgba(20, 252, 55, 0.8);131 }132 133 134 /*下面样式*/135 136 .bottom {137     -webkit-transform: rotateX(-90deg) translateZ(150px);138     -moz-transform: rotateX(-90deg) translateZ(150px);139 }140 141 142 /*下面小块颜色*/143 144 .bottom div {145     background: rgba(20, 39, 252, 0.8);146 }147 148 149 /*小块的样式*/150 151 .big div {152     width: 97px;153     height: 98px;154     display: block;155     float: left;156     position: relative;157     border: 1px solid rgba(255, 255, 255, 0.9);158     ;159     border-radius: 10%;160 }161 162 /*整体旋转方式*/163 /*164 @-webkit-keyframes animation {165     from {166         -webkit-transform: rotatey(0) rotateX(0);167     }168     to {169         -webkit-transform: rotatey(360deg) rotateX(360deg);170     }171 }172 173 @keyframes animation {174     from {175         transform: rotatey(0) rotateX(0);176     }177     to {178         transform: rotatey(360deg) rotateX(360deg);179     }180 }181 */182 183 /*整体旋转方式*/184 185 @-webkit-keyframes animation {186     from,187     to {
}188 16% {189 -webkit-transform: rotatey(-90deg);190 }191 33% {192 -webkit-transform: rotatey(-90deg) rotateZ(135deg);193 }194 50% {195 -webkit-transform: rotatey(225deg) rotateZ(135deg);196 }197 66% {198 -webkit-transform: rotatey(135deg) rotateX(135deg);199 }200 85% {201 -webkit-transform: rotatex(135deg);202 }203 }204 205 206 /*整体旋转方式*/207 208 @keyframes animation {209 from,210 to {
}211 16% {212 transform: rotatey(-90deg);213 }214 33% {215 transform: rotatey(-90deg) rotateZ(135deg);216 }217 50% {218 transform: rotatey(225deg) rotateZ(135deg);219 }220 66% {221 transform: rotatey(135deg) rotateX(135deg);222 }223 85% {224 transform: rotatey(135deg);225 }226 }
View Code

 

    

转载于:https://www.cnblogs.com/wsy-1101/p/5935605.html

你可能感兴趣的文章
Vm workstation安装win8 的问题
查看>>
one list to muti list
查看>>
Regular Expression Patterns
查看>>
在 Linux 下使用 水星MW150cus (RTL8188CUS芯片)无线网卡
查看>>
JavaScript中的方法重载
查看>>
Js中变量的作用域
查看>>
sql--截取字段中的部分数据
查看>>
linux 遇到(vsftpd)—500 OOPS:chroot
查看>>
[Eigen]C++开源线代库
查看>>
java实现简单的单点登录
查看>>
GIS学习之栅格数据
查看>>
C# model代码生成器
查看>>
NCO3部署到服务器后无法连接到SAP
查看>>
Eclipse Debug
查看>>
CodeForces 149D Coloring Brackets
查看>>
[转]PLSQL Developer备份恢复oracle数据
查看>>
[转]C#进阶系列——WebApi 接口返回值不困惑:返回值类型详解
查看>>
3.23课·········格式与布局
查看>>
TCP/IP——ARP与RARP简记
查看>>
python(七) Python中单下划线和双下划线
查看>>