马黑黑 发表于 2024-11-6 07:48

Dream Away

<style>
        #mydiv { margin: 30px 0 30px calc(50% - 593px); width: 1024px; height: 640px; background: url('https://638183.freep.cn/638183/t24/webp2/dream.webp') no-repeat center/cover; box-shadow: 4px 4px 8px gray; z-index: 1; position: relative; --state: running; }
        #msvg { position: absolute; left: 55%; top: 20%; cursor: pointer; animation: rot 10s linear infinite var(--state); }
        #msvg:hover line { transition: 1s; stroke: orange; }
        #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 rot { to { transform: rotate(-360deg); } }
</style>

<div id="mydiv">
        <audio id="aud" src="https://music.163.com/song/media/outer/url?id=534540260" autoplay loop></audio>
        <video id="vid" src="https://bpic.588ku.com/video_listen/588ku_video/22/11/05/16/14/34/video63661b6a021fc.mp4" autoplay loop muted></video>
        <svg id="msvg" width="200" height="200" viewBox="-100 -100 200 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.defs('defs');
dr.g('lines').addTo('defs');
dr.line(-90, 0, -40, 0, 'tan', 10, 'round').addTo('lines');
dr.line(-40, 0, 40, 0, 'tan', '2').addTo('lines');
dr.line(40, 0, 90, 0, 'tan', 10, 'round').addTo('lines');
var all = 6;
Array(all).fill('').forEach( (_,key) => dr.use('#lines').transform(`rotate(${180 / all * key})`) );

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

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

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

马黑黑 发表于 2024-11-6 07:49

<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/webp2/dream.webp') no-repeat center/cover; box-shadow: 4px 4px 8px gray; z-index: 1; position: relative; --state: running; }
        #msvg { position: absolute; left: 55%; top: 20%; cursor: pointer; animation: rot 10s linear infinite var(--state); }
        #msvg:hover line { transition: 1s; stroke: orange; }
        #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 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=534540260" autoplay loop&gt;&lt;/audio&gt;
        &lt;video id="vid" src="https://bpic.588ku.com/video_listen/588ku_video/22/11/05/16/14/34/video63661b6a021fc.mp4" autoplay loop muted&gt;&lt;/video&gt;
        &lt;svg id="msvg" width="200" height="200" viewBox="-100 -100 200 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.defs('defs');
dr.g('lines').addTo('defs');
dr.line(-90, 0, -40, 0, 'tan', 10, 'round').addTo('lines');
dr.line(-40, 0, 40, 0, 'tan', '2').addTo('lines');
dr.line(40, 0, 90, 0, 'tan', 10, 'round').addTo('lines');
var all = 6;
Array(all).fill('').forEach( (_,key) =&gt; dr.use('#lines').transform(`rotate(${180 / all * key})`) );

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

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-6 07:50

本帖配套 svg教程:画直线 - 马黑黑教程专版 - 花潮论坛 - Powered by Discuz! 做应用演示

愤怒的葡萄 发表于 2024-11-6 07:51

音乐挺好听的。

朵拉 发表于 2024-11-6 09:07

好看 好听,学习了~~

梦江南 发表于 2024-11-6 09:48

这个小播像冰棍,黑黑老师辛苦了!

醉美水芙蓉 发表于 2024-11-6 11:46

红影 发表于 2024-11-6 20:21

有意思,如果粗线段从0出发,只要两段粗细线段就行了,如果粗线段在端头,需要画三段呢{:4_187:}

红影 发表于 2024-11-6 20:27

粗线在端头的,还用上了stroke-linecap 线帽式样,取了round。其实觉得线帽的square没什么用,就增长了一点,看不出呢。真的用的话要么缺省要么round就行了。

红影 发表于 2024-11-6 20:28

简单的直线还能有这么漂亮的效果,黑黑真是创意无限啊{:4_199:}

花飞飞 发表于 2024-11-6 21:00

刚看到这个小播以为是单个是狗尾草样式,然后旋转,是12个摆一圈。。。
刚才跟贴才发现,单条是三段组合,两头的比较宽,中间的比较窄,6个旋转而成。
我说每天的新效果都有意想不到的样式出场,此言不虚的。。又猜错了。{:4_170:}

花飞飞 发表于 2024-11-6 21:04

这个背景很梦幻,特别的是视频的选择,黄色粒子效果跟画面好搭啊。。中间挖了个洞去掉LOGO。却并不影响粒子的流动。。。还是十分完整。。
之前看以为加了个暗角渐变,现在想想应该是视频径向渐变时出现的。。。并不是特意整上去的。。{:4_173:}

花飞飞 发表于 2024-11-6 21:05

白老师找的音乐都太赞了~~跟贴时直接保留,跟我的贴子也很搭。{:4_173:}

马黑黑 发表于 2024-11-6 23:41

花飞飞 发表于 2024-11-6 21:05
白老师找的音乐都太赞了~~跟贴时直接保留,跟我的贴子也很搭。

都搭的

花飞飞 发表于 2024-11-7 19:23

马黑黑 发表于 2024-11-6 23:41
都搭的

那可真是顶级的好音乐。。{:4_173:}

小辣椒 发表于 2024-11-7 21:10

看见梦江南和朵拉的作业了,黑黑这个播放器漂亮,小辣椒会抽空套用一个玩玩{:4_205:}

小辣椒 发表于 2024-11-7 21:11

黑黑现在的制作越来越美了,效果杠杠的

马黑黑 发表于 2024-11-7 21:34

小辣椒 发表于 2024-11-7 21:11
黑黑现在的制作越来越美了,效果杠杠的

这不配合正在开发的 svgdr 吗?自家的东东要做好一点{:4_170:}

马黑黑 发表于 2024-11-7 21:34

小辣椒 发表于 2024-11-7 21:10
看见梦江南和朵拉的作业了,黑黑这个播放器漂亮,小辣椒会抽空套用一个玩玩

这个简单的

马黑黑 发表于 2024-11-7 21:34

花飞飞 发表于 2024-11-7 19:23
那可真是顶级的好音乐。。

还不错的
页: [1] 2
查看完整版本: Dream Away