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

马黑黑《这个图案以前用svgdr画过》

[复制链接]
  • TA的每日心情
    开心
    昨天 22:11
  • 签到天数: 485 天

    连续签到: 1 天

    [LV.9]以坛为家II

    564

    主题

    1465

    回帖

    1万

    积分

    社区管理员

    积分
    14421

    最佳新人活跃会员热心会员推广达人宣传达人灌水之王突出贡献优秀版主荣誉管理

    发表于 昨天 22:19 | 显示全部楼层 |阅读模式
    <style>
        /* svg id选择器可以定义使用的部分属性(fill、stroke-*等) */
        #msvg { display: block; margin: auto; fill: none; stroke: steelblue; stroke-width: 6; stroke-linecap: round; stroke-linejoin: round; }
        /* 外层图案(齿轮)样式 */
        .path{ stroke-dasharray: var(--len); stroke-dashoffset: var(--len); animation: draw linear 6s var(--delay) forwards; --delay: 4s; }
        /* 里层图案(圆)样式 */
        .cc { animation: grow linear 4s forwards; }
        /* 描边动画 */
        @keyframes draw { to { stroke-dashoffset: 0; } }
        /* 圆变大动画 */
        @keyframes grow { to { r: 120; } }
    </style>
    
    <svg id="msvg" width="600" height="600" viewBox="-200 -200 400 400" xmlns="http://www.w3.org/2000/svg"></svg>
    
    <script>
        loadJs('https://638183.freep.cn/638183/svgdr/svgdr.min.js', tzRun);
    
        function tzRun() {
            var dr = _dr(msvg);
    
            const vertex1 = dr.circlePoints(26, 200, 180); // 外切圆1点坐标
            const vertex2 = dr.circlePoints(26, 200, 160); // 外切圆2点坐标
            // 拼接路径
            let path = 'M';
            for (let i = 0; i < vertex1.length; i++) {
                const v1 = vertex1[i].join(',');
                const v2 = vertex2[i].join(',');
                path += i % 2 === 0 ? v1 + ' ' + v2 + ' ' : v2 + ' ' + v1 + ' ';
            };
            path += 'Z'; // 路径闭环
            dr.path(path).set('class', 'path'); // 绘制路径
            dr.elm.style.setProperty('--len', dr.elm.getTotalLength()); // 设置--len变量
    
            dr.circle(0, 0, 0).set('class', 'cc'); // 画圆
        }
    
        function loadJs(url, callback) {
            var script = document.createElement('script');
            script.charset = 'utf-8';
            script.src = url;
            script.onload = function() {
                if (callback) callback();
            };
            document.head.appendChild(script);
        }
    </script>
    
  • TA的每日心情
    奋斗
    3 小时前
  • 签到天数: 575 天

    连续签到: 64 天

    [LV.9]以坛为家II

    192

    主题

    956

    回帖

    1万

    积分

    社区贵宾

    积分
    14274

    最佳新人活跃会员热心会员推广达人宣传达人灌水之王突出贡献

    发表于 半小时前 | 显示全部楼层
    实用的教程,谢谢分享
    该会员没有填写今日想说内容.
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|Archiver|小黑屋|纳兰音画网 ( 蜀ICP备2021011087号-1 )

    GMT+8, 2026-8-8 15:01 , Processed in 0.131749 second(s), 23 queries .

    Powered by Discuz! X3.5

    © 2001-2020 Comsenz Inc.

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