马黑黑 发表于 2025-11-30 07:47

Last Reunion

<style>
        @import 'https://638183.freep.cn/638183/web/tz/tz.v3.css';
        .pa { --offsetX: 81px; --bg: url('https://638183.freep.cn/638183/t24/w7/cilaos.webp') no-repeat center/cover; }
        .petal { width: 100%; height: 100%; top: -50%; background: url('https://638183.freep.cn/638183/small/flower.gif') no-repeat center/contain; transform-origin: 50% 100%; }
        .petal::after { content: ''; position: absolute; width: 100%; height: 100%; top: 100%; background: inherit; transform: scale(1, -1); }
</style>

<div id="pa" class="pa"></div>

<script type="module">
        import TZ from 'https://638183.freep.cn/638183/web/tz/tz.v3.js';
        const tz = TZ.TZ('pa');
        tz.add('audio', '', '', {src: 'https://music.163.com/song/media/outer/url?id=402073046'});
        tz.add('video', '', 'pd-vid', {src: 'https://img.tukuppt.com/video_show/2629112/00/01/93/5b4e8b08c6531.mp4'});
        tz.add('div', 'player', 'wrap100 rot-ani', {style: 'bottom: 100px; cursor: pointer'}).playmp3();
        tz.lzRot(3, 'player', {tag: 'div', className: 'petal', angle: 180});
        tz.bgprog().style('bottom: 30px; color: lemonchiffon');
        tz.fs().style('right: 20px; bottom: 20px');
</script>

马黑黑 发表于 2025-11-30 07:48

帖子代码
<style>
        @import 'https://638183.freep.cn/638183/web/tz/tz.v3.css';
        .pa { --offsetX: 81px; --bg: url('https://638183.freep.cn/638183/t24/w7/cilaos.webp') no-repeat center/cover; }
        .petal { width: 100%; height: 100%; top: -50%; background: url('https://638183.freep.cn/638183/small/flower.gif') no-repeat center/contain; transform-origin: 50% 100%; }
        .petal::after { content: ''; position: absolute; width: 100%; height: 100%; top: 100%; background: inherit; transform: scale(1, -1); }
</style>

<div id="pa" class="pa"></div>

<script type="module">
        import TZ from 'https://638183.freep.cn/638183/web/tz/tz.v3.js';
        const tz = TZ.TZ('pa');
        tz.add('audio', '', '', {src: 'https://music.163.com/song/media/outer/url?id=402073046'});
        tz.add('video', '', 'pd-vid', {src: 'https://img.tukuppt.com/video_show/2629112/00/01/93/5b4e8b08c6531.mp4'});
        tz.add('div', 'player', 'wrap100 rot-ani', {style: 'bottom: 100px; cursor: pointer'}).playmp3();
        tz.lzRot(3, 'player', {tag: 'div', className: 'petal', angle: 180});
        tz.bgprog().style('bottom: 30px; color: lemonchiffon');
        tz.fs().style('right: 20px; bottom: 20px');
</script>

马黑黑 发表于 2025-11-30 07:53

小播构图方式:

       使用指令 tz.lzRot() 做3个旋转元素,元素类名为 petal;.petal选择器带一个伪元素,复刻主元素的背景但做scale调整使之成为 96 衔接姿式。其实,如何设计也还应根据图片的特性而定。

红影 发表于 2025-11-30 08:56

.petal选择器和它的伪元素,构成了正反的两种图图,它们各按180度生成3个旋转元素,就有了这样的6个旋转元素的组合。漂亮{:4_187:}

红影 发表于 2025-11-30 09:00

这样翻转里的top: -50%;和伪元素里的top:100%;的设置,我还得使劲去理解一下,还是带着 transform-origin: 50% 100%;的设定的,如果没有这两个top,旋转中心还是挺好理解的,这两个top还是有点费解。

红影 发表于 2025-11-30 09:00

黑黑又带来了小播制作的新思路,很赞{:4_199:}

马黑黑 发表于 2025-11-30 12:51

红影 发表于 2025-11-30 09:00
这样翻转里的top: -50%;和伪元素里的top:100%;的设置,我还得使劲去理解一下,还是带着 transform-origin:...

.petal 加上伪元素后从占位层面看是一个整体,有50%的高度在小播容器外围,所以 .petal 要向上拉50%。

至于 .petal 的伪元素 top 设为100%,这是为了让 .petal 和其伪元素在 .petal 的底部衔接;.petal 的静态旋转设在 50% 100% 是因为它已经移动过,“元素+伪元素”作为整体的中心点现在是在 50% 100% 这个地方——这个地方是针对元素而言。

马黑黑 发表于 2025-11-30 12:52

红影 发表于 2025-11-30 08:56
.petal选择器和它的伪元素,构成了正反的两种图图,它们各按180度生成3个旋转元素,就有了这样的6个旋转元 ...

设计思路其实非常简单

马黑黑 发表于 2025-11-30 12:52

红影 发表于 2025-11-30 09:00
黑黑又带来了小播制作的新思路,很赞

简单玩也能玩出花样

杨帆 发表于 2025-11-30 13:43

小播构图新颖,谢谢马老师精彩分享{:4_190:}

霜染枫丹 发表于 2025-11-30 16:26

我事先码代码存下来,一下子看不懂,小花好看{:4_204:}{:4_187:}

清茶煮雪 发表于 2025-11-30 19:57

喜欢马老师的代码音画,马老师创作辛苦了。{:4_190:}我最怕代码了{:4_181:}

红影 发表于 2025-11-30 20:13

马黑黑 发表于 2025-11-30 12:51
.petal 加上伪元素后从占位层面看是一个整体,有50%的高度在小播容器外围,所以 .petal 要向上拉50%。

...

无论是旋转中心还是图片的位置,都是针对元素而言的,所以,因为考虑伪元素的底部衔接而做的设置,克服这个,需要提 50% 。

红影 发表于 2025-11-30 20:15

马黑黑 发表于 2025-11-30 12:52
设计思路其实非常简单

就那两个top需要想想,其他的还是能理解的。做出来的感觉简单,凭空想的时候可不简单呢{:4_187:}

红影 发表于 2025-11-30 20:16

马黑黑 发表于 2025-11-30 12:52
简单玩也能玩出花样

代码倒是真的简洁,这玩法还是挺新的啊,不简单呢{:4_187:}

马黑黑 发表于 2025-11-30 20:37

红影 发表于 2025-11-30 20:16
代码倒是真的简洁,这玩法还是挺新的啊,不简单呢

应该是简单的吧?就是那个 .petal CSS选择器的设置你一下子理解不到位

马黑黑 发表于 2025-11-30 20:38

红影 发表于 2025-11-30 20:15
就那两个top需要想想,其他的还是能理解的。做出来的感觉简单,凭空想的时候可不简单呢

几何思维能力因人而异,有的人要比划比划,有的人可以凭空思考

马黑黑 发表于 2025-11-30 20:39

红影 发表于 2025-11-30 20:13
无论是旋转中心还是图片的位置,都是针对元素而言的,所以,因为考虑伪元素的底部衔接而做的设置,克服这 ...
你可以把图案想象成一把加长的尺子:在原有基础上从脚底下延伸一倍的长度。这样就好理解了

马黑黑 发表于 2025-11-30 20:40

清茶煮雪 发表于 2025-11-30 19:57
喜欢马老师的代码音画,马老师创作辛苦了。我最怕代码了

代码和代数是一个道理,都是xyz的活儿

马黑黑 发表于 2025-11-30 20:40

霜染枫丹 发表于 2025-11-30 16:26
我事先码代码存下来,一下子看不懂,小花好看

{:4_190:}
页: [1] 2 3 4
查看完整版本: Last Reunion