怎么用css实现3d动画特效

发布时间:2022-02-28 15:32:00 作者:小新
来源:亿速云 阅读:392

小编给大家分享一下怎么用css实现3d动画特效,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

  属性

  perspective:透距离,单位像素(值越小,透视距离越近,效果越明显):设置父元素上

  perspective-origin:设置透视点的位置

  transform-style:指定某元素的子元素是位于三维空间内,取值:flat|preserve-3d

  1.1.1思路

  (1)有三个p,一起放到一个盒子里面。

  <pclass="container">

  <pclass="cube">

  <pclass="mianmian1"></p>

  <pclass="mianmian2"></p>

  <pclass="mianmian3"></p>

  </p>

  </p>

  (2)为其盒子设置样式

  .cube{

  width:200px;

  height:300px;

  transform-style:preserve-3d;

  margin:100pxauto;

  position:relative;

  transform:rotateX(30deg);

  border-radius:50%;

  padding:60px;

  }

  (3)为其每个p设置样式

  .mian{

  width:200px;

  height:300px;

  background-image:url(1.jpg);

  background-position:400px0;

  position:absolute;

  background:url(aka.jpg);

  border:1pxsolid#ccc;

  transition:2s;

  }

  /*.mian1:hover{

  transform-origin:right;

  transform:rotateY(-60deg);

  }*/

  .mian1{

  transform-origin:right;

  transform:translateX(-200px)rotateY(45deg);

  background-position:00;

  }

  .mian2{

  background-position:400px0;

  }

  .mian3{

  transform-origin:left;

  transform:translateX(200px)rotateY(45deg);

  background-position:200px0;

  }

  (4)为其设置动画

  .mian3:hover{

  transform:translateX(200px)rotateY(0deg);

  }

  .mian1:hover{

  transform:translateX(-200px)rotateY(0deg);

  }

  1.1.1源码:

  <!DOCTYPEhtml>

  <htmllang="en">

  <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>

  .container{

  width:1000px;

  height:650px;

  perspective:2000px;

  border:1pxsolidtransparent;

  overflow:hidden;

  margin:0auto;

  perspective-origin:10%20%;

  }

  .cube{

  width:200px;

  height:300px;

  transform-style:preserve-3d;

  margin:100pxauto;

  position:relative;

  transform:rotateX(30deg);

  border-radius:50%;

  padding:60px;

  }

  .mian{

  width:200px;

  height:300px;

  background-image:url(1.jpg);

  background-position:400px0;

  position:absolute;

  background:url(aka.jpg);

  border:1pxsolid#ccc;

  transition:2s;

  }

  /*.mian1:hover{

  transform-origin:right;

  transform:rotateY(-60deg);

  }*/

  .mian1{

  transform-origin:right;

  transform:translateX(-200px)rotateY(45deg);

  background-position:00;

  }

  .mian2{

  background-position:400px0;

  }

  .mian3{

  transform-origin:left;

  transform:translateX(200px)rotateY(45deg);

  background-position:200px0;

  }

  .mian3:hover{

  transform:translateX(200px)rotateY(0deg);

  }

  .mian1:hover{

  transform:translateX(-200px)rotateY(0deg);

  }

  </style>

  </head>

  <body>

  <pclass="container">

  <pclass="cube">

  <pclass="mianmian1"></p>

  <pclass="mianmian2"></p>

  <pclass="mianmian3"></p>

  </p>

  </p>

  </body>

  </html>

  1.1.2

  2094583391-5b70f66722968_articlex.gif

  1.1.2思路:

  (1)有五个p,分别放上五个字。

  <pid="box">

  <pclass="ze1">前</p>

  <pclass="ze2">端</p>

  <pclass="ze3">小</p>

  <pclass="ze4">学</p>

  <pclass="ze5">生</p>

  </p>

  (2)给box和p总体设置样式

  #box{

  margin:100pxauto;

  font-size:100px;

  color:#005aa0;

  text-align:center;

  }

  .ze1,.ze2,.ze3,.ze4,.ze5{

  display:inline-block;

  width:90px;

  height:100%;

  position:relative;

  }

  (3)设置伪元素before和after

  .ze1:before,.ze2:before,.ze3:before,.ze4:before,.ze5:before{

  content:attr(data);

  position:absolute;

  color:#ffffff;

  top:0;

  left:2px;

  transform-origin:left;

  transition:transform.5s;

  }

  .ze1:before{

  content:"前";

  }

  .ze2:before{

  content:"端";

  }

  .ze3:before{

  content:"小";

  }

  .ze4:before{

  content:"学";

  }

  .ze5:before{

  content:"生";

  }

  .ze1:after,.ze2:after,.ze3:after,.ze4:after,.ze5:after{

  position:absolute;

  color:#b3b3b3;

  top:3px;

  left:10px;

  z-index:-1;

  transform-origin:left;

  transition:transform.5s;

  }

  .ze1:after{

  content:"前";

  }

  .ze2:after{

  content:"端";

  }

  .ze3:after{

  content:"小";

  }

  .ze4:after{

  content:"学";

  }

  .ze5:after{

  content:"生";

  }

  (4)为其设置动画

  .ze1:hover:before,.ze2:hover:before,.ze3:hover:before,.ze4:hover:before,.ze5:hover:before{

  transform:rotateY(-40deg)skewY(10deg);

  }

  .ze1:hover:after,.ze2:hover:after,.ze3:hover:after,.ze4:hover:after,.ze5:hover:after{

  transform:rotateY(40deg)skewY(10deg);

  }

  1.1.2源码:

  <!DOCTYPEhtml>

  <htmllang="en">

  <head>

  <metacharset="UTF-8">

  <title>动态字</title>

  <style>

  #box{

  margin:100pxauto;

  font-size:100px;

  color:#005aa0;

  text-align:center;

  }

  .ze1,.ze2,.ze3,.ze4,.ze5{

  display:inline-block;

  width:90px;

  height:100%;

  position:relative;

  }

  .ze1:before,.ze2:before,.ze3:before,.ze4:before,.ze5:before{

  content:attr(data);

  position:absolute;

  color:#ffffff;

  top:0;

  left:2px;

  transform-origin:left;

  transition:transform.5s;

  }

  .ze1:before{

  content:"前";

  }

  .ze2:before{

  content:"端";

  }

  .ze3:before{

  content:"小";

  }

  .ze4:before{

  content:"学";

  }

  .ze5:before{

  content:"生";

  }

  .ze1:after,.ze2:after,.ze3:after,.ze4:after,.ze5:after{

  position:absolute;

  color:#b3b3b3;

  top:3px;

  left:10px;

  z-index:-1;

  transform-origin:left;

  transition:transform.5s;

  }

  .ze1:after{

  content:"前";

  }

  .ze2:after{

  content:"端";

  }

  .ze3:after{

  content:"小";

  }

  .ze4:after{

  content:"学";

  }

  .ze5:after{

  content:"生";

  }

  .ze1:hover:before,.ze2:hover:before,.ze3:hover:before,.ze4:hover:before,.ze5:hover:before{

  transform:rotateY(-40deg)skewY(10deg);

  }

  .ze1:hover:after,.ze2:hover:after,.ze3:hover:after,.ze4:hover:after,.ze5:hover:after{

  transform:rotateY(40deg)skewY(10deg);

  }

  </style>

  </head>

  <body>

  <pid="box">

  <pclass="ze1">前</p>

  <pclass="ze2">端</p>

  <pclass="ze3">小</p>

  <pclass="ze4">学</p>

  <pclass="ze5">生</p>

  </p>

  </body>

  </html>

  1.1.3思路不写,只写源码

  1.1.3源码:

  <!DOCTYPEhtml>

  <htmllang="en">

  <head>

  <metacharset="UTF-8">

  <metaname="viewport"content="width=device-width,initial-scale=1.0">

  <metahttp-equiv="X-UA-Compatible"content="ie=edge">

  <title>3d动画</title>

  <style>

  body{

  margin:0;

  background:url(iom.jpg);

  background-size:100%;

  position:relative;

  }

  .box{

  width:430px;

  height:430px;

  position:absolute;;

  top:100px;

  left:480px;

  border:1pxsolid#ccc;

  border-radius:215px;

  text-align:center;

  animation:dong20sinfinitelinear;

  }

  .ai{

  width:10px;

  height:10px;

  background:#0c0;

  border-radius:5px;

  position:absolute;

  right:38px;

  top:340px;

  }

  @keyframesdong{

  0%{

  transform:rotate(0deg)

  }

  100%{

  transform:rotate(720deg)

  }

  }

  .mrin{

  width:320px;

  height:320px;

  border:1pxsolid#ccc;

  border-radius:180px;

  position:absolute;

  top:155px;

  left:535px;

  animation:mi15sinfinitelinear;

  }

  .ak{

  width:50px;

  height:50px;

  border:1pxsolid#ccc;

  margin:20px0020px;

  border-radius:25px;

  display:inline-block;

  animation:ol5sinfinitelinear;

  }

  .ak.sj1{

  width:10px;

  height:10px;

  border-radius:5px;

  margin:20px0020px;

  background:blue;

  }

  .ak.sj2{

  width:10px;

  height:10px;

  margin-top:5px;

  background:#fff;

  border-radius:5px;

  }

  @keyframesmi{

  0%{

  transform:rotate(0deg)

  }

  100%{

  transform:rotate(720deg)

  }

  }

  @keyframesol{

  0%{

  transform:rotate(0deg)

  }

  100%{

  transform:rotate(720deg)

  }

  }

  .mian{

  width:240px;

  height:240px;

  border:1pxsolid#ccc;

  position:absolute;

  border-radius:120px;

  top:195px;

  left:575px;

  animation:af5sinfinitelinear;

  }

  .mian.ap{

  width:10px;

  height:10px;

  border-radius:5px;

  background:#f0f;

  margin:30px0030px;

  }

  @keyframesaf{

  0%{

  transform:rotate(0deg)

  }

  100%{

  transform:rotate(720deg)

  }

  }

  .chen{

  width:160px;

  height:160px;

  border:1pxsolid#ccc;

  position:absolute;

  border-radius:80px;

  top:235px;

  left:615px;

  animation:oa4sinfinitelinear;

  }

  .ze{

  width:10px;

  height:10px;

  border-radius:5px;

  background:#0c0;

  margin:20px0015px;

  }

  @keyframesoa{

  0%{

  transform:rotate(0deg)

  }

  100%{

  transform:rotate(720deg)

  }

  }

  .yu{

  width:80px;

  height:80px;

  background-color:darkorange;

  border-radius:40px;

  position:absolute;

  top:275px;

  left:655px;

  opacity:.7;

  }

  </style>

  </head>

  <body>

  <pclass="box">

  <pclass="ai"></p>

  </p>

  <pclass="mrin">

  <pclass="ak">

  <pclass="sj1"></p>

  <pclass="sj2"></p>

  </p>

  </p>

  <pclass="mian">

  <pclass="ap"></p>

  </p>

  <pclass="chen">

  <pclass="ze"></p>

  </p>

  <pclass="yu"></p>

  </body>

  </html>

  .ak.sj2{

  width:10px;

  height:10px;

  margin-top:5px;

  background:#fff;

  border-radius:5px;

  }

  @keyframesmi{

  0%{

  transform:rotate(0deg)

  }

  100%{

  transform:rotate(720deg)

  }

  }

  @keyframesol{

  0%{

  transform:rotate(0deg)

  }

  100%{

  transform:rotate(720deg)

  }

  }

  .mian{

  width:240px;

  height:240px;

  border:1pxsolid#ccc;

  position:absolute;

  border-radius:120px;

  top:195px;

  left:575px;

  animation:af5sinfinitelinear;

  }

  .mian.ap{

  width:10px;

  height:10px;

  border-radius:5px;

  background:#f0f;

  margin:30px0030px;

  }

  @keyframesaf{

  0%{

  transform:rotate(0deg)

  }

  100%{

  transform:rotate(720deg)

  }

  }

  .chen{

  width:160px;

  height:160px;

  border:1pxsolid#ccc;

  position:absolute;

  border-radius:80px;

  top:235px;

  left:615px;

  animation:oa4sinfinitelinear;

  }

  .ze{

  width:10px;

  height:10px;

  border-radius:5px;

  background:#0c0;

  margin:20px0015px;

  }

  @keyframesoa{

  0%{

  transform:rotate(0deg)

  }

  100%{

  transform:rotate(720deg)

  }

  }

  .yu{

  width:80px;

  height:80px;

  background-color:darkorange;

  border-radius:40px;

  position:absolute;

  top:275px;

  left:655px;

  opacity:.7;

  }

  </style>

  </head>

  <body>

  <pclass="box">

  <pclass="ai"></p>

  </p>

  <pclass="mrin">

  <pclass="ak">

  <pclass="sj1"></p>

  <pclass="sj2"></p>

  </p>

  </p>

  <pclass="mian">

  <pclass="ap"></p>

  </p>

  <pclass="chen">

  <pclass="ze"></p>

  </p>

  <pclass="yu"></p>

  </body>

  </html>

怎么用css实现3d动画特效

以上是“怎么用css实现3d动画特效”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!

推荐阅读:
  1. css实现3d动画特效的代码实例
  2. CSS3怎么实现3D星空动画特效

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

css

上一篇:如何使用Python根据模板批量生成docx文档

下一篇:Python爬虫分类知识点有哪些

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》