花潮论坛

搜索
热搜: 活动 交友 discuz
查看: 56|回复: 7

CSS:offset-path动画制作解析

[复制链接]
  • TA的每日心情
    慵懒
    2025-12-14 13:47
  • 签到天数: 1669 天

    [LV.Master]伴坛终老

    3047

    主题

    13万

    回帖

    28万

    积分

    管理员

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

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

    发表于 2022-10-22 09:26 | 显示全部楼层 |阅读模式

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

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

    x
    本帖最后由 马黑黑 于 2023-4-16 08:32 编辑

    CSS可以使用 offset-path 制作 animation 动画,offset-path 属性用于定义动画的svg路线,语句如下:

    offset-path: path('M196 223.5a192.5 136.5 0 1 0 385 0a192.5 136.5 0 1 0 -385 0z');

    path 引导路径,路径当是标准的 svg 路径,用小角引号包裹起来并放在小角小括弧里。上例是一个椭圆闭合路径。路径可以是任意的合法的 svg 路径,可以是闭合路径,也可以是不闭合的路径。路径可以利用在线工具生成,能自己编写路径更好。有了路径,还需设定 offset-distance 初始偏移位置,一般用百分比表示:

    offset-distance: 100%;

    这表明,运动对象偏移到路径的100%处。然后,制定关键帧动画,回到 100% 的对立位置 0%:

    to { offset-distance: 0%; }

    当然也可以从 0% 偏移到 100%,这根据需要来设定。下面我们来看看一个实例的完整的代码:

    <style>
    .mtBox {
       margin: auto;
       width: 740px;
       height: 460px;
       position: relative;
    }
    .fish {
       position: absolute;
       offset-path: path('M196 223.5a192.5 136.5 0 1 0 385 0a192.5 136.5 0 1 0 -385 0z');
       offset-distance: 100%;
       animation: swim 20s infinite;
    }
    @keyframes swim {
       to { offset-distance: 0%; }
    }
    </style>
    

    运动对象就是 .fish 盒子所指向的图片标签,它做了绝对定位,这个强烈建议,这样就可以通过 left、top 等设定物理定位后改变运动对象的运动区域。这源于:svg路径是固定的,但有时我们需要调整运动对象的运动区域,absolute + left + top 就能派上用场,大家可以根据实例自己做尝试、体会。

    CSS使用 offset-path 无需显示svg路径,也就是,不必要写出 svg 及其路径标签,但本例,为了让大家对比运动与 svg 路径的关系,HTML代码附带了svg标签,其内的 path 标签 的 d 路径与CSS的 offset-path 完全一样:

    <div class="mtBox">
       <img class="fish" src="https://wj1.zp68.com:812/lxx/yunhua/2022/10/02/gnyu.jpg" alt="" />
       <svg width="100%" height="100%" style="position: absolute; left: 0; top: 0; border:1px solid #111;">
          <path d="M196 223.5a192.5 136.5 0 1 0 385 0a192.5 136.5 0 1 0 -385 0z" fill="none" stroke="red" />
       </svg>
    </div>
    

    svg使用了 style 属性将其设定为与帖子父框重合,这样它的路径才能与 CSS 设定的 offset-path 路径贴合。演示效果:

    评分

    参与人数 2威望 +100 金钱 +200 经验 +100 收起 理由
    红影 + 50 + 100 + 50 赞一个!
    小辣椒 + 50 + 100 + 50 很给力!

    查看全部评分

  • TA的每日心情
    慵懒
    2025-12-14 13:47
  • 签到天数: 1669 天

    [LV.Master]伴坛终老

    3047

    主题

    13万

    回帖

    28万

    积分

    管理员

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

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

     楼主| 发表于 2022-10-22 09:35 | 显示全部楼层
    offset-path 还有一些细节设定,比如 offset-anchor,用于确定运动对象的锚点位置,就是运动对象在线上、线内、线外游动的位置,不过貌似没啥必要,因为我们根本就不想要路径显示出来。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2019-11-25 21:11
  • 签到天数: 1 天

    [LV.1]初来乍到

    1421

    主题

    6万

    回帖

    12万

    积分

    管理员

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

    花潮美女多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫缤纷心情草莓情怀青草情怀蝴蝶情怀心曲飞扬星星情怀七彩绚丽活泼开朗女儿情怀男儿情怀鹰傲苍穹心香一瓣音画大师天籁妙音风雨同行我心永远喜乐安康中秋征文指尖上的流年花潮管理

    发表于 2022-10-22 09:52 | 显示全部楼层
    这个又要用到路径,感觉是我的弱项,但动画又是很想学习的
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-12-14 13:47
  • 签到天数: 1669 天

    [LV.Master]伴坛终老

    3047

    主题

    13万

    回帖

    28万

    积分

    管理员

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

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

     楼主| 发表于 2022-10-22 10:45 | 显示全部楼层
    小辣椒 发表于 2022-10-22 09:52
    这个又要用到路径,感觉是我的弱项,但动画又是很想学习的

    这里讲的很浅易的,好好消化一下
    回复 支持 反对

    使用道具 举报

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

    [LV.10]以坛为家III

    1881

    主题

    32万

    回帖

    37万

    积分

    管理员

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

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

    发表于 2022-10-23 20:55 | 显示全部楼层
    学习
     
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-12-14 13:47
  • 签到天数: 1669 天

    [LV.Master]伴坛终老

    3047

    主题

    13万

    回帖

    28万

    积分

    管理员

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

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

     楼主| 发表于 2022-10-23 21:04 | 显示全部楼层

    这是复习吧
    回复 支持 反对

    使用道具 举报

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

    [LV.10]以坛为家III

    1881

    主题

    32万

    回帖

    37万

    积分

    管理员

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

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

    发表于 2022-10-24 16:58 | 显示全部楼层

    嗯嗯,你讲过的
     
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-12-14 13:47
  • 签到天数: 1669 天

    [LV.Master]伴坛终老

    3047

    主题

    13万

    回帖

    28万

    积分

    管理员

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

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

     楼主| 发表于 2022-10-24 17:45 | 显示全部楼层
    红影 发表于 2022-10-24 16:58
    嗯嗯,你讲过的

    回复 支持 反对

    使用道具 举报

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

    本版积分规则

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

    GMT+8, 2025-12-14 15:35 , Processed in 0.071586 second(s), 29 queries .

    Powered by Discuz! X3.4

    © 2001-2013 Comsenz Inc.

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