马黑黑 发表于 2024-11-9 07:13

青春舞曲

<style>
        #mydiv { margin: 30px 0 30px calc(50% - 593px); width: 1024px; height: 640px; background: url('https://638183.freep.cn/638183/t24/4/youth.jpg') no-repeat center/cover; box-shadow: 4px 4px 8px gray; z-index: 1; position: relative; --state: running; }
        #msvg { position: absolute; left: 20px; top: 40%; cursor: pointer; animation: rot 10s linear infinite var(--state); }
        #msvg polyline { stroke-dasharray: 4; stroke-dashoffset: 0; transition: 1s; animation: flash 6s linear infinite var(--state); }
        #msvg:hover polyline { stroke: white; }
        #vid { position: absolute; width: 100%; height: 100%; object-fit: cover; -webkit-mask: radial-gradient(transparent 20%, red); pointer-events: none; }
        #fsbtn { position: absolute; left: 50%; bottom: 15px; color: white; padding: 4px 6px; border: 2px solid snow; border-radius: 8px; user-select: none; cursor: pointer; transition: .5s; }
        @keyframes flash { to { stroke-dashoffset: 160; } }
        @keyframes rot { to { transform: rotate(-360deg); } }
</style>

<div id="mydiv">
        <audio id="aud" src="https://music.163.com/song/media/outer/url?id=369301" autoplay loop></audio>
        <video id="vid" src="https://bpic.588ku.com/video_listen/588ku_video/23/08/29/17/22/02/video64edb8ba412ef.mp4" autoplay loop muted></video>
        <svg id="msvg" width="200" height="200"></svg>
        <span id="fsbtn"></span>
</div>

<scripttype="module">
import fscreen from 'https://638183.freep.cn/638183/web/mod/fscreen.js';
import Dr from 'https://638183.freep.cn/638183/web/mod/svgdr.js';
var dr = Dr.dr('msvg');

dr.symbol('sb', '0, 0, 100, 100');
var tt = 20;
for(var i = 0; i < tt; i ++) {
        dr.polyline('30 5, 50 50, 70 5', 'none', 'tan',3).transform(`rotate(${360 / tt * i} 50 50)`).addTo('sb');
}
dr.use('#sb');

msvg.onclick = () => {
        msvg.style.setProperty('--state', ['paused','running'][+aud.paused]);
        aud.paused ? (aud.play(), vid.play(), msvg.unpauseAnimations()) : (aud.pause(), vid.pause(), msvg.pauseAnimations());
};

fscreen.fs('mydiv', 'fsbtn');

aud.play().catch(_ => dr.svg.style.setProperty('--state', 'paused'));
</script>

马黑黑 发表于 2024-11-9 07:14

<h2>代码</h2>
<div id="hEdiv"><pre id="hEpre">
&lt;style&gt;
        #mydiv { margin: 30px 0 30px calc(50% - 513px); width: 1024px; height: 640px; background: url('https://638183.freep.cn/638183/t24/4/youth.jpg') no-repeat center/cover; box-shadow: 4px 4px 8px gray; z-index: 1; position: relative; --state: running; }
        #msvg { position: absolute; left: 20px; top: 40%; cursor: pointer; animation: rot 10s linear infinite var(--state); }
        #msvg polyline { stroke-dasharray: 4; stroke-dashoffset: 0; transition: 1s; animation: flash 6s linear infinite var(--state); }
        #msvg:hover polyline { stroke: white; }
        #vid { position: absolute; width: 100%; height: 100%; object-fit: cover; -webkit-mask: radial-gradient(transparent 20%, red); pointer-events: none; }
        #fsbtn { position: absolute; left: 50%; bottom: 15px; color: white; padding: 4px 6px; border: 2px solid snow; border-radius: 8px; user-select: none; cursor: pointer; transition: .5s; }
        @keyframes flash { to { stroke-dashoffset: 160; } }
        @keyframes rot { to { transform: rotate(-360deg); } }
&lt;/style&gt;

&lt;div id="mydiv"&gt;
        &lt;audio id="aud" src="https://music.163.com/song/media/outer/url?id=369301" autoplay loop&gt;&lt;/audio&gt;
        &lt;video id="vid" src="https://bpic.588ku.com/video_listen/588ku_video/23/08/29/17/22/02/video64edb8ba412ef.mp4" autoplay loop muted&gt;&lt;/video&gt;
        &lt;svg id="msvg" width="200" height="200"&gt;&lt;/svg&gt;
        &lt;span id="fsbtn"&gt;&lt;/span&gt;
&lt;/div&gt;

&lt;scripttype="module"&gt;
import fscreen from 'https://638183.freep.cn/638183/web/mod/fscreen.js';
import Dr from 'https://638183.freep.cn/638183/web/mod/svgdr.js';
var dr = Dr.dr('msvg');

dr.symbol('sb', '0, 0, 100, 100');
var tt = 20;
for(var i = 0; i &lt; tt; i ++) {
        dr.polyline('30 5, 50 50, 70 5', 'none', 'tan',3).transform(`rotate(${360 / tt * i} 50 50)`).addTo('sb');
}
dr.use('#sb');

msvg.onclick = () =&gt; {
        msvg.style.setProperty('--state', ['paused','running'][+aud.paused]);
        aud.paused ? (aud.play(), vid.play(), msvg.unpauseAnimations()) : (aud.pause(), vid.pause(), msvg.pauseAnimations());
};

fscreen.fs('mydiv', 'fsbtn');

aud.play().catch(_ =&gt; dr.svg.style.setProperty('--state', 'paused'));
&lt;/script&gt;
</pre></div>

<script type="module">
import hlight from 'https://638183.freep.cn/638183/web/mod/helight.js';
hlight.hl(hEdiv, hEpre);
</script>

马黑黑 发表于 2024-11-9 07:35

本帖配套 svgdr教程·容器元素 - 马黑黑教程专版 - 花潮论坛 - Powered by Discuz! 做 symbol 图形模板应用演示

梦江南 发表于 2024-11-9 07:45

欣赏学习老师的代码。辛苦了!{:4_190:}

醉美水芙蓉 发表于 2024-11-9 09:43

冬天的雨 发表于 2024-11-9 09:53

现在的播放器个个精彩,而且代码也是不多,越来越精炼了&#128524;

梦油 发表于 2024-11-9 10:30

听着欢快跳跃的乐曲,似乎我也年轻了几岁。

朵拉 发表于 2024-11-9 10:33

好看,学习了{:4_190:}

花飞飞 发表于 2024-11-9 11:07

这个实例小播就是昨晚看到的那个动态虚折线,stroke-dashoffset: 0和;to { stroke-dashoffset: 160;今天白老师这样写更明白,这是那个TO的数据变化一下下就看到移动了。。

花飞飞 发表于 2024-11-9 11:08

视频的径向渐变近来一直在用,现在发现挖得好妙,刚刚好去掉中间的LOGO。。且四周并不受影响。
我之前这么整的时候四周还是有影响的。。。{:4_173:}

花飞飞 发表于 2024-11-9 11:10

小播是ymbol的实例,触碰可以变色。。。
并且这个小播可以放大或者缩小~~
试的过程中发现更多种神奇的样式。。。
折线两端长度设成不一样,也像太阳光芒。。{:4_173:}

马黑黑 发表于 2024-11-9 12:53

梦江南 发表于 2024-11-9 07:45
欣赏学习老师的代码。辛苦了!

{:4_190:}

马黑黑 发表于 2024-11-9 12:53

醉美水芙蓉 发表于 2024-11-9 09:43
黑黑老师好早呀!

做帖赶早不赶晚

马黑黑 发表于 2024-11-9 12:53

梦油 发表于 2024-11-9 10:30
听着欢快跳跃的乐曲,似乎我也年轻了几岁。

甚好甚好{:4_196:}

马黑黑 发表于 2024-11-9 12:54

朵拉 发表于 2024-11-9 10:33
好看,学习了

{:4_190:}

马黑黑 发表于 2024-11-9 12:54

花飞飞 发表于 2024-11-9 11:07
这个实例小播就是昨晚看到的那个动态虚折线,stroke-dashoffset: 0和;to { stroke-dashoffset: 160;今天白 ...

from 值缺省为 0,这和CSS原理一样

马黑黑 发表于 2024-11-9 12:54

冬天的雨 发表于 2024-11-9 09:53
现在的播放器个个精彩,而且代码也是不多,越来越精炼了&#128524;

{:4_180:}

马黑黑 发表于 2024-11-9 12:55

花飞飞 发表于 2024-11-9 11:08
视频的径向渐变近来一直在用,现在发现挖得好妙,刚刚好去掉中间的LOGO。。且四周并不受影响。
我之前这么 ...

关键是比例吧

马黑黑 发表于 2024-11-9 12:55

花飞飞 发表于 2024-11-9 11:10
小播是ymbol的实例,触碰可以变色。。。
并且这个小播可以放大或者缩小~~
试的过程中发现更多种神奇的样 ...

新发现,挺好

花飞飞 发表于 2024-11-9 18:28

马黑黑 发表于 2024-11-9 12:55
关键是比例吧
就是比例找得好。。。这个挖法几乎不影响什么。
页: [1] 2 3
查看完整版本: 青春舞曲