花潮论坛

搜索
热搜: 活动 交友 discuz
查看: 119|回复: 67

CSS关键帧动画之圆周运动演示

[复制链接]
  • TA的每日心情
    慵懒
    2025-12-15 08:01
  • 签到天数: 1670 天

    [LV.Master]伴坛终老

    3049

    主题

    13万

    回帖

    28万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫相遇之美鹰傲苍穹花好月圆紫色情节飞龙在天王者至尊大将风范音画大师天籁妙音共看流星风雨同行我心永远幸福快乐喜乐安康侠骨柔肠心想事成开朗大方花潮管理

    发表于 2024-6-27 12:20 | 显示全部楼层 |阅读模式

    请马上登录,朋友们都在花潮里等着你哦:)

    您需要 登录 才可以下载或查看,没有账号?立即注册

    x

    元素的 transform 属性,若 rotate 与 translate 配合使用,rotate(deg) 在前、translate(distance) 随后,则会令元素以自己为中心、以 distance 为半径,在旋转 deg 个角度的同时做圆周运动。以下,彩球初始位置在银色圆球处,现在它在虚线方框的正下方,因为它旋转了0度、沿Y轴平移了200px,即 transform: rotate(0deg) translateY(200px)。可以改变彩球的旋转角度和平移半径,也可以让小球执行关键帧动画,以便查看和感受 transform 属性旋转与平移配套使用的效果:

    transform: rotate(0) translateY(0);

    0deg

    200px

    
    

    评分

    参与人数 4威望 +150 金钱 +300 经验 +150 收起 理由
    梦江南 + 20 + 40 + 20 很给力!
    小辣椒 + 50 + 100 + 50 赞一个!
    红影 + 50 + 100 + 50 赞一个!
    南无月 + 30 + 60 + 30 很给力!

    查看全部评分

  • TA的每日心情
    慵懒
    2025-12-15 08:01
  • 签到天数: 1670 天

    [LV.Master]伴坛终老

    3049

    主题

    13万

    回帖

    28万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫相遇之美鹰傲苍穹花好月圆紫色情节飞龙在天王者至尊大将风范音画大师天籁妙音共看流星风雨同行我心永远幸福快乐喜乐安康侠骨柔肠心想事成开朗大方花潮管理

     楼主| 发表于 2024-6-27 12:42 | 显示全部楼层
    一楼的演示,都是基于 rotate + translateY 进行,其实呢,平移可以是X轴方向的,感兴趣的朋友可以试一下,我将在下层楼提供一楼的完整代码。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-12-15 08:01
  • 签到天数: 1670 天

    [LV.Master]伴坛终老

    3049

    主题

    13万

    回帖

    28万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫相遇之美鹰傲苍穹花好月圆紫色情节飞龙在天王者至尊大将风范音画大师天籁妙音共看流星风雨同行我心永远幸福快乐喜乐安康侠骨柔肠心想事成开朗大方花潮管理

     楼主| 发表于 2024-6-27 12:42 | 显示全部楼层
    一楼演示完整代码:
    1. <style>
    2. #mydiv {
    3.         margin: 30px auto;
    4.         width: 400px;
    5.         height: 400px;
    6.         border: 2px dotted lightblue;
    7.         position: relative;
    8. }
    9. #mydiv::after {
    10.         position: absolute;
    11.         content: '';
    12.         inset: 0;
    13.         border: 1px dashed plum;
    14.         border-radius: 50%;
    15. }
    16. .ball {
    17.         position: absolute;
    18.         box-sizing: border-box;
    19.         left: calc(50% - 20px);
    20.         top: calc(50% - 20px);
    21.         width: 40px;
    22.         height: 40px;
    23.         background: linear-gradient(lightgreen, purple);
    24.         border-radius: 50%;
    25. }
    26. .ball:nth-of-type(1) {
    27.         background: silver;
    28. }
    29. .ball:nth-of-type(2) {
    30.         transition: .4s;
    31.         transform: rotate(var(--deg)) translateY(var(--distance));
    32.         --deg: 0deg;
    33.         --distance: 200px;
    34. }
    35. .wrap { margin: 30px auto; width: 400px; }
    36. .msg { font: normal 16px/20px Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace; }
    37. @keyframes move { to { transform: rotate(calc(var(--deg) + 360deg)) translateY(var(--distance)); } }
    38. </style>

    39. <p>元素的 transform 属性,若 rotate 与 translate 配合使用,rotate(deg) 在前、translate(distance) 随后,则会令元素以自己为中心、以 distance 为半径,在旋转 deg 个角度的同时做圆周运动。以下,彩球初始位置在银色圆球处,现在它在虚线方框的正下方,因为它旋转了0度、沿Y轴平移了200px,即 transform: rotate(0deg) translateY(200px)。可以改变彩球的旋转角度和平移半径,也可以让小球执行关键帧动画,以便查看和感受 transform 属性旋转与平移配套使用的效果:</p>
    40. <div id="mydiv">
    41.         <div class="ball"></div>
    42.         <div id="ball" class="ball"></div>
    43. </div>
    44. <div class="wrap">
    45.         <p><output id="msg1" class="msg">transform: rotate(0) translateY(0);</output></p>
    46.         <p>
    47.                 <label for="rDeg">旋转角度:</label>
    48.                 <input id="rDeg" type="range" max="360" min="-360" value="0" />
    49.                 <output id="sDeg">0deg</output>
    50.         </p>
    51.         <p>
    52.                 <label for="rDistance">移动半径:</label>
    53.                 <input id="rDistance" type="range" max="200" min="0" value="200" />
    54.                 <output id="sDistance">200px</output>
    55.         </p>
    56.         <p>
    57.                 <label for="rAuto">运行关键帧动画</label>
    58.                 <input id="rAuto" type="checkbox" />
    59.         </p>
    60.         <pre id="msg2" class="msg"></pre>
    61. </div>

    62. <script>
    63. rDeg.oninput = rDistance.oninput = () => {
    64.         sDeg.value = rDeg.value + 'deg';
    65.         sDistance.value = rDistance.value + 'px';
    66.         ball.style.setProperty('--deg', rDeg.value + 'deg');
    67.         ball.style.setProperty('--distance', rDistance.value + 'px');
    68.         msg1.value = `transform: rotate(${sDeg.value}) translateY(${sDistance.value});`;
    69. };

    70. rAuto.onclick = () => {
    71.         if(!rAuto.checked) return;
    72.         rDeg.disabled = rDistance.disabled = true;
    73.         ball.style.animation = 'move 6s forwards';
    74.         msg2.textContent = `
    75. @keframes move {
    76.     from { transform: rotate(${sDeg.value}) translateY(${sDistance.value}); }
    77.     to { transform: rotate(${parseInt(sDeg.value) + 360}deg) translateY(${sDistance.value}); }
    78. }`;
    79. };

    80. ball.onanimationend = () => {
    81.         rDeg.disabled = rDistance.disabled = false;
    82.         rAuto.checked = false;
    83.         ball.style.animation = '';
    84. };
    85. </script>
    复制代码


    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2024-3-4 09:02
  • 签到天数: 33 天

    [LV.5]常住居民I

    94

    主题

    9699

    回帖

    2万

    积分

    论坛元老

    Rank: 80Rank: 80Rank: 80Rank: 80Rank: 80Rank: 80Rank: 80Rank: 80

    花潮美女鼠牛虎兔龙蛇马羊猴鸡狗猪蝴蝶情怀音画大师天籁妙音风雨同行我心永远绚丽缤纷

    发表于 2024-6-27 12:50 | 显示全部楼层
    艾玛,这里又写了个动画片
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2024-3-4 09:02
  • 签到天数: 33 天

    [LV.5]常住居民I

    94

    主题

    9699

    回帖

    2万

    积分

    论坛元老

    Rank: 80Rank: 80Rank: 80Rank: 80Rank: 80Rank: 80Rank: 80Rank: 80

    花潮美女鼠牛虎兔龙蛇马羊猴鸡狗猪蝴蝶情怀音画大师天籁妙音风雨同行我心永远绚丽缤纷

    发表于 2024-6-27 12:52 | 显示全部楼层
    这个旋转角度可以看度数和位置,这应该是通用的吧,
    平时都是盲猜。。。
    这回比较直观了
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2024-3-4 09:02
  • 签到天数: 33 天

    [LV.5]常住居民I

    94

    主题

    9699

    回帖

    2万

    积分

    论坛元老

    Rank: 80Rank: 80Rank: 80Rank: 80Rank: 80Rank: 80Rank: 80Rank: 80

    花潮美女鼠牛虎兔龙蛇马羊猴鸡狗猪蝴蝶情怀音画大师天籁妙音风雨同行我心永远绚丽缤纷

    发表于 2024-6-27 12:53 | 显示全部楼层
    @keframes move {
        from { transform: rotate(-139deg) translateY(145px); }
        to { transform: rotate(221deg) translateY(145px); }
    }

    这串代码怎么看着这么和蔼可亲呢
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-12-15 08:01
  • 签到天数: 1670 天

    [LV.Master]伴坛终老

    3049

    主题

    13万

    回帖

    28万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫相遇之美鹰傲苍穹花好月圆紫色情节飞龙在天王者至尊大将风范音画大师天籁妙音共看流星风雨同行我心永远幸福快乐喜乐安康侠骨柔肠心想事成开朗大方花潮管理

     楼主| 发表于 2024-6-27 12:55 | 显示全部楼层
    南无月 发表于 2024-6-27 12:53
    @keframes move {
        from { transform: rotate(-139deg) translateY(145px); }
        to { transform: ro ...

    这是帖子中经常的关键帧动画代码,具体描述动画的变化,然后又元素的 animation 去调用。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-12-15 08:01
  • 签到天数: 1670 天

    [LV.Master]伴坛终老

    3049

    主题

    13万

    回帖

    28万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫相遇之美鹰傲苍穹花好月圆紫色情节飞龙在天王者至尊大将风范音画大师天籁妙音共看流星风雨同行我心永远幸福快乐喜乐安康侠骨柔肠心想事成开朗大方花潮管理

     楼主| 发表于 2024-6-27 12:56 | 显示全部楼层
    南无月 发表于 2024-6-27 12:52
    这个旋转角度可以看度数和位置,这应该是通用的吧,
    平时都是盲猜。。。
    这回比较直观了

    盲猜也是本事哦
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-12-15 08:01
  • 签到天数: 1670 天

    [LV.Master]伴坛终老

    3049

    主题

    13万

    回帖

    28万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫相遇之美鹰傲苍穹花好月圆紫色情节飞龙在天王者至尊大将风范音画大师天籁妙音共看流星风雨同行我心永远幸福快乐喜乐安康侠骨柔肠心想事成开朗大方花潮管理

     楼主| 发表于 2024-6-27 12:56 | 显示全部楼层
    南无月 发表于 2024-6-27 12:50
    艾玛,这里又写了个动画片

    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2025-12-1 20:32
  • 签到天数: 1052 天

    [LV.10]以坛为家III

    1881

    主题

    32万

    回帖

    37万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮美女虎龙狗猪多彩人生星月交辉海样胸怀火热情怀优雅迷人神秘浪漫缤纷心情草莓情怀蝴蝶情怀心曲飞扬星星情怀七彩绚丽活泼开朗女儿情怀相遇之美一往情深花好月圆心香一瓣紫色情节飞龙在天金剪刀天籁妙音妙笔生花风雨同行我心永远天长地久幸福快乐绚丽缤纷喜乐安康中秋征文周年庆指尖上的流年舞会之星分析(喊冤)章总结章杀人王小强章最佳杀刺临屏写诗七夕诗钟活动第五届风云第六届风云情人节花潮管理

    发表于 2024-6-27 16:03 | 显示全部楼层
    这个可以在任意圈内半径上看小球的转动呢,真好
     
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2025-12-1 20:32
  • 签到天数: 1052 天

    [LV.10]以坛为家III

    1881

    主题

    32万

    回帖

    37万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮美女虎龙狗猪多彩人生星月交辉海样胸怀火热情怀优雅迷人神秘浪漫缤纷心情草莓情怀蝴蝶情怀心曲飞扬星星情怀七彩绚丽活泼开朗女儿情怀相遇之美一往情深花好月圆心香一瓣紫色情节飞龙在天金剪刀天籁妙音妙笔生花风雨同行我心永远天长地久幸福快乐绚丽缤纷喜乐安康中秋征文周年庆指尖上的流年舞会之星分析(喊冤)章总结章杀人王小强章最佳杀刺临屏写诗七夕诗钟活动第五届风云第六届风云情人节花潮管理

    发表于 2024-6-27 16:07 | 显示全部楼层
    发现个有趣的现象,彩球的background: linear-gradient(lightgreen, purple);在转动时,浅绿色永远朝向圆心呢
     
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2024-3-4 09:02
  • 签到天数: 33 天

    [LV.5]常住居民I

    94

    主题

    9699

    回帖

    2万

    积分

    论坛元老

    Rank: 80Rank: 80Rank: 80Rank: 80Rank: 80Rank: 80Rank: 80Rank: 80

    花潮美女鼠牛虎兔龙蛇马羊猴鸡狗猪蝴蝶情怀音画大师天籁妙音风雨同行我心永远绚丽缤纷

    发表于 2024-6-27 17:50 | 显示全部楼层

    我点 运行关键帧动画 ,它自动跑路。。
    半径设小点就绕小圆周跑。。
    这个好看还能跟它玩
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2024-3-4 09:02
  • 签到天数: 33 天

    [LV.5]常住居民I

    94

    主题

    9699

    回帖

    2万

    积分

    论坛元老

    Rank: 80Rank: 80Rank: 80Rank: 80Rank: 80Rank: 80Rank: 80Rank: 80

    花潮美女鼠牛虎兔龙蛇马羊猴鸡狗猪蝴蝶情怀音画大师天籁妙音风雨同行我心永远绚丽缤纷

    发表于 2024-6-27 17:53 | 显示全部楼层

    没本事的才盲猜,试一个30不行就90,再不就-90,
    就是凭试的这些乱七八糟的数据总结不出个规律来。。
    好在小白时间不值钱,慢慢耗还是可以滴。。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2024-3-4 09:02
  • 签到天数: 33 天

    [LV.5]常住居民I

    94

    主题

    9699

    回帖

    2万

    积分

    论坛元老

    Rank: 80Rank: 80Rank: 80Rank: 80Rank: 80Rank: 80Rank: 80Rank: 80

    花潮美女鼠牛虎兔龙蛇马羊猴鸡狗猪蝴蝶情怀音画大师天籁妙音风雨同行我心永远绚丽缤纷

    发表于 2024-6-27 17:54 | 显示全部楼层
    马黑黑 发表于 2024-6-27 12:55
    这是帖子中经常的关键帧动画代码,具体描述动画的变化,然后又元素的 animation 去调用。

    就是因为它能完成一些奥运会的高难度动作,所以看着跟看世界冠军似的十分顺眼
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-12-15 08:01
  • 签到天数: 1670 天

    [LV.Master]伴坛终老

    3049

    主题

    13万

    回帖

    28万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫相遇之美鹰傲苍穹花好月圆紫色情节飞龙在天王者至尊大将风范音画大师天籁妙音共看流星风雨同行我心永远幸福快乐喜乐安康侠骨柔肠心想事成开朗大方花潮管理

     楼主| 发表于 2024-6-27 18:04 | 显示全部楼层
    南无月 发表于 2024-6-27 17:54
    就是因为它能完成一些奥运会的高难度动作,所以看着跟看世界冠军似的十分顺眼

    貌似如此
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-12-15 08:01
  • 签到天数: 1670 天

    [LV.Master]伴坛终老

    3049

    主题

    13万

    回帖

    28万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫相遇之美鹰傲苍穹花好月圆紫色情节飞龙在天王者至尊大将风范音画大师天籁妙音共看流星风雨同行我心永远幸福快乐喜乐安康侠骨柔肠心想事成开朗大方花潮管理

     楼主| 发表于 2024-6-27 18:04 | 显示全部楼层
    南无月 发表于 2024-6-27 17:53
    没本事的才盲猜,试一个30不行就90,再不就-90,
    就是凭试的这些乱七八糟的数据总结不出个规律来。。
    ...

    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-12-15 08:01
  • 签到天数: 1670 天

    [LV.Master]伴坛终老

    3049

    主题

    13万

    回帖

    28万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫相遇之美鹰傲苍穹花好月圆紫色情节飞龙在天王者至尊大将风范音画大师天籁妙音共看流星风雨同行我心永远幸福快乐喜乐安康侠骨柔肠心想事成开朗大方花潮管理

     楼主| 发表于 2024-6-27 18:04 | 显示全部楼层
    南无月 发表于 2024-6-27 17:50
    我点 运行关键帧动画 ,它自动跑路。。
    半径设小点就绕小圆周跑。。
    这个好看还能跟它玩

    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-12-15 08:01
  • 签到天数: 1670 天

    [LV.Master]伴坛终老

    3049

    主题

    13万

    回帖

    28万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫相遇之美鹰傲苍穹花好月圆紫色情节飞龙在天王者至尊大将风范音画大师天籁妙音共看流星风雨同行我心永远幸福快乐喜乐安康侠骨柔肠心想事成开朗大方花潮管理

     楼主| 发表于 2024-6-27 18:15 | 显示全部楼层
    红影 发表于 2024-6-27 16:07
    发现个有趣的现象,彩球的background: linear-gradient(lightgreen, purple);在转动时,浅绿色永远朝向圆心 ...

    这个,原理你应该明白的:

    小彩球运动分两个内容,一是旋转一周,rotate(360deg),二是平移一定距离,translate(200px)。当旋转属性在前、平移属性跟后,元素不是原点旋转,而是绕原点(本例原点与外框的中心重合)、拉动半径距离旋转。

    对比一下月球绕地球的旋转原理。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2024-3-4 09:02
  • 签到天数: 33 天

    [LV.5]常住居民I

    94

    主题

    9699

    回帖

    2万

    积分

    论坛元老

    Rank: 80Rank: 80Rank: 80Rank: 80Rank: 80Rank: 80Rank: 80Rank: 80

    花潮美女鼠牛虎兔龙蛇马羊猴鸡狗猪蝴蝶情怀音画大师天籁妙音风雨同行我心永远绚丽缤纷

    发表于 2024-6-27 21:12 | 显示全部楼层

    老师设计的都是高精尖的动作,流畅还好看
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2024-3-4 09:02
  • 签到天数: 33 天

    [LV.5]常住居民I

    94

    主题

    9699

    回帖

    2万

    积分

    论坛元老

    Rank: 80Rank: 80Rank: 80Rank: 80Rank: 80Rank: 80Rank: 80Rank: 80

    花潮美女鼠牛虎兔龙蛇马羊猴鸡狗猪蝴蝶情怀音画大师天籁妙音风雨同行我心永远绚丽缤纷

    发表于 2024-6-27 21:12 | 显示全部楼层
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    小黑屋|手机版|Archiver|服务支持:DZ动力|huachaowang.com Inc. ( 蜀ICP备17032287号-1 )

    GMT+8, 2025-12-15 08:18 , Processed in 0.088906 second(s), 26 queries .

    Powered by Discuz! X3.4

    © 2001-2013 Comsenz Inc.

    快速回复 返回顶部 返回列表