文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

如何使用纯CSS实现3D

2024-04-02 19:55

关注

这篇“如何使用纯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&deg;*注意顺序哦是先移动后旋转)

  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实现3D

css的基本语法是什么

css的基本语法是:1、css规则由选择器和一条或多条声明两个部分构成;2、选择器通常是需要改变样式的HTML元素;3、每条声明由一个属性和一个值组成;4、属性和属性值被冒号分隔开。

以上是“如何使用纯CSS实现3D”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网行业资讯频道!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-前端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯