云的动画效果

云的动画效果

.one

{

left:600px;

top:20px;

opacity: .7;

transform: scale(.8);

animation-name:cloudOne;

animation-duration: 10s;

animation-timing-function: linear;

animation-iteration-count: infinite; 

animation-fill-mode: backwards;

}

@keyframes cloudOne

{

from {right:-100px;}

to {left:-100px;  }

}

按我上面的代码,云飘到最左边后总是会跳回最初静止的位置再往左飘,不管怎么改from的数值都没用,但是如果改成下面的就能从最右侧飘到最左侧,但是初始位置也变成最右侧了,这是为什么?

@keyframes cloudOne

{

from {margin-left:  100%;}

to {margin-left: -100%; }

}


正在回答

登陆购买课程后可参与讨论,去登陆

2回答

因为在动画中设置的属性覆盖了之前的,所以总是从动画设置的位置开始,如果想要实现从第一次设置的位置开始,需要使用到js中的webkitAnimationEnd事件,监听第一次动画完成之后执行第二个动画。给你举了一个例子,自己可以测试下:

<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8">
    <style type="text/css">
    body {
        overflow: hidden;
    }

    div {
        width: 100px;
        height: 100px;
        background: red;
        position: absolute;
        top: 50px;

    }

    .animation1 {
        animation: start1 5s ease;
    }

    .animation2 {
        animation: start2 8s infinite ease;
    }

    @keyframes start1 {
        0% {
            left: 50%;
        }

        100% {
            left: -100%;
        }
    }

    @keyframes start2 {
        0% {
            left: 100%;
        }


        100% {
            left: -100%;
        }
    }
    </style>
</head>
<div id="cloud" class="animation1"></div>
<script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.js"></script>
<script type="text/javascript">
var cloud = $('#cloud')
cloud.on("webkitAnimationEnd", function() {
        cloud.removeClass("animation1");
        cloud.addClass("animation2");
    }

);
</script>
</body>

</html>


好帮手慕星星 2018-12-03 18:22:58

因没有全部代码,所以无法定位问题所在,从粘贴的css样式看:

http://img1.sycdn.imooc.com//climg/5c0503b600017f3704750606.jpg

定位中设置的是left,而动画中使用的right,两个属性同时存在的时候,left的优先级大于right,所以right没有生效。同学可以设置left值从100%到-100%。margin-left值也可以完成。

自己动手测试下,祝学习愉快!

  • 提问者 慕瓜9218797 #1
    还有一个问题:在静态定位中设置的位置是不是无效的?只要动画开始,云就会从第一帧的位置开始动?能不能把第一个循环的起始位置设成静态中的定位?
    2018-12-04 09:06:05
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
HTML5与CSS3实现动态网页 2018
  • 参与学习       1887    人
  • 提交作业       4643    份
  • 解答问题       5760    个

有HTML和CSS基础,却不知道如何进阶?本路径带你通过系统学习,完成从“会做网页”到“做出好的动态网页”的蜕变,迈出成为前端工程师的第一步。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师