CSS实现元素绕椭圆旋转并在后方渐隐

 实现该需求需要理解一点 animation

首先

@keyframes
 

 

@keyframes规定动画关键帧:比如上方

        从开始的0%——100%

0%从盒子的 离左边0px  上边0px的地方开始运动

之后的同理,这里可以看作一个

 类似这样子的坐标轴

然后在需要制作动画的元素css中编写动画:

        

    div{
        animation:
        animX 10s cubic-bezier(0.36, 0, 0.64, 1) -5s infinite alternate,
        animY 10s cubic-bezier(0.36, 0, 0.64, 1) 0s infinite alternate,
        scale 20s cubic-bezier(0.36, 0, 0.64, 1) 0s infinite alternate;
    }

该div元素定义了三个动画,并且会同时运行这三种动画,

这里 

        animX为名称 后面的是animation的属性。

        可以参考animation详解

这里的代码与最上方展示的不同源,如果动画这样子写那么

关键帧应该如下:

        这里只列举了animX,animY名称的动画,scale暂未列出 。

@keyframes animX{
    0% {left: 0px;}
  100% {left: 600px;}
}
@keyframes animY{
    0% {top: 200px;}
  100% {top: 0px;}
}

下面是具体css与html代码:

        

                <div className='ball-box'>
                    <div class="ball">1</div>
                    <div class="ball">2</div>
                    <div class="ball">3</div>
                    <div class="ball">4</div>
                    <div class="ball">5</div>
                    <div class="ball">6</div>
                    <div class="ball">7</div>
                </div>
@keyframes animX{
    0% {left: 0px;}
  100% {left: 500px;}
}
@keyframes animY{
    0% {top: 200px;}
  100% {top: 0px;}
}
@keyframes scale {

  0% {
    opacity: 1;

  }
  25%{
    opacity: 0.75;
  }
  50% {
    opacity: 0;

  }
  75%{
    opacity: 0.75;
  } 
  100% {
    opacity: 1;
 }
}

.ball {
	width: 100px;
	height: 100px;
	background-color: rgb(76, 246, 249);
	border-radius: 50%;
	position: absolute;
    color:#fff;
    font-size:22px;
    display:flex;
    align-items:center;
    justify-content:center;
}
.ball-box{
    position: absolute;
    top: 10%;
    left: 10%;

    div:nth-child(1){
        animation:
        animX 10s cubic-bezier(0.36, 0, 0.64, 1) -5s infinite alternate,
        animY 10s cubic-bezier(0.36, 0, 0.64, 1) 0s infinite alternate,
        scale 20s cubic-bezier(0.36, 0, 0.64, 1) 0s infinite alternate;
    }
     div:nth-child(2){
        animation: animX 10s cubic-bezier(0.36, 0, 0.64, 1) -7.857s infinite alternate,
        animY 10s cubic-bezier(0.36, 0, 0.64, 1) -2.857s infinite alternate,
        scale 20s cubic-bezier(0.36, 0, 0.64, 1) -2.857s infinite alternate;
    }
     div:nth-child(3){
        animation: animX 10s cubic-bezier(0.36, 0, 0.64, 1) -10.714s infinite alternate,
        animY 10s cubic-bezier(0.36, 0, 0.64, 1) -5.714s infinite alternate,
        scale 20s cubic-bezier(0.36, 0, 0.64, 1) -5.714s infinite alternate;
    }
     div:nth-child(4){
        animation: animX 10s cubic-bezier(0.36, 0, 0.64, 1) -13.571s infinite alternate,
        animY 10s cubic-bezier(0.36, 0, 0.64, 1) -8.571s infinite alternate,
        scale 20s cubic-bezier(0.36, 0, 0.64, 1) -8.571s infinite alternate;
    }
     div:nth-child(5){
        animation: animX 10s cubic-bezier(0.36, 0, 0.64, 1) -16.428s infinite alternate,
        animY 10s cubic-bezier(0.36, 0, 0.64, 1) -11.428s infinite alternate,
        scale 20s cubic-bezier(0.36, 0, 0.64, 1) -11.428s infinite alternate;
    }
     div:nth-child(6){
        animation: animX 10s cubic-bezier(0.36, 0, 0.64, 1) -19.285s infinite alternate,
        animY 10s cubic-bezier(0.36, 0, 0.64, 1) -14.285s infinite alternate,
        scale 20s cubic-bezier(0.36, 0, 0.64, 1) -14.285s infinite alternate;
    }
     divl:nth-child(7){
        animation: animX 10s cubic-bezier(0.36, 0, 0.64, 1) -22.142s infinite alternate,
        animY 10s cubic-bezier(0.36, 0, 0.64, 1) -17.142s infinite alternate,
        scale 20s cubic-bezier(0.36, 0, 0.64, 1) -17.142s infinite alternate;
    }

}

                                        参考:椭圆围绕旋转

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
实现一个 CSS3 3D 椭圆旋转菜单,可以按照以下步骤进行: 1. 创建菜单的 HTML 结构,可以使用 ul 和 li 标签来实现,每个 li 标签内包含一个链接或者按钮等。 2. 使用 CSS3 的 transform 属性实现 3D 效果。我们可以使用 rotateX 和 rotateY 属性来实现 X 轴和 Y 轴的旋转效果,使用 translateZ 属性来实现 Z 轴的平移效果。 3. 使用 CSS3 的 transition 属性来实现菜单的过渡效果,例如鼠标悬停时菜单的旋转效果。 下面是一个简单的例子: HTML 代码: ```html <ul class="menu"> <li><a href="#">菜单项1</a></li> <li><a href="#">菜单项2</a></li> <li><a href="#">菜单项3</a></li> <li><a href="#">菜单项4</a></li> <li><a href="#">菜单项5</a></li> </ul> ``` CSS 代码: ```css .menu { position: relative; width: 400px; height: 200px; margin: 100px auto; transform-style: preserve-3d; } .menu li { position: absolute; width: 100px; height: 50px; background-color: #ccc; border-radius: 50%; text-align: center; line-height: 50px; font-size: 16px; color: #fff; transform-origin: 50% 50%; transition: transform 0.5s ease-in-out; } .menu li:nth-child(1) { transform: rotateY(0deg) translateZ(200px); } .menu li:nth-child(2) { transform: rotateY(72deg) translateZ(200px); } .menu li:nth-child(3) { transform: rotateY(144deg) translateZ(200px); } .menu li:nth-child(4) { transform: rotateY(216deg) translateZ(200px); } .menu li:nth-child(5) { transform: rotateY(288deg) translateZ(200px); } .menu li:hover { transform: rotateX(90deg) translateZ(50px); } ``` 在这个例子中,我们使用了一个 ul 标签来创建菜单,并且设置了它的宽度、高度和位置。每个 li 标签表示一个菜单项,我们设置了它的宽度、高度、背景颜色、圆角和对齐方式等。我们使用了 transform-origin 属性来设置旋转的基准点,使用 translateZ 属性来设置菜单项在 Z 轴上的位置。 在菜单项的样式中,我们使用了 transform 属性来实现旋转和平移的效果。我们使用了 transition 属性来实现菜单项的过渡效果。在鼠标悬停时,我们通过设置 transform 属性来实现菜单项的旋转效果。 最后,我们可以通过调整 transform 属性的值来实现不同的旋转效果和菜单项的位置。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值