tzMaker指令 lzRot() 绘制多叶草小播演示
<p>此前我们使用 tz.svgsonsRot 绘制了五叶草小播,它基于SVG矢量图形,获得更佳的效果。实现相同绘制功能还有一个 tz.lzRot() 指令,基于 HTML元素,使用CSS属性 clip-path 对N个子元素进行切割、均匀旋转构图,可放大缩小。二者都有一定难度,可通过学习实例代码熟悉掌握。</p><p><br></p>
<div class="codebox" data-prev="1">
<style>
@import 'https://638183.freep.cn/638183/web/tz/tz.e.css';
<txt-green>/* .leaf选择器制定单片叶子样式 */</txt-green>
.leaf {
position: absolute;
width: 100%;
height: 100%;
background: var(--cc);
<txt-green>/* 剪裁路径基于 100*100 视口 */</txt-green>
clip-path: path('M50 50 C10 -12, 90 -12, 50 50');
}
</style>
<div class="pa"></div>
<script type="module">
import TZ from 'https://638183.freep.cn/638183/web/tz/tz.e.js';
const tz = TZ.TZ('pa');
<txt-green>// 小播容器,定义id以便子元素认亲,使用 .wrap 类选择器</txt-green>
tz.add('div', 'player', 'wrap100', {
style: 'transform: scale(3);' <txt-green>// 放大三倍</txt-green>
});
<txt-green>// {option} 里是固定的元素配置,共四个参数,顺序不论</txt-green>
tz.lzRot(5, 'player', {
cc: 'green', <txt-green>// ① cc变量用于css变量 --cc</txt-green>
className: 'leaf', <txt-green>// ② 类选择器</txt-green>
<txt-green>//tag: 'div', // ③ 默认使用 div 标签</txt-green>
<txt-green>//angle: 360 // ④ 默认是360分配角度</txt-green>
});
</script>
</div>
<script type="module">
import linenumber from 'https://638183.freep.cn/638183/web/js/linenumber.js';
linenumber();
</script> 看到宽高都是100%,这个不知道是参照什么的100%{:4_204:} 原来两种方法都能做这种多个叶瓣的叶子的小播。
style: 'transform: scale(3);' 这个为什么要放大3倍啊,不能画的时候画大点么? 红影 发表于 2025-10-21 21:53
原来两种方法都能做这种多个叶瓣的叶子的小播。
style: 'transform: scale(3);' 这个为什么要放大3倍啊, ...
这和路径设计有关。clip-path的路径是实打实的路径数据,绝对像素单位,基于固定尺寸,所以需要放大缩小。
svg 则比较灵活,前提是设置好 viewBox,用viewbox规范的尺寸实际路径,而后,svg的宽高是对viewBox的自然伸缩。 红影 发表于 2025-10-21 21:51
看到宽高都是100%,这个不知道是参照什么的100%
这是HTML父子元素的关系。叶片放在 class="wrap100" 的元素中,是子元素,它绝对定位,父元素只要也定位,子元素的100%宽高是取父元素的宽高尺寸为自己的尺寸。
这是基本的HTML父子元素彼此都定位之后的尺寸规则。 马黑黑 发表于 2025-10-21 22:14
这和路径设计有关。clip-path的路径是实打实的路径数据,绝对像素单位,基于固定尺寸,所以需要放大缩小 ...
嗯嗯,知道了,svg里已经由viewBox调整了,这里的需要另外加语句进行调整。 马黑黑 发表于 2025-10-21 22:16
这是HTML父子元素的关系。叶片放在 class="wrap100" 的元素中,是子元素,它绝对定位,父元素只要也定位 ...
嗯嗯,这样就不用另外设置宽高了。 红影 发表于 2025-10-21 22:40
嗯嗯,这样就不用另外设置宽高了。
100~300共三个 红影 发表于 2025-10-21 22:39
嗯嗯,知道了,svg里已经由viewBox调整了,这里的需要另外加语句进行调整。
二者有区别,处理方法就不相同 马黑黑 发表于 2025-10-22 12:41
100~300共三个
嗯嗯,知道了{:4_204:} 马黑黑 发表于 2025-10-22 12:42
二者有区别,处理方法就不相同
二者其实是完全不同的方法呢。 红影 发表于 2025-10-22 23:08
二者其实是完全不同的方法呢。
是的吧 红影 发表于 2025-10-22 23:08
嗯嗯,知道了
有得就不用从头设计,省点事 马黑黑 发表于 2025-10-22 23:38
是的吧
根本思路都不一样。 马黑黑 发表于 2025-10-22 23:39
有得就不用从头设计,省点事
就是小播触碰的变化一样,都做好了,就直接选就行了。 红影 发表于 2025-10-23 22:33
就是小播触碰的变化一样,都做好了,就直接选就行了。
对 红影 发表于 2025-10-23 22:32
根本思路都不一样。
差不多的 马黑黑 发表于 2025-10-24 12:36
对
这样的封装是大宝库,想要什么就从里面取{:4_187:} 马黑黑 发表于 2025-10-24 12:36
差不多的
这个貌似差得比较多呢。 红影 发表于 2025-10-24 23:35
这个貌似差得比较多呢。
差很多也是差不多的