温馨提示×

温馨提示×

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

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

怎么使用JavaScript+CSS实现唯美蝴蝶动画

发布时间:2022-07-13 14:06:47 阅读:187 作者:iii 栏目:开发技术
前端开发者测试专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

本篇内容主要讲解“怎么使用JavaScript+CSS实现唯美蝴蝶动画”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么使用JavaScript+CSS实现唯美蝴蝶动画”吧!

技术栈

关于svg标签在svg中关于图形的复用,是通过标签defs来解决的。 举个例子:在图形中红色圆圈 ● 还有黄色圆圈 ● 都是复用的元素。结构都是一样的,只是颜色和位置的差别。 

怎么使用JavaScript+CSS实现唯美蝴蝶动画

关于figure: <figure标签规定独立的流内容(图像、图表、照片、代码等等)。

<figure元素的内容应该与主内容相关,同时元素的位置相对于主内容是独立的。如果被删除,则不应对文档流产生影响。

关于perspective-origin: perspective-origin 属性定义 3D 元素所基于的 X 轴和 Y 轴。该属性允许您改变 3D 元素的底部位置。

定义时的perspective -Origin属性,它是一个元素的子元素,透视图,而不是元素本身。

perspective-origin: x-axis y-axis;

x-axis    
定义该视图在 x 轴上的位置。默认值:50%。

可能的值:

  • left

  • center

  • right

  • length

  • %

  • y-axis    

定义该视图在 y 轴上的位置。默认值:50%。

可能的值:

  • top

  • center

  • bottom

  • length

  • %

源码

对部分蝴蝶的设定

<section class="scene3d">
  <div class="cube skybox">
    <var class="scale">
    <figure class="face front"></figure>
    <figure class="face back"></figure>
    <figure class="face right"></figure>
    <figure class="face left"></figure>
    <figure class="face top"></figure>
    <figure class="face bottom"></figure>
    </var>
  </div>
  <div class="butterfly_container">
    <var class="rotate3d">
    <var class="scale">
    <var class="translate3d">
    <var class="translate3d-1">
    <figure class="butterfly">
      <svg class="wing left" viewBox="0 0 50 100" class="icon shape-codepen">
        <use class="left" xlink:href="#shape-butterfly-1" rel="external nofollow"  rel="external nofollow" ></use>
      </svg> 
      <svg class="wing right" viewBox="0 0 50 100" class="icon shape-codepen">
        <use class="left" xlink:href="#shape-butterfly-1" rel="external nofollow"  rel="external nofollow" ></use>
      </svg> 
    </figure>
    </var>
    </var>
    </var>
    </var>
  </div>

飞动的设置

@-webkit-keyframes rotating {
  0% {
    -webkit-transformrotate3d(0000deg);
    -moz-transformrotate3d(0000deg);
    -ms-transformrotate3d(0000deg);
    -o-transformrotate3d(0000deg);
    transformrotate3d(0000deg);
  }
  100% {
    -webkit-transformrotate3d(010720deg);
    -moz-transformrotate3d(010720deg);
    -ms-transformrotate3d(010720deg);
    -o-transformrotate3d(010720deg);
    transformrotate3d(010720deg);
  }
}
@-moz-keyframes rotating {
  0% {
    -webkit-transformrotate3d(0000deg);
    -moz-transformrotate3d(0000deg);
    -ms-transformrotate3d(0000deg);
    -o-transformrotate3d(0000deg);
    transformrotate3d(0000deg);
  }
  100% {
    -webkit-transformrotate3d(010720deg);
    -moz-transformrotate3d(010720deg);
    -ms-transformrotate3d(010720deg);
    -o-transformrotate3d(010720deg);
    transformrotate3d(010720deg);
  }
}
@-ms-keyframes rotating {
  0% {
    -webkit-transformrotate3d(0000deg);
    -moz-transformrotate3d(0000deg);
    -ms-transformrotate3d(0000deg);
    -o-transformrotate3d(0000deg);
    transformrotate3d(0000deg);
  }
  100% {
    -webkit-transformrotate3d(010720deg);
    -moz-transformrotate3d(010720deg);
    -ms-transformrotate3d(010720deg);
    -o-transformrotate3d(010720deg);
    transformrotate3d(010720deg);
  }
}
@-o-keyframes rotating {
  0% {
    -webkit-transformrotate3d(0000deg);
    -moz-transformrotate3d(0000deg);
    -ms-transformrotate3d(0000deg);
    -o-transformrotate3d(0000deg);
    transformrotate3d(0000deg);
  }
  100% {
    -webkit-transformrotate3d(010720deg);
    -moz-transformrotate3d(010720deg);
    -ms-transformrotate3d(010720deg);
    -o-transformrotate3d(010720deg);
    transformrotate3d(010720deg);
  }
}
@keyframes rotating {
  0% {
    -webkit-transformrotate3d(0000deg);
    -moz-transformrotate3d(0000deg);
    -ms-transformrotate3d(0000deg);
    -o-transformrotate3d(0000deg);
    transformrotate3d(0000deg);
  }
  100% {
    -webkit-transformrotate3d(010720deg);
    -moz-transformrotate3d(010720deg);
    -ms-transformrotate3d(010720deg);
    -o-transformrotate3d(010720deg);
    transformrotate3d(010720deg);
  }
}
@-webkit-keyframes rotatingY {
  100% {
    -webkit-transformrotateY(-360deg);
    -moz-transformrotateY(-360deg);
    -ms-transformrotateY(-360deg);
    -o-transformrotateY(-360deg);
    transformrotateY(-360deg);
  }
}
@-moz-keyframes rotatingY {
  100% {
    -webkit-transformrotateY(-360deg);
    -moz-transformrotateY(-360deg);
    -ms-transformrotateY(-360deg);
    -o-transformrotateY(-360deg);
    transformrotateY(-360deg);
  }
}
@-ms-keyframes rotatingY {
  100% {
    -webkit-transformrotateY(-360deg);
    -moz-transformrotateY(-360deg);
    -ms-transformrotateY(-360deg);
    -o-transformrotateY(-360deg);
    transformrotateY(-360deg);
  }
}
@-o-keyframes rotatingY {
  100% {
    -webkit-transformrotateY(-360deg);
    -moz-transformrotateY(-360deg);
    -ms-transformrotateY(-360deg);
    -o-transformrotateY(-360deg);
    transformrotateY(-360deg);
  }
}

对蝴蝶形体的设置

.butterfly_container {
  position: absolute;
  left50%;
  top50%;
  width100px;
  height100px;
  margin-left: -50px;
  margin-top: -50px;
  -webkit-transform-origin50% 50%;
  -moz-transform-origin50% 50%;
  -ms-transform-origin50% 50%;
  -o-transform-origin50% 50%;
  transform-origin50% 50%;
  -webkit-transform-style: preserve-3d;
  -moz-transform-style: preserve-3d;
  -ms-transform-style: preserve-3d;
  -o-transform-style: preserve-3d;
  transform-style: preserve-3d;
  -webkit-animation: rotatingY 10s linear infinite;
  -moz-animation: rotatingY 10s linear infinite;
  -ms-animation: rotatingY 10s linear infinite;
  -o-animation: rotatingY 10s linear infinite;
  animation: rotatingY 10s linear infinite;
}
.butterfly_container var {
  position: absolute;
  left50%;
  top50%;
  width100px;
  height100px;
  margin-left: -50px;
  margin-top: -50px;
  -webkit-transform-style: preserve-3d;
  -moz-transform-style: preserve-3d;
  -ms-transform-style: preserve-3d;
  -o-transform-style: preserve-3d;
  transform-style: preserve-3d;
}
.butterfly_container var.rotate3d {
  -webkit-transformrotate3d(10.5070deg);
  -moz-transformrotate3d(10.5070deg);
  -ms-transformrotate3d(10.5070deg);
  -o-transformrotate3d(10.5070deg);
  transformrotate3d(10.5070deg);
}
.butterfly_container var.translate3d {
  -webkit-transformtranslate3d(-300px0px0px);
  -moz-transformtranslate3d(-300px0px0px);
  -ms-transformtranslate3d(-300px0px0px);
  -o-transformtranslate3d(-300px0px0px);
  transformtranslate3d(-300px0px0px);
}
.butterfly_container var.translate3d-1 {
  -webkit-animation: fluttering 10s ease-in-out infinite;
  -moz-animation: fluttering 10s ease-in-out infinite;
  -ms-animation: fluttering 10s ease-in-out infinite;
  -o-animation: fluttering 10s ease-in-out infinite;
  animation: fluttering 10s ease-in-out infinite;
}
.butterfly_container.scale_half var.scale {
  -webkit-transformscale3d(0.50.50.5);
  -moz-transformscale3d(0.50.50.5);
  -ms-transformscale3d(0.50.50.5);
  -o-transformscale3d(0.50.50.5);
  transformscale3d(0.50.50.5);
}
.butterfly_container.scale_third var.scale {
  -webkit-transformscale3d(0.3330.3330.333);
  -moz-transformscale3d(0.3330.3330.333);
  -ms-transformscale3d(0.3330.3330.333);
  -o-transformscale3d(0.3330.3330.333);
  transformscale3d(0.3330.3330.333);
}
.butterfly_container.scale_quarter var.scale {
  -webkit-transformscale3d(0.250.250.25);
  -moz-transformscale3d(0.250.250.25);
  -ms-transformscale3d(0.250.250.25);
  -o-transformscale3d(0.250.250.25);
  transformscale3d(0.250.250.25);
}
.butterfly_container figure.butterfly {
  position: absolute;
  left50%;
  top50%;
  width100px;
  height100px;
  margin-left: -50px;
  margin-top: -50px;
  -webkit-transform-style: preserve-3d;
  -moz-transform-style: preserve-3d;
  -ms-transform-style: preserve-3d;
  -o-transform-style: preserve-3d;
  transform-style: preserve-3d;
  -webkit-transform-origin50% 50%;
  -moz-transform-origin50% 50%;
  -ms-transform-origin50% 50%;
  -o-transform-origin50% 50%;
  transform-origin50% 50%;
}
.butterfly_container figure.butterfly .wing {
  position: absolute;
  width50px;
  height100px;
  -webkit-transform-style: preserve-3d;
  -moz-transform-style: preserve-3d;
  -ms-transform-style: preserve-3d;
  -o-transform-style: preserve-3d;
  transform-style: preserve-3d;
  -webkit-transform-origin50% 50%;
  -moz-transform-origin50% 50%;
  -ms-transform-origin50% 50%;
  -o-transform-origin50% 50%;
  transform-origin50% 50%;
  -webkit-transformtranslate3d(000rotate3d(10.5045deg);
  -moz-transformtranslate3d(000rotate3d(10.5045deg);
  -ms-transformtranslate3d(000rotate3d(10.5045deg);
  -o-transformtranslate3d(000rotate3d(10.5045deg);
  transformtranslate3d(000rotate3d(10.5045deg);
}

到此,相信大家对“怎么使用JavaScript+CSS实现唯美蝴蝶动画”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

向AI问一下细节

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

AI

开发者交流群×