本篇文章给大家带来的内容是关于css实现3d动画特效的代码实例,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
属性
perspective :透距离,单位像素(值越小,透明距离越近,效果越明显):设置父元素上
perspective-origin:
transform-style :指定某元素的子元素是位于三维空间内,取值:flat | preserve-3d

一、写一个简单的立方体
1.一个长方体有6个面,我们写6个div,并用一个父元素包裹起来。
<div class="mofang"> <div class="box mian1">1</div> <div class="box mian2">2</div> <div class="box mian3">3</div> <div class="box mian4">4</div> <div class="box mian5">5</div> <div class="box mian6">6</div></div>2.给.mofang设置宽高,并给他设置视距点位置,preserve-3d属性保留子元素3d转换
.mofang{ width: 100px; height: 100px; position: absolute; top: calc(50% - 50px); left: calc(50% - 50px); perspective: 3000px; perspective-origin:-100% -150%; transform-style: preserve-3d;}注:视距越小图形越大,反之越小
3.子元素全部绝对定位
.box{ width: 100px; height: 100px; text-align: center; line-height: 100px; font-size: 20px; font-weight: bold; border: 2px solid black; position: absolute;4.开始调整6个子元素的位置
.mian1{ background: rgba(255, 255, 0, 0.3); transform: translateY(50px) rotateX(90deg);}学习Q-q-u-n: ⑦⑧④-⑦⑧③-零①②,分享学习的方法和需要注意的小细节,不停更新最新的教程和学习技巧(从零基础开始到前端项目实战教程,学习工具,全栈开发学习路线以及规划)效果图如下:

5.一个面写好之后,将其余的面都调整好
/*后*/.mian1{ transform: translateZ(-50px);}/*上*/.mian2{ transform: translateY(-50px) rotateX(90deg);}/*左*/.mian3{ transform: translateX(-50px) rotateY(90deg);}/*前*/.mian4{ transform: translateZ(50px);}/*右*/.mian5{ transform: translateX(50px) rotateY(90deg);}/*下*/.mian6{ transform: translateY(50px) rotateX(90deg);}效果图如下:

css3D动画可以实现很多效果
下面是我写的一些3D动画效果
demo01
html
<div class="wutai"> <div class="mofang"> <div class="box mian1"> <div class="box1">1</div> <div class="box1">2</div> <div class="box1">3</div> <div class="box1">4</div> <div class="box1">5</div> <div class="box1">6</div> <div class="box1">7</div> <div class="box1">8</div> <div class="box1">9</div> </div> <div class="box mian2"> <div class="box2">1</div> <div class="box2">2</div> <div class="box2">3</div> <div class="box2">4</div> <div class="box2">5</div> <div class="box2">6</div> <div class="box2">7</div> <div class="box2">8</div> <div class="box2">9</div> </div> <div class="box mian3"> <div class="box3">1</div> <div class="box3">2</div> <div class="box3">3</div> <div class="box3">4</div> <div class="box3">5</div> <div class="box3">6</div> <div class="box3">7</div> <div class="box3">8</div> <div class="box3">9</div> </div> <div class="box mian4"> <div class="box4">1</div> <div class="box4">2</div> <div class="box4">3</div> <div class="box4">4</div> <div class="box4">5</div> <div class="box4">6</div> <div class="box4">7</div> <div class="box4">8</div> <div class="box4">9</div> </div> <div class="box mian5"> <div class="box5">1</div> <div class="box5">2</div> <div class="box5">3</div> <div class="box5">4</div> <div class="box5">5</div> <div class="box5">6</div> <div class="box5">7</div> <div class="box5">8</div> <div class="box5">9</div> </div> <div class="box mian6"> <div class="box6">1</div> <div class="box6">2</div> <div class="box6">3</div> <div class="box6">4</div> <div class="box6">5</div> <div class="box6">6</div> <div class="box6">7</div> <div class="box6">8</div> <div class="box6">9</div> </div> </div>css
<style type="text/css"> html,body{ width: 100%; height: 100%; margin: 0; padding: 0; } .wutai{ width: 100%; height: 100%; border: 1px solid black; /* background: black; */ margin: 0 auto; } .mofang{ width: 100px; height: 100px; /* perspective: 2500px; perspective-origin:-500% -550%; */ transform-style: preserve-3d; animation: texiao 10s linear infinite alternate; } .box{ width: 90px; height: 90px; margin: 100px; text-align: center; line-height: 30px; display: grid; grid-template-columns: 30px 30px 30px; grid-template-rows:30px 30px 30px; position: absolute; } .box .box1{ border: 1px solid white; background: #AACCEE; } .box .box2{ border: 1px solid white; background: #FF9966; } .box .box3{ border: 1px solid white; background: #00FFFF; } .box .box4{ border: 1px solid white; background: #FF0000; } .box .box5{ border: 1px solid white; background: #FFFF00; } .box .box6{ border: 1px solid white; background: blueviolet; } /* 后*/ .mian1{ transform: translateZ(-45px); } /* 左*/ .mian2{ transform: translateX(-45px) rotateY(90deg); } /* 上*/ .mian3{ transform: translateY(-45px) rotateX(90deg); } /* 右*/ .mian4{ transform: translateX(45px) rotateY(90deg); } /* 下*/ .mian5{ transform: translateY(45px) rotateX(90deg); } /* 前*/ .mian6{ transform: translateZ(45px); } @keyframes texiao{ 0%{transform: translate(0px) rotateX(0deg) rotateY(0deg) rotateZ(0deg);} 50%{transform: translate(400px) rotateX(0deg) rotateY(360deg) rotateZ(90deg);} 100%{transform: translate(0px) rotateX(0deg) rotateY(0deg) rotateZ(0deg);} } </style>魔方效果

demo02
html
<div class="wutai"> <div class="mofang"> <div class="box mian1">1</div> <div class="box mian2">2</div> <div class="box mian3">3</div> <div class="box mian4">4</div> <div class="box mian5">5</div> <div class="box mian6">6</div> <div class="xiaomofang"> <div class="box1 mian7">7</div> <div class="box1 mian8">8</div> <div class="box1 mian9">9</div> <div class="box1 mian10">10</div> <div class="box1 mian11">11</div> <div class="box1 mian12">12</div> </div> </div> </div>css
<style type="text/css"> .wutai{ width: 700px; height: 500px; border: 1px solid black; background: black; margin: 0 auto; /*******/ perspective: 3000px; perspective-origin:-100% -150%; /******/ } .mofang{ width: 100px; height: 100px; position: absolute; top: calc(50% - 50px); left: calc(50% - 50px); /******/ perspective: 3000px; perspective-origin:-100% -150%; transition: all 500s linear; transform-style: preserve-3d; /******/ } .box{ width: 100px; height: 100px; text-align: center; line-height: 100px; /* color: white; */ font-size: 20px; font-weight: bold; background: rgba(0,0,0,0.5); border: 2px solid black; position: absolute; /******/ transition: all 10s linear; /******/ } .mian1{ transform: translateZ(-50px); } .mian2{ transform: translateY(-50px) rotateX(90deg); } .mian3{ transform: translateX(-50px) rotateY(90deg); } .mian4{ transform: translateZ(50px); } .mian5{ transform: translateX(50px) rotateY(90deg); } .mian6{ transform: translateY(50px) rotateX(90deg); } .xiaomofang{ width: 50px; height: 50px; position: absolute; top: calc(50% - 25px); left: calc(50% - 25px); perspective: 3000px; perspective-origin:-100% -150%; /******/ transform-style: preserve-3d; transition: all 100s linear; /******/ } .box1{ width: 50px; height: 50px; text-align: center; line-height: 50px; font-size: 20px; font-weight: bold; background: rgba(255,255,255,0.2); border: 2px solid black; transform-style: preserve-3d; position: absolute; } .xiaomofang .mian7{ transform: translateZ(-27px); } .xiaomofang .mian8{ transform: translateY(-27px) rotateX(90deg); } .xiaomofang .mian9{ transform: translateX(-27px) rotateY(90deg); } .xiaomofang .mian10{ transform: translateZ(27px); } .xiaomofang .mian11{ transform: translateY(27px) rotateX(90deg); } .xiaomofang .mian12{ transform: translateX(27px) rotateY(90deg); } .mofang:hover .mian1{ transform: translateZ(-170px); background: #00FFFF; opacity: 0.7; color: white; } .mofang:hover .mian2{ transform: translateY(-170px) rotateX(90deg); background: #AACCEE; opacity: 0.7; color: white; } .mofang:hover .mian3{ transform: translateX(-170px) rotateY(90deg); background: #DCDCDC; opacity: 0.7; color: white; } .mofang:hover .mian4{ transform: translateZ(170px); background: #FF0000; opacity: 0.7; color: white; } .mofang:hover .mian5{ transform: translateX(170px) rotateY(90deg); background: #FFD700; opacity: 0.7; color: white; } .mofang:hover .mian6{ transform: translateY(170px) rotateX(90deg); background: #FF00FF; opacity: 0.7; color: white; } .mofang:hover{ transform: rotateX(36000deg); } .mofang:hover .xiaomofang{ transform: rotateX(9000deg) rotateY(18000deg) rotateZ(36000deg); } </style>多重立体图

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/4830/viewspace-3161353/ ,如需转载,请注明出处,否则将追究法律责任。