47、沿环形路径平移的动画

通过改变元素的变形对称点,可以使元素绕着环形路径运动。

<div class="a">
    ![](1.png)
</div>

img{
    animation: run 5s infinite linear;
    transform-origin: 50% 170px;  // 将元素的变形对称点改变为容器的中心,使元素绕元素中心转动
}
@keyframes run {
    to {
      transform: rotate(1turn);
    }
}

这样的缺点是使得元素自身旋转,当元素位于底部时倒过来了,如果其中有文字,也会倒过来。额外加入一层html结构进行旋转可以用来抵消这个效果。

<div class="a">
    <div class="con">
        ![](2.png)
    </div>
</div>

.con{
    animation: run 5s infinite linear;
    transform-origin: 50% 170px;
}
img{
    animation:inherit; // 继承容器元素的动画效果
    animation-direction: reverse; 反向执行动画,达到抵消的效果
}

不增加额外的html结构也能实现这一效果,事实上所有的transform-origin都可以用translate()模仿出来。变形函数并不是独立的,它会把整个元素的坐标系统也进行位移变形,即将元素的对称点位移变形。从而影响后续的变形操作,所以多次变形操作的顺序不同,导致的结果也会不一样。

img{
    animation: run 5s infinite linear;
}

@keyframes run {
    from {
      transform: translateY(170px) translateY(-50%)
                  rotate(0turn)
                  translateY(-170px) translateY(50%)
                  rotate(1turn);
    }
    to {
      transform: translateY(170px) translateY(-50%)
                  rotate(1turn)
                  translateY(-170px) translateY(50%)
                  rotate(0turn);
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 14,233评论 1 92
  • 关于css3变形 CSS3变形是一些效果的集合,比如平移、旋转、缩放和倾斜效果,每个效果都被称作为变形函数(Tra...
    hopevow阅读 6,587评论 2 13
  • 看了很多视频、文章,最后却通通忘记了,别人的知识依旧是别人的,自己却什么都没获得。此系列文章旨在加深自己的印象,因...
    DCbryant阅读 1,989评论 0 4
  • 她从一毕业扛起家里的担子,到一步步把生意做起来,让父母在北京落地生根 结婚后生活拮据,抵押房子去做生意,从一家小店...
    无敌小灰灰阅读 795评论 0 0
  • 前几天,看到一个新闻,说歌手朴树,到如今还一直在用一部诺基亚翻盖手机,他仅有的一部苹果手机,还是赞助商送的,而且没...
    晏耀飞阅读 1,160评论 3 8

友情链接更多精彩内容