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

马黑黑《使用svgdr动态绘制图案》

[复制链接]
  • TA的每日心情
    开心
    昨天 21:14
  • 签到天数: 437 天

    连续签到: 7 天

    [LV.9]以坛为家II

    502

    主题

    1333

    回帖

    1万

    积分

    社区管理员

    积分
    13557

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

    发表于 昨天 21:21 | 显示全部楼层 |阅读模式
    <style>
    	#msvg {
    		display: block;
    		margin: auto;
    		border: 1px solid gray;
    		polygon {
    			stroke-dasharray: var(--len);
    			stroke-dashoffset: var(--len);
    			animation: draw 6s linear forwards;
    		}
    	}
    	@keyframes draw { to { stroke-dashoffset: 0; } }
    </style>
    
    <svg id="msvg" width="600" height="600" viewBox="-200 -200 400 400"></svg>
    
    <script type="module">
    	import Dr from 'https://638183.freep.cn/638183/svgdr/svgdr.mod.min.js';
    	var dr = Dr.dr(msvg);
    
    	var points = dr.sun(35, 200, 190);
    	dr.polygon(points, 'none', 'red', 1).set('fill-rule', 'evenodd');
    	var len = dr.elm.getTotalLength();
    	dr.elm.style.setProperty('--len', len);
    	dr.elm.onanimationend = () => dr.elm.setAttribute('fill', 'pink');
    </script>
    
  • TA的每日心情
    开心
    昨天 21:14
  • 签到天数: 437 天

    连续签到: 7 天

    [LV.9]以坛为家II

    502

    主题

    1333

    回帖

    1万

    积分

    社区管理员

    积分
    13557

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

     楼主| 发表于 昨天 21:22 | 显示全部楼层
    一楼,绘制的是太阳花。步骤:

    (一)获取太阳花点数据(代码 21 行);
    (二)绘制多边形图案(代码 22 行),使用的 points 是上一步的数据(sun方法);
    (三)获取图案描边总长度(代码 23 行);
    (四) 将上一步拿到的多边形描边总长度赋值给对应标签在CSS中所设置的变量 --len (代码 24 行);
    (五)监听多边形CSS动画执行完毕,给多边形填充颜色(代码 25 行)。

    【注】svgdr 绘制图形时返回该图形对象,例如,22 行绘制一个多边形,它返回的就是多边形标签对象即 polygon,用 dr.elm 表示,基于 dr.elm 紧挨着的后续操作都指向它,直至绘制新的图像。
  • TA的每日心情
    开心
    昨天 21:14
  • 签到天数: 437 天

    连续签到: 7 天

    [LV.9]以坛为家II

    502

    主题

    1333

    回帖

    1万

    积分

    社区管理员

    积分
    13557

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

     楼主| 发表于 昨天 21:23 | 显示全部楼层
    dr.sun 方法参数说明:

    dr.sun(num, R, r);

    num,花瓣数;
    R: 太阳花从圆心到外部边界的半径(一般取值为长宽的一般,太阳花绘制在长宽一致的画布上);
    r: 太阳花绘制半径
  • TA的每日心情
    奋斗
    昨天 10:42
  • 签到天数: 520 天

    连续签到: 9 天

    [LV.9]以坛为家II

    191

    主题

    867

    回帖

    1万

    积分

    社区贵宾

    积分
    13161

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

    发表于 昨天 22:43 | 显示全部楼层
    演示漂亮~谢谢友友精彩分享
    该会员没有填写今日想说内容.
    返回列表 发新帖
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

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

    GMT+8, 2026-6-15 02:28 , Processed in 0.145682 second(s), 22 queries .

    Powered by Discuz! X3.5

    © 2001-2020 Comsenz Inc.

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