马黑黑 发表于 2023-4-6 13:13

黑氏快充播放器改进版

本帖最后由 马黑黑 于 2023-4-6 13:23 编辑 <br /><br /><style>
#papa { min-height: 300px; poisition: relative; }
.mplayer {
        width: 300px;
        height: 30px;
        border: 1px solid darkgreen;
        border-radius: 6px;
        filter: drop-shadow(2px 2px 6px black);
        cursor: pointer;
        position: relative;
        --ww: 0; --bg: dargreen; --time: .2s;
}
.mplayer::before, .mplayer::after {
        position: absolute;
        content: '';
        background: var(--bg);
}
.mplayer::before {
        width: var(--ww);
        height: 100%;
        border-radius: 6px;
        opacity: .65;
}
.mplayer::after {
        width: 12px;
        height: 20px;
        top: 5px;
        right: -12px;
        opacity: 1;
        animation: flash var(--time) infinite alternate;
}
@keyframes charging {
        to { width: 100%; }
}
@keyframes flash { from { background: darkgreen; } to { background: red; } }
</style>

<div id="papa">
        <div class="mplayer"></div>
</div>
<audio id="aud" src="https://music.163.com/song/media/outer/url?id=27571858" autoplay loop></audio>

<script>
(function() {
let mplayer = document.querySelector('.mplayer');
let mState = () => aud.paused
        ? (mplayer.style.setProperty('--bg', 'gray'), mplayer.style.setProperty('--time','.2s'))
        : (mplayer.style.setProperty('--bg', 'darkgreen'), mplayer.style.setProperty('--time','1s'));
mplayer.onclick = (e) => {
        let x = e.offsetX, w = mplayer.offsetWidth;
        if(x > w) aud.paused ? aud.play() : aud.pause();
        if(x < w) aud.currentTime = aud.duration*x/w;
};
mplayer.onmousemove = (e) => {
        let x = e.offsetX, w = mplayer.offsetWidth;
        if(x > w) mplayer.title = '播放/暂停';
        if(x < w) mplayer.title = '调节进度';
};

aud.addEventListener('play', mState, false);
aud.addEventListener('pause', mState, false);
aud.addEventListener('timeupdate', () => {
        mplayer.style.setProperty('--ww', aud.currentTime*mplayer.offsetWidth/aud.duration + 'px');
});
})();
</script>

马黑黑 发表于 2023-4-6 13:13

本帖最后由 马黑黑 于 2023-4-6 13:22 编辑

代码
<style>
.mplayer {
      width: 200px;
      height: 30px;
      border: 1px solid darkgreen;
      border-radius: 6px;
      filter: drop-shadow(2px 2px 6px black);
      cursor: pointer;
      position: relative;
      --ww: 0; --bg: dargreen; --time: .2s;
}
.mplayer::before, .mplayer::after {
      position: absolute;
      content: '';
      background: var(--bg);
}
.mplayer::before {
      width: var(--ww);
      height: 100%;
      border-radius: 6px;
      opacity: .65;
}
.mplayer::after {
      width: 12px;
      height: 20px;
      top: 5px;
      right: -12px;
      opacity: 1;
      animation: flash var(--time) infinite alternate;
}
@keyframes charging { to { width: 100%; } }
@keyframes flash { from { background: darkgreen; } to { background: red; } }
</style>

<div class="mplayer"></div>
<audio id="aud" src="https://music.163.com/song/media/outer/url?id=27571858" autoplay loop></audio>

<script>
let mplayer = document.querySelector('.mplayer');
let mState = () => aud.paused
      ? (mplayer.style.setProperty('--bg', 'gray'), mplayer.style.setProperty('--time','.2s'))
      : (mplayer.style.setProperty('--bg', 'darkgreen'), mplayer.style.setProperty('--time','1s'));
mplayer.onclick = (e) => {
      let x = e.offsetX, w = mplayer.offsetWidth;
      if(x > w) aud.paused ? aud.play() : aud.pause();
      if(x < w) aud.currentTime = aud.duration*x/w;
};
mplayer.onmousemove = (e) => {
      let x = e.offsetX, w = mplayer.offsetWidth;
      if(x > w) mplayer.title = '播放/暂停';
      if(x < w) mplayer.title = '调节进度';
};

aud.addEventListener('play', mState, false);
aud.addEventListener('pause', mState, false);
aud.addEventListener('timeupdate', () => {
      mplayer.style.setProperty('--ww', aud.currentTime*mplayer.offsetWidth/aud.duration + 'px');
});

</script>

马黑黑 发表于 2023-4-6 13:19

改进内容:

一、电池正极端(右边)播放时以慢闪烁方式、暂停时以快闪烁示意其可点击行为;
二、鼠标指针滑过电池,有操作提示语弹出,指示不同区域点击动作的含义。

红影 发表于 2023-4-6 14:29

这个好,不但有了闪动做提示,还增加了文字提示,黑黑真细心{:4_199:}

红影 发表于 2023-4-6 14:37

看到黑黑多加了一个播放暂停按钮,还调整了播放和暂停时闪动的不同速度,赶紧跟在后面学习{:4_199:}

梦油 发表于 2023-4-6 14:39

点击电池的正极,还可以控制“停止”或“进行”啊!

红影 发表于 2023-4-6 14:59

按你这个,我套用一下,也改好了{:4_173:}

马黑黑 发表于 2023-4-6 17:41

红影 发表于 2023-4-6 14:59
按你这个,我套用一下,也改好了

一般现有设想(设计),然后再去完成,这是基本流程。

完成过程碰上困难,就去找找文档。

马黑黑 发表于 2023-4-6 17:41

梦油 发表于 2023-4-6 14:39
点击电池的正极,还可以控制“停止”或“进行”啊!

马黑黑 发表于 2023-4-6 17:45

红影 发表于 2023-4-6 14:29
这个好,不但有了闪动做提示,还增加了文字提示,黑黑真细心

HTML页面里,元素都是可以有 title 的,document 内的元素的 title 指鼠标滑过弹出的提示语:

<div id="mydiv" title="花潮论坛提示您:过马路要小心">测试</div>

在JS中,我们可以动态给元素赋予不同的提示语

马黑黑 发表于 2023-4-6 17:45

红影 发表于 2023-4-6 14:37
看到黑黑多加了一个播放暂停按钮,还调整了播放和暂停时闪动的不同速度,赶紧跟在后面学习

还不错的吧

梦油 发表于 2023-4-6 18:16

马黑黑 发表于 2023-4-6 17:41


你的设计越来越先进了。

庶民 发表于 2023-4-6 18:40

代码玩的真厉害了。

马黑黑 发表于 2023-4-6 19:17

庶民 发表于 2023-4-6 18:40
代码玩的真厉害了。

一般般过得去

樵歌 发表于 2023-4-6 21:06

不提示还以是一只电子香烟呢{:4_173:}

马黑黑 发表于 2023-4-6 21:06

樵歌 发表于 2023-4-6 21:06
不提示还以是一只电子香烟呢

犯瘾了?

红影 发表于 2023-4-6 21:22

马黑黑 发表于 2023-4-6 17:41
一般现有设想(设计),然后再去完成,这是基本流程。

完成过程碰上困难,就去找找文档。

我不找文档,只找黑黑老大就行了{:4_173:}

红影 发表于 2023-4-6 21:24

马黑黑 发表于 2023-4-6 17:45
HTML页面里,元素都是可以有 title 的,document 内的元素的 title 指鼠标滑过弹出的提示语:

测试


黑黑厉害,张口就来,如数家珍{:4_199:}

红影 发表于 2023-4-6 21:25

马黑黑 发表于 2023-4-6 17:45
还不错的吧

是啊,这就不会找不到暂停键了{:4_173:}

马黑黑 发表于 2023-4-6 21:42

红影 发表于 2023-4-6 21:25
是啊,这就不会找不到暂停键了

找不着北挺烦人{:5_106:}
页: [1] 2 3
查看完整版本: 黑氏快充播放器改进版