花潮论坛

搜索
热搜: 活动 交友 discuz
查看: 16|回复: 3

svg接力绘图演示

[复制链接]
  • TA的每日心情
    奋斗
    2026-6-8 12:15
  • 签到天数: 1839 天

    [LV.Master]伴坛终老

    3247

    主题

    13万

    回帖

    28万

    积分

    管理员

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

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

    发表于 2026-6-8 20:50 | 显示全部楼层 |阅读模式

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

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

    x
    <style>
        #msvg {
            display: block;
            margin: auto;
            path {
                stroke-dasharray: var(--perimeter);
                stroke-dashoffset: var(--perimeter);
                fill: none;
                stroke: green;
                stroke-width: 2;
                animation: draw 4s var(--delay) linear forwards;
            }
            circle {
                stroke-dasharray: var(--perimeter);
                stroke-dashoffset: var(--perimeter);
                fill: none;
                stroke: green;
                stroke-width: 2;
                animation: draw 4s var(--delay) linear forwards, fill 2s calc(var(--delay) + 4s) forwards;
            }
        }
        .tMid { text-align: center; }
        @keyframes draw { to { stroke-dashoffset: 0; } }
        @keyframes fill { to { fill: lightgreen; } }
    </style>
    
    <svg id="msvg" width="400" height="400" viewBox="-200 -200 400 400" xmlns="http://www.w3.org/2000/svg">
        <path d="M-180 0 L0 -180 L180 0 L0 180Z"></path>
        <path d="M-88 -88 L88 -88 L88 88 L-88 88Z"></path>
        <circle x="0" y="0" r="86"></circle>
    </svg>
    <p class="tMid"><button type="button" onclick="reStartAnimation()">再来一次</button></p>
    
    <script>
        const paths = document.querySelectorAll('#msvg path');
        const circle = document.querySelector('#msvg circle');
    
        [...paths, circle].forEach((elm, key) => {
            elm.style.cssText += `
                --perimeter: ${Math.ceil(elm.getTotalLength())};
                --delay: ${key * 4}s;
            `;
        });
        
        function reStartAnimation() {
            [...paths, circle].forEach(elm => {
                elm.style.animation = 'none';
                setTimeout(() => {
                    elm.style.animation = 'draw 4s var(--delay) linear forwards';
                    if (elm.tagName === 'circle') {
                        elm.style.animation += ', fill 2s calc(var(--delay) + 4s) forwards';
                    }
                });
    
            });
        }
    </script>
    

    评分

    参与人数 2威望 +80 金钱 +160 经验 +80 收起 理由
    杨帆 + 30 + 60 + 30 匠心独运,细节精致入微!
    红影 + 50 + 100 + 50 匠心独运,细节精致入微!

    查看全部评分

  • TA的每日心情
    奋斗
    2026-6-8 12:15
  • 签到天数: 1839 天

    [LV.Master]伴坛终老

    3247

    主题

    13万

    回帖

    28万

    积分

    管理员

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

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

     楼主| 发表于 2026-6-8 20:54 | 显示全部楼层
    本例通过对CSS动画的控制,依此绘制三个图形:两个矩形(path图形)、一个圆,圆还填充了颜色。

    实现手段主要通过 CSS 完成,但为了避免手动计算图形路径长度,使用了JS做辅助获取相应的CSS变量值。
    回复 支持 反对

    使用道具 举报

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

    [LV.10]以坛为家III

    1898

    主题

    33万

    回帖

    40万

    积分

    管理员

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

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

    发表于 2026-6-8 21:45 | 显示全部楼层
    这接力画真好看
     
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2026-6-8 09:11
  • 签到天数: 559 天

    [LV.9]以坛为家II

    372

    主题

    4266

    回帖

    2万

    积分

    版主

    Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生鹰傲苍穹飞龙在天王者至尊大将风范花潮版主

    发表于 2026-6-8 21:54 | 显示全部楼层
    马黑黑 发表于 2026-6-8 20:54
    本例通过对CSS动画的控制,依此绘制三个图形:两个矩形(path图形)、一个圆,圆还填充了颜色。

    实现手 ...

    大开眼界,CSS动画让SVG图形的依此绘制过程可视化,谢谢马老师的绝妙演示
    ★青春是一个人的精神生命,奋斗是一个人最大的体面,学习是一个人最美的姿态。
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

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

    GMT+8, 2026-6-9 00:09 , Processed in 0.076299 second(s), 25 queries .

    Powered by Discuz! X3.4

    © 2001-2013 Comsenz Inc.

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