美文网首页
css3实现沿椭圆轨迹旋转动画

css3实现沿椭圆轨迹旋转动画

作者: Lily_FJ | 来源:发表于2020-05-09 16:52 被阅读0次

需求
1.实现元素沿椭圆轨迹均匀旋转
2.鼠标点击事件、移入暂停运动
3.元素由远到近逐渐增大


网上关于css3实现旋转的案例很多,我也是借鉴别人方法,这里不细说直接上代码,通过css3实现的旋转动画存在一个小问题,旋转元素是图片,在运动过程中图片会发生抖动现象,后来尝试用svg动画解决了此问题,具体内容见《svg实现沿椭圆轨迹旋转动画》

<div class="container">
    <!-- 旋转动画 -->
    <div class="animate">
      <div class="ball ball1">
        <img src="img/ball.jpg">
        <p>1</p>
      </div>
      <div class="ball ball2">
        <img src="img/ball.jpg">
        <p>2</p>
      </div>
      <div class="ball ball3">
        <img src="img/ball.jpg">
        <p>3</p>
      </div>
      <div class="ball ball4">
        <img src="img/ball.jpg">
        <p>4</p>
      </div>
      <div class="ball ball5">
        <img src="img/ball.jpg">
        <p>5</p>
      </div>
      <div class="ball ball6">
        <img src="img/ball.jpg">
        <p>6</p>
      </div>
    </div>
    <!-- 旋转动画结束 -->
  </div>
/* 旋转动画 */
.animate {
  width: 420px;
  height: 300px;
  border-radius: 50%;
  position: absolute;
  left: 10px;
  top: 20px;
  }
@keyframes animX{
  0% {left: -20px;}
100% {left: 340px;}
}
@keyframes animY{
  0% {top: -30px;}
100% {top: 200px;}
}
@keyframes scale {
  0% {
    transform: scale(0.7)
  }
  50% {
    transform: scale(1.2)
  }
  100% {
    transform: scale(0.7)
 }
}
.ball {
  width: 100px;
  height: 100px;
  position: absolute;
  display:flex;
  flex-direction: column;
  align-items:center;
  justify-content:center;
  font-size: 12px;
}
.ball img:hover{
  transform: scale(1.2);
}
.ball img{
  width: 70px;
  height: 70px;
  margin-bottom: 10px;
}
/* 6个图x和y轴动画加起来是18s , 18s/6 等于 3s
每个球y轴动画延迟 从0递减3s,x轴与y轴相差动画时长的一半(9s/2) */
.ball1 {
  animation: animX 9s cubic-bezier(0.36, 0, 0.64, 1) -4.5s infinite alternate,
  animY 9s cubic-bezier(0.36, 0, 0.64, 1) 0s infinite alternate,
  scale 18s cubic-bezier(0.36, 0, 0.64, 1) 0s infinite alternate;
}
.ball2 {
  animation: animX 9s cubic-bezier(0.36, 0, 0.64, 1) -7.5s infinite alternate,
  animY 9s cubic-bezier(0.36, 0, 0.64, 1) -3s infinite alternate,
  scale 18s cubic-bezier(0.36, 0, 0.64, 1) -3s infinite alternate;
}
.ball3 {
  animation: animX 9s cubic-bezier(0.36, 0, 0.64, 1) -10.5s infinite alternate,
  animY 9s cubic-bezier(0.36, 0, 0.64, 1) -6s infinite alternate,
  scale 18s cubic-bezier(0.36, 0, 0.64, 1) -6s infinite alternate;
}
.ball4 {
  animation: animX 9s cubic-bezier(0.36, 0, 0.64, 1) -13.5s infinite alternate,
  animY 9s cubic-bezier(0.36, 0, 0.64, 1) -9s infinite alternate,
  scale 18s cubic-bezier(0.36, 0, 0.64, 1) -9s infinite alternate;
}
.ball5 {
  animation: animX 9s cubic-bezier(0.36, 0, 0.64, 1) -16.5s infinite alternate,
  animY 9s cubic-bezier(0.36, 0, 0.64, 1) -12s infinite alternate,
  scale 18s cubic-bezier(0.36, 0, 0.64, 1) -12s infinite alternate;
}
.ball6 {
  animation: animX 9s cubic-bezier(0.36, 0, 0.64, 1) -19.5s infinite alternate,
  animY 9s cubic-bezier(0.36, 0, 0.64, 1) -15s infinite alternate,
  scale 18s cubic-bezier(0.36, 0, 0.64, 1) -15s infinite alternate;
}
var items = document.getElementsByClassName("ball");
//console.log(items)
for (var i = 0; i < items.length; i++) {
  items[i].addEventListener('click', function () {
    console.log(this)
  })
}
for (var i = 0; i < items.length; i++) {
  items[i].addEventListener('mouseover', function () {
    for (j = 0; j < items.length; j++) {
      items[j].style.animationPlayState = "paused";
    }

  })
  items[i].addEventListener('mouseout', function () {
    for (j = 0; j < items.length; j++) {
      items[j].style.animationPlayState = "running";
    }
  })
}

参考
[1] css3实现椭圆轨迹旋转

好记性不如烂笔头,总结和记录工作学习中的点点滴滴,如有不对之处还请指教。

相关文章

  • css3实现沿椭圆轨迹旋转动画

    需求1.实现元素沿椭圆轨迹均匀旋转2.鼠标点击事件、移入暂停运动3.元素由远到近逐渐增大 网上关于css3实现旋转...

  • svg实现沿椭圆轨迹旋转动画

    需求1.实现元素沿椭圆轨迹均匀旋转2.鼠标点击事件、移入暂停运动3.元素由远到近逐渐增大 旋转动画的实现思路:1....

  • iOS-星球沿椭圆轨迹旋转

    先看效果: 什么?太模糊!来一张高清无码 背景旋转 星星的闪烁 轨迹动画 绘制椭圆 下面是demo地址链接: ht...

  • css实现椭圆轨迹旋转

    X轴Y轴在一个矩形内移动 做斜线运动 设置动画延时 设置Y轴延时为动画时长的一半, 运动轨迹变成菱形 设置三次贝塞...

  • View动画ii(沿椭圆轨迹运动)

  • CSS 动画指南

    CSS3动画(简单动画的实现,如旋转等)** 依靠CSS3中提出的三个属性:transition、transfor...

  • jquery3d轮播插件

    jquery 旋转木马 banner切换 github源码下载地址 实现原理 利用 css3 来实现动画当切换下...

  • iOS 控件沿椭圆旋转

    人生总是这么的无奈,有一个奇葩的UI给你提供奇葩的原型图,让你软件写出来效果。这就是我们苦逼的程序员。 项目需求:...

  • transfrom&transition&ani

    transform transform是才css3动画的主要部分,可以实现旋转、缩放、倾斜、移动等动画,主要用到的...

  • 关于div沿斜线运动的animation动画

    参考文章:CSS3: 利用分层动画让元素沿弧形路径运动 问题: 要使div沿水平或者竖直方向移动是很简单就能实现的...

网友评论

      本文标题:css3实现沿椭圆轨迹旋转动画

      本文链接:https://www.haomeiwen.com/subject/fyoknhtx.html