加林森 发表于 2022-9-16 10:17

心灵入侵者 (学习老黑“秋天的梦”制作)

本帖最后由 加林森 于 2022-9-16 10:47 编辑 <br /><br /><style>
#papa { left: -214px; width: 1024px; height: 512px; background: tan url('https://pic.imgdb.cn/item/6323d7fa16f2c2beb19ea0b4.jpg') no-repeat center/cover; box-shadow: 3px 3px 20px #000; display: grid; place-items: center; overflow: hidden; position: relative; z-index: 1; }
#mplayer { position: absolute; bottom: 0; width: 300px; height: 90px; user-select: none; display: grid; place-items: center; cursor: pointer; }
#mplayer:hover #btnwrap, #mplayer:hover #prog { transform: translateY(var(--yy)); }
#mplayer:hover #btnwrap { background: linear-gradient(to top right, rgba(0,0,105,.45), rgba(200,0,0,.35)); border-radius: 50%; opacity: .75; }
#btnwrap, #prog { position: absolute;         display: grid; place-items: center; transition: .5s; }
#btnwrap { --yy: -15px; width: 40px; height: 40px; transform: rotate(45deg); border: 1px solid white; border-radius: 6px; opacity: .25; }
#btnplay { width: 20px; height: 20px; background: rgba(255,255,255,.45); clip-path: polygon(0 0, 0 100%, 100% 50%); }
#btnpause { width: 2px; height: 20px; border-style: solid; border-width: 0px 4px; border-color: transparent rgba(255,255,255,.45); display: none; }
#prog { --yy: 20px; width: 300px; height: 16px; border-radius: 10px; background: linear-gradient(90deg, rgba(0,0,255,.45), rgba(255,0,0,.35) 100%, transparent 0); border: 1px solid gray; font: normal 14px / 16px sans-serif; color: snow; }
#lrc { position: absolute; top: 20px; text-shadow: 1px 1px 1px #000; }
.lrcChar { margin: 2px; padding: 8px; width: 40px; height: 40px; text-align: center; border-radius: 20% 40%; font: bold 2em / 40px sans-serif; display: inline-block; text-shadow: 1px 1px 1px #000; opacity: .8; backdrop-filter: blur(20px); position: relative; }
#tree { position: absolute; bottom: 60px; right: 10px; }
.leaf { position: absolute; left: 60px; top: 0; width: 100px; transform: rotate(-160deg); offset-distance: 0; offset-path: path("M20 0 Q0 200, 100 200 Q340 220, 170 660"); animation: move 8s linear infinite; }
#dt{ position: absolute; width: 100px; height: 100px; top: -10px; left: 80px; }
@keyframes move { to { offset-distance: 100%;} }
</style>

<div id="papa">
<img id="dt" src="https://pic.imgdb.cn/item/6247e3c027f86abb2a56f17a.gif" alt="" />
      <img class="leaf" src="./pic/leaf.png" alt="" />
      <div id="mplayer">
                <div id="btnwrap"><span id="btnplay"></span><span id="btnpause"></span></div>
                <div id="prog">00:00 | 00:00</div>
      </div>
      <div id="lrc"></div>
</div>

<script>
let aud = new Audio();
let setColor = () => Math.random().toString(16).substr(-6);
let ranNum = (min,max) => Math.floor(Math.random() * (max - min + 1)) + min;

aud.src = 'https://music.163.com/song/media/outer/url?id=28785388.mp3';
aud.autoplay = true;
aud.loop = true;

btnwrap.onclick = () => aud.paused ? aud.play() : aud.pause();
prog.onclick = (e) => aud.currentTime = aud.duration * e.offsetX / prog.offsetWidth;
aud.addEventListener('pause', () => btnstate());
aud.addEventListener('play',() => btnstate());
aud.addEventListener('timeupdate', () => {
      prog.style.background= 'linear-gradient(65deg, rgba(0,0,255,.45), rgba(255,0,0,.35) ' + aud.currentTime / aud.duration * 100 + '%, transparent 0)';
      prog.innerText = toMin(aud.currentTime) + ' | ' + toMin(aud.duration);
});
let btnstate = () => aud.paused ? (btnplay.style.display = 'block', btnpause.style.display = 'none') : (btnplay.style.display = 'none', btnpause.style.display = 'block');
let toMin = (val)=> {
      if (!val) return '00:00';
      val = Math.floor(val);
      let min = parseInt(val / 60), sec = parseFloat(val % 60);
      if(min < 10) min = '0' + min;
      if(sec < 10) sec = '0' + sec;
      return min + ':' + sec;
}
let mkLrc = (text) => {
      let tstr = '';
      Array.from({length: text.length}).forEach((ele,key) => {
                tstr += `<span class="lrcChar" style='top: ${ranNum(-10, 10)}px; background: #${setColor()}; color: #${setColor()};'>${text.substr(key,1)}</span>`;
      });
      return tstr;
}
lrc.innerHTML = mkLrc('心灵入侵者');
</script>

加林森 发表于 2022-9-16 10:18

@马黑黑

红芍药 发表于 2022-9-16 10:51

队长真聪明。。{:4_199:}{:4_199:}

红影 发表于 2022-9-16 11:04

这个漂亮的,欣赏队长好制作{:4_187:}

加林森 发表于 2022-9-16 11:09

红芍药 发表于 2022-9-16 10:51
队长真聪明。。

就是玩嘛。{:4_189:}

加林森 发表于 2022-9-16 11:10

红影 发表于 2022-9-16 11:04
这个漂亮的,欣赏队长好制作

这个比例还合适吧。

红影 发表于 2022-9-16 11:16

加林森 发表于 2022-9-16 11:10
这个比例还合适吧。

嗯嗯,很完美{:4_187:}

加林森 发表于 2022-9-16 11:19

红影 发表于 2022-9-16 11:16
嗯嗯,很完美

阿弥陀佛,总算是及格了。{:5_161:}{:5_117:}

马黑黑 发表于 2022-9-16 12:25

欣赏队长的大作。鹰可以设计一条路线让它飞行的

加林森 发表于 2022-9-16 12:26

马黑黑 发表于 2022-9-16 12:25
欣赏队长的大作。鹰可以设计一条路线让它飞行的

哦,怎么设计呢?

马黑黑 发表于 2022-9-16 12:29

加林森 发表于 2022-9-16 12:26
哦,怎么设计呢?
这要读懂我的一些讲解,关于路径,我说了很多

加林森 发表于 2022-9-16 12:31

马黑黑 发表于 2022-9-16 12:29
这要读懂我的一些讲解,关于路径,我说了很多

好像有点明白的。

马黑黑 发表于 2022-9-16 12:33

加林森 发表于 2022-9-16 12:31
好像有点明白的。

要动手自己做路径,并让运动对象沿着该路线运动。做过一次,无需我解释什么。

加林森 发表于 2022-9-16 12:34

马黑黑 发表于 2022-9-16 12:33
要动手自己做路径,并让运动对象沿着该路线运动。做过一次,无需我解释什么。

嗯嗯,等会让它飞起来吧。

马黑黑 发表于 2022-9-16 12:39

加林森 发表于 2022-9-16 12:34
嗯嗯,等会让它飞起来吧。

不是简单的飞,而是设计一个曲线或折线或兼而有之

加林森 发表于 2022-9-16 13:39

马黑黑 发表于 2022-9-16 12:39
不是简单的飞,而是设计一个曲线或折线或兼而有之

知道了。

梦缘 发表于 2022-9-16 16:45

老师制作不错,欣赏问好!{:4_204:}

加林森 发表于 2022-9-16 16:47

梦缘 发表于 2022-9-16 16:45
老师制作不错,欣赏问好!

谢谢梦缘。下午好!

醉美水芙蓉 发表于 2022-9-16 17:38

加林森 发表于 2022-9-16 17:41

醉美水芙蓉 发表于 2022-9-16 17:38
欣赏队长佳作!队长家的老鹰又开始放飞了!

是啊。好像就在原地不动地飞。没有飞出去。
页: [1] 2
查看完整版本: 心灵入侵者 (学习老黑“秋天的梦”制作)