为什么在from和to里面不加rotate(90deg),箭头方向会不正确?

为什么在from和to里面不加rotate(90deg),箭头方向会不正确?

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>2-9</title>
    <style type="text/css">
        div {
            font-family: Arial;
            font-size: 72px;
            font-weight: bold;
            position: fixed;
            right: 0;
            left: 0;
            width: 30px;
            height: 30px;
            margin: auto;
            transform: rotate(90deg);
            /*此处写代码*/
            position: absolute;
            bottom: 100px;
            animation: haha 1s .5s linear infinite;
        }
        @keyframes haha{
            from {
                transform: translateY(0);
            }
            to {
                transform: translateY(100px);
            }
        }
    </style>
</head>
<body>
    <div>&gt;</div>
</body>
</html>


正在回答

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

2回答

你好,是动画中的transform属性将之前设置的transform属性给覆盖了,所以之后translate移动的效果。

在动画中添加rotate旋转之后,还需要修改移动的方向,应该是x轴:

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

因为元素旋转之后,坐标轴也会跟着旋转,垂直方向就变成了x轴,如果想要上下移动,需要改变x轴的位置。

自己可以重新测试下,祝学习愉快!

  • 谢谢老师。还有一个问题。为什么rotate和translate的顺序颠倒会导致结果不同呢? @keyframes haha{ from { transform: rotate(90deg) translateX(0) ; } to { transform: rotate(90deg) translateX(100px) ; } } @keyframes haha{ from { transform: translateX(0) rotate(90deg); } to { transform: translateX(100px) rotate(90deg); } }
    2019-03-19 13:24:19
好帮手慕星星 2019-03-19 14:26:30

你好,如果先旋转,坐标轴也会跟着旋转,那么x轴就会转到垂直方向,所以如果想要上下移动,就需要改变x轴的位置。

如果先平移,上下移动,需要使用的是y轴,不是x轴(这时候是正常的,没有旋转过的)。代码中需要修改:

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

改为Y轴上的移动就对了。

主要是坐标轴是否旋转的问题,如果没有旋转,正常设置就可以。

可以再测试下。

问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
响应式开发与常用框架 2018
  • 参与学习           人
  • 提交作业       2198    份
  • 解答问题       5012    个

如果你有web端基础,既想进阶,又想进军移动端开发,那就来吧,我们专题为你带来的课程有HTML5、CSS3、移动基础、响应式、bootstrap、less等,让你在前端道路上畅通无阻!

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

在线咨询

领取优惠

免费试听

领取大纲

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