电子琴串串烧
<style>#papa { margin: -80px 0 0 calc(50% - 593px); width: 1024px; height: 640px; background: #aaa url('https://638183.freep.cn/638183/t23/1/dzqb.jpg') center/cover no-repeat; box-shadow: 3px 3px 20px #000; position: relative; z-index: 1; }
#mydiv { position: absolute; bottom: 60px; left: 60px; width: 160px; height: 80px; color: var(--border); text-shadow: 1px 1px 1px #000; background: #ddb2af; backdrop-filter: blur(20px); border: 6px dotted var(--border); border-radius: 80px 80px 0 0; opacity: .72; display: grid; place-items: end center; cursor: pointer; transform: perspective(2000px) rotateY(-33deg); --deg: 0; --border: hsla(20,80%,40%,.6); }
#mydiv::before { position: absolute; content: ''; width: 8px; height: 78px; background: var(--border); border-radius: 8px; transform-origin: center bottom; transform: rotate(var(--deg)); transition: transform .5s; }
</style>
<div id="papa">
<div id="mydiv"></div>
<audio id="aud" src="https://music.163.com/song/media/outer/url?id=1885233480" autoplay loop></audio>
</div>
<script>
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;};
mydiv.addEventListener('click', () => aud.paused ? aud.play() : aud.pause());
aud.addEventListener('timeupdate', () => {
let deg = 80 - Math.floor(Math.random()*160);
mydiv.style.setProperty('--deg',deg + 'deg');
mydiv.innerText = toMin(aud.currentTime) + '/' +toMin(aud.duration);
});
</script>
帖子代码
<style>
#papa { margin: -80px 0 0 calc(50% - 593px); width: 1024px; height: 640px; background: #aaa url('https://638183.freep.cn/638183/t23/1/dzqb.jpg') center/cover no-repeat; box-shadow: 3px 3px 20px #000; position: relative; z-index: 1; }
#mydiv { position: absolute; bottom: 60px; left: 60px; width: 160px; height: 80px; color: var(--border); text-shadow: 1px 1px 1px #000; background: #ddb2af; backdrop-filter: blur(20px); border: 6px dotted var(--border); border-radius: 80px 80px 0 0; opacity: .72; display: grid; place-items: end center; cursor: pointer; transform: perspective(2000px) rotateY(-33deg); --deg: 0; --border: hsla(20,80%,40%,.6); }
#mydiv::before { position: absolute; content: ''; width: 8px; height: 78px; background: var(--border); border-radius: 8px; transform-origin: center bottom; transform: rotate(var(--deg)); transition: transform .5s; }
</style>
<div id="papa">
<div id="mydiv"></div>
<audio id="aud" src="https://music.163.com/song/media/outer/url?id=1885233480" autoplay loop></audio>
</div>
<script>
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;};
mydiv.addEventListener('click', () => aud.paused ? aud.play() : aud.pause());
aud.addEventListener('timeupdate', () => {
let deg = 80 - Math.floor(Math.random()*160);
mydiv.style.setProperty('--deg',deg + 'deg');
mydiv.innerText = toMin(aud.currentTime) + '/' +toMin(aud.duration);
});
</script>
音乐都是老音乐,时长共 50 分钟,可以听个够 音乐播放/暂停控制器模拟乱序的简易节拍器,拼多多有卖,6毛钱一个。
简易节拍器的技巧,主要是半圆的CSS画法。可参阅这里的代码和解释:
https://www.huachaowang.com/forum.php?mod=viewthread&tid=67258&extra=page%3D1
节拍器的运行,由 audio 元素(id="aud")的 timeupdate 监听事件直接驱动,配合 #mydiv 的 transition 设定,最终运行形态就是酱紫了。transition 的值值得尝试。这个机制,火狐浏览器下的效果很生硬。
JS 的 toMin 函数是将秒数时间信息格式化为分钟结构,这个自定义函数使用率很高,在我的绝大多数提供有时间信息的音乐帖中都会使用,建议收藏这个函数,它在许多场合也会派上用场。它的调用方法:
toMin(秒数) 如果想要一个有规律的节拍器,可以考虑以下代码:
<style>
#mplayer {
position: relative;
width: 160px;
height: 80px;
color: var(--border);
text-shadow: 1px 1px 1px #000;
border: 6px dotted var(--border);
border-radius: 100px 100px 0 0;
display: grid;
place-items: end center;
cursor: pointer;
--border: hsla(20,80%,40%,.6);
}
#mplayer::before {
position: absolute;
content: '';
width: 8px;
height: 78px;
background: var(--border);
border-radius: 8px;
transform-origin: center bottom;
animation: swing .6s infinite alternate linear;
}
@keyframes swing {
from {transform: rotate(60deg); }
to {transform: rotate(-60deg); }
}
</style>
<div id="mplayer"></div>
问好朋友
欣赏学习了{:4_178:} 寻梦花园 发表于 2023-3-13 08:17
问好朋友
欣赏学习了
早上好 马黑黑 发表于 2023-3-13 08:10
如果想要一个有规律的节拍器,可以考虑以下代码:
有规律的不好玩,真的成了钟摆了,还是这样的好玩{:4_187:} 这个节拍器做在帖子里还是很漂亮的,而且非常适合这样的背景,黑黑的帖子太棒了{:4_199:} 真美,点赞。 欣赏学习!{:4_176:} 欣赏美乐。谢谢啦! 梦油 发表于 2023-3-13 11:32
欣赏美乐。谢谢啦!
{:4_190:} 红影 发表于 2023-3-13 08:44
有规律的不好玩,真的成了钟摆了,还是这样的好玩
钟摆也是不错的,有空弄个 焱鑫磊 发表于 2023-3-13 10:40
欣赏学习!
中午好 庶民 发表于 2023-3-13 10:28
真美,点赞。
感谢支持 红影 发表于 2023-3-13 08:46
这个节拍器做在帖子里还是很漂亮的,而且非常适合这样的背景,黑黑的帖子太棒了
一班一班{:5_106:} 这是哪家小闺女,弹得真好!{:4_174:} 想听下一首,或快进怎么办{:4_173:} 樵歌 发表于 2023-3-13 12:29
想听下一首,或快进怎么办
串起来的木有这个设置