如何使用纯CSS实现3D
这篇“如何使用纯CSS实现3D”文章,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要参考一下,对于“如何使用纯CSS实现3D”,小编整理了以下知识点,请大家跟着小编的步伐一步一步的慢慢理解,接下来就让我们进入主题吧。
一、正方体
我认为正方体可以算是3D图像的基础吧,首先正方体是由六个相同的面所组成,其次就需要我们依次构造。(据体构造在代码中)
代码如下:
<!DOCTYPEhtml>
<html>
<head>
<metacharset="UTF-8">
<metaname="viewport"content="width=device-width,initial-scale=1.0">
<metahttp-equiv="X-UA-Compatible"content="ie=edge">
<title>正方体</title>
<style>
.d3{
height:300px;
width:300px;
perspective:800px;
margin:140pxauto;
border:1pxsolid#ccc;}
.stage{
height:300px;
width:300px;
transform-style:preserve-3d;
position:relative;
transform:rotateX(45deg)rotateY(45deg);
}
.role{
height:300px;
width:300px;
position:absolute;
}
.stage{
animation:dong3slinearinfinite;(这是舞台)
}
.stage:hover{
animation:paused;
}
@keyframesdong{(这是使舞台旋转的动画)
from{
transform:rotateX(45deg)rotateY(45deg);
}
to{
transform:rotateX(405deg)rotateY(405deg);
}
}
.di1{(正方体的前面)
background:rgb(21,163,52);
transform:translateZ(150px);(沿着z轴向前移动150px)
font-size:100px;
font-family:KaiTi;
text-align:center;
line-height:300px;
}
.di2{(正方体的后面)
background:blue;
transform:translateZ(-150px)rotateY(180deg);(沿着z轴向前移动150px然后沿着y轴旋转180°*注意顺序哦是先移动后旋转)
font-size:100px;
font-family:KaiTi;
text-align:center;
line-height:300px;
}
.di3{(正方体的左面)
background:purple;
transform:rotateY(-90deg)translateZ(150px);
font-size:100px;
font-family:KaiTi;
text-align:center;
line-height:300px;
}
.di4{(正方体的右面)
background:pink;
transform:rotateY(90deg)translateZ(150px);
font-size:100px;
font-family:KaiTi;
text-align:center;
line-height:300px;
}
.di5{(正方体的上面)
background:red;
transform:rotateX(90deg)translateZ(150px);
font-size:100px;
font-family:KaiTi;
text-align:center;
line-height:300px;
}
.di6{(正方体的下面)
background:yellow;
transform:rotateX(-90deg)translateZ(150px);
font-size:100px;
font-family:KaiTi;
text-align:center;
line-height:300px;
}
</style>
</head>
<body>
<div>
<div>
(将正方体分为六个相同的面)
<divclass="roledi1">前</div>
<divclass="roledi2">后</div>
<divclass="roledi3">左</div>
<divclass="roledi4">右</div>
<divclass="roledi5">上</div>
<divclass="roledi6">下</div>
</div>
</div>
</body>
</html>
二、动态立体图片册
将图片册设计成立体3D的效果
利用旋转、移动、倾斜和3D效果让你的图册更加漂亮。
代码如下:
(将第一张定好位置后将后面的依次排列)
<!DOCTYPEhtml>
<html>
<head>
<metacharset="UTF-8">
<metaname="viewport"content="width=device-width,initial-scale=1.0">
<metahttp-equiv="X-UA-Compatible"content="ie=edge">
<title>事例一</title>
<style>
body{
height:100vh;
}
.div{
height:500px;
width:800px;
perspective:800px;
margin:50pxauto;
}
.div1{
height:500px;
width:800px;
transform-style:preserve-3d;
position:relative;
}
.div_0{
height:400px;
width:600px;
position:absolute;
margin-top:110px;
margin-left:50px;
}
.div_1{
height:400px;
width:600px;
background:url(../day03/timg.jpg);
background-size:600px400px;
border-radius:20px;
transform-origin:rightbottom;
transition:3s;
}
.div_2{
background:url(../day03/timg1.jpg);
border-radius:20px;
background-size:600px400px;
transform-origin:rightbottom;
transform:rotateZ(2deg)translateZ(-20px)translateX(20px)translateY(-20px);
}
.div_2:hover{
transform:rotateZ(0)translateZ(0)translateX(0)translateY(0);
transition:1s;
}
.div_2:hover~.div_1{
transform:rotateZ(2deg)translateZ(20px)translateX(20px)translateY(-20px);
transition:1s;
}
.div_3{
background:url(timg2.jpg);
border-radius:20px;
background-size:600px400px;
transform-origin:rightbottom;
transform:rotateZ(4deg)translateZ(-40px)translateX(40px)translateY(-40px);
}
.div_3:hover{
transform:rotateZ(0)translateZ(0)translateX(0)translateY(0);
transition:1s;
}
.div_4{
background:url(timg4.jpg);
border-radius:20px;
background-size:600px400px;
transform-origin:rightbottom;
transform:rotateZ(6deg)translateZ(-60px)translateX(60px)translateY(-60px);
}
.div_4:hover{
transform:rotateZ(0)translateZ(0)translateX(0)translateY(0);
transition:1s;
}
.div_5{
background:url(timg5.jpg);
border-radius:20px;
background-size:600px400px;
transform-origin:rightbottom;
transform:rotateZ(8deg)translateZ(-80px)translateX(80px)translateY(-80px);
}
.div_5:hover{
transform:rotateZ(0)translateZ(0)translateX(0)translateY(0);
transition:1s;
}
.div_6{
background:url(timg3.jpg)no-repeat;
border-radius:20px;
background-size:600px400px;
transform-origin:rightbottom;
transform:rotateZ(10deg)translateZ(-100px)translateX(100px)translateY(-100px);
}
.div_6:hover{
transform:rotateZ(0)translateZ(0)translateX(0)translateY(0);
transition:1s;
}
</style>
</head>
<body>
<div>
<div>
<divclass="div_0div_1"></div>
<divclass="div_0div_2"></div>
<divclass="div_0div_3"></div>
<divclass="div_0div_4"></div>
<divclass="div_0div_5"></div>
<divclass="div_0div_6"></div>
</div>
</div>
</body>
</html>
三、平面的星空
代码如下:
(由于没有用js所以只有平面的效果了
你掌握好旋转的中心点就很容易了)
<!DOCTYPEhtml>
<html>
<head>
<metacharset="UTF-8">
<metaname="viewport"content="width=device-width,initial-scale=1.0">
<metahttp-equiv="X-UA-Compatible"content="ie=edge">
<title>太阳系</title>
<style>
body{
background:url(timg01.jpg)no-repeat;
background-size:100%;
}
.box1{
height:600px;
width:600px;
margin:0auto;
border:1pxsolid#ccc;
border-radius:50%;
}
.box1_0{
height:100px;
width:100px;
margin:0auto;
border:1pxsolidwhite;
border-radius:50%;
position:absolute;
top:calc(50%-59px);
left:322px;
transform-origin:345.5px;
animation:dong25slinearinfinite4s;
}
@keyframesdong2{
from{
transform:rotate(0)
}
100%{
transform:rotate(360deg);
}
}
.box1_2{
height:13px;
width:13px;
margin:0auto;
border-radius:50%;
background:white;
position:absolute;
top:calc(50%-7.5px);
left:96px;
transform-origin:-45px;
animation:dong35.5slinearinfinite;
}
@keyframesdong3{
from{
transform:rotate(0);
}
100%{
transform:rotate(360deg);
}
}
.box1_1{
height:15px;
width:15px;
margin:0auto;
border-radius:50%;
background:rgb(7,100,223);
position:absolute;
top:45px;
left:calc(50%-16.5px);
}
.box2{
height:400px;
width:400px;
margin:0auto;
border:1pxsolid#ccc;
border-radius:50%;
position:absolute;
top:calc(50%-200px);
left:calc(50%-200px);
}
.box2_1{
height:15px;
width:15px;
margin:0auto;
border-radius:50%;
background:rgb(198,208,221);
position:absolute;
top:calc(50%-7.5px);
left:43px;
transform-origin:157.5px;
animation:dong15slinearinfinite.5s;
}
@keyframesdong1{
from{
transform:rotate(0)
}
100%{
transform:rotate(360deg);
}
}
.box2_2{
height:15px;
width:15px;
margin:0auto;
border-radius:50%;
background:#644e11;
position:absolute;
top:calc(50%-7.5px);
left:-7px;
transform-origin:207.5px;
animation:dong5slinearinfinite;
}
@keyframesdong{
from{
transform:rotate(0)
}
100%{
transform:rotate(360deg);
}
}
.box3{
height:300px;
width:300px;
margin:0auto;
border:1pxsolid#ccc;
border-radius:50%;
position:absolute;
top:calc(50%-150px);
left:calc(50%-150px);
}
.box4{
height:30px;
width:30px;
margin:0auto;
border-radius:50%;
background:orange;
position:absolute;
top:calc(50%-15px);
left:calc(50%-15px);
}
.boxli{
height:900px;
width:900px;
margin:0auto;
border:1pxsolid#ccc;
border-radius:50%;
position:absolute;
top:-120px;
left:calc(50%-450px);
}
.boxli_1{
height:15px;
width:15px;
margin:0auto;
border-radius:50%;
background:rgb(116,100,56);
position:absolute;
top:500px;
left:-6px;
transform-origin:455.5px-38px;
animation:dongli5slinearinfinite;
}
@keyframesdongli{
from{
transform:rotate(0)
}
100%{
transform:rotate(360deg);
}
}
</style>
</head>
<body>
<divclass="box1">
<divclass="box1_0">
<divclass="box1_2"></div>
<divclass="box1_1"></div>
</div>
<divclass="box2">
<divclass="box2_1"></div>
<divclass="box2_2"></div>
<divclass="box3">
<divclass="box4"></div>
</div>
</div>
</div>
<divclass="boxli">
<divclass="boxli_1"></div>
</div>
</body>
</html>
css的基本语法是什么
css的基本语法是:1、css规则由选择器和一条或多条声明两个部分构成;2、选择器通常是需要改变样式的HTML元素;3、每条声明由一个属性和一个值组成;4、属性和属性值被冒号分隔开。
以上是“如何使用纯CSS实现3D”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网行业资讯频道!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341