不是那球,还是那球
本帖最后由 马黑黑 于 2022-5-20 07:45 编辑 <br /><br /><style>.circle {
display: flex;
justify-content: center;
align-items: center;
width: 100px;
height: 100px;
border: solid 10px transparent;
border-radius: 50%;
background-image: radial-gradient(ghostwhite, transparent), linear-gradient(to right, pink, green, red, gold);
background-origin: border-box;
background-clip: content-box, border-box;
cursor: pointer;
position: relative;
}
.circle::before {
position: absolute;
content: attr(data-per);
}
.hand {
position: absolute;
width: 6px;
height: 45px;
top: 6px;
border-radius: 50%;
background: rgba(200,20,20,.45);
transform-origin: bottom;
}
.hand::before {
position: absolute;
content: '';
width: 16px;
height: 16px;
left: -5px;
bottom: -8px;
border-radius: 50%;
background: rgba(0,0,0,.25);
}
</style>
<p><audio id="aud" src="https://music.163.com/song/media/outer/url?id=276703.mp3" controls="controls"></audio><br><br></p>
<div class="circle" data-per="0%">
<div class="hand"></div>
</div>
<script>
let circle = document.querySelector('.circle');
let hand = document.querySelector('.hand');
let aud = document.querySelector('#aud');
let current, task;
aud.addEventListener('timeupdate', function(){
task = aud.duration;
current = aud.currentTime;
setProgress(task,current);
});
circle.onclick = () =>{ aud.paused ? aud.play() : aud.pause(); };
function setProgress(tt,cc) {
if(tt <= 0 || cc <= 0) return false;
let prog = 100 * cc / tt;
hand.style.transform = `rotate(${360*prog/100}deg`;
circle.setAttribute('data-per', prog.toFixed(2) + '%');
}
</script>
原创代码:
<style>
.circle {
display: flex;
justify-content: center;
align-items: center;
width: 100px;
height: 100px;
border: solid 10px transparent;
border-radius: 50%;
background-image: radial-gradient(ghostwhite, transparent), linear-gradient(to right, pink, green, red, gold);
background-origin: border-box;
background-clip: content-box, border-box;
cursor: pointer;
position: relative;
}
.circle::before {
position: absolute;
content: attr(data-per);
}
.hand {
position: absolute;
width: 6px;
height: 45px;
top: 6px;
border-radius: 50%;
background: rgba(200,20,20,.45);
transform-origin: bottom;
}
.hand::before {
position: absolute;
content: '';
width: 16px;
height: 16px;
left: -5px;
bottom: -8px;
border-radius: 50%;
background: rgba(0,0,0,.25);
}
</style>
<p><audio id="aud" src="https://music.163.com/song/media/outer/url?id=276703.mp3" controls="controls"></audio><br><br></p>
<div class="circle" data-per="0%">
<div class="hand"></div>
</div>
<script>
let circle = document.querySelector('.circle');
let hand = document.querySelector('.hand');
let aud = document.querySelector('#aud');
let current, task;
aud.addEventListener('timeupdate', function(){
task = aud.duration;
current = aud.currentTime;
setProgress(task,current);
});
circle.onclick = () =>{ aud.paused ? aud.play() : aud.pause(); };
function setProgress(tt,cc) {
if(tt <= 0 || cc <= 0) return false;
let prog = 100 * cc / tt;
hand.style.transform = `rotate(${360*prog/100}deg`;
circle.setAttribute('data-per', prog.toFixed(2) + '%');
}
</script>
需要自动+循环播放、不显示播放器界面的,下面这句,
<p><audio id="aud" src="https://music.163.com/song/media/outer/url?id=276703.mp3" controls="controls"></audio><br><br></p>
改为,
<audio id="aud" src="https://music.163.com/song/media/outer/url?id=276703.mp3" autoplay="autoplay" loop="loop"></audio> 指针类仪表按钮的代码会多一些。原因:
一、HTML结构,不能使用单元素,因为使用单元素意味着要用伪元素,而JS对伪元素的操控能力十分有限(伪元素不属于DOM内元素,JS主要是对DOM操作)。
二、指针旋转360度要与进度的百分比建立关联,里面需要加入一个算法,虽然简单,但总会需要变量与计算代码。 仪表的颜色请修改第十一行:
background-image: radial-gradient(ghostwhite, transparent), linear-gradient(to right, pink, green, red, gold);
第一组颜色,radial-gradient是仪表里面的背景渐变颜色,也可改用线性渐变;第二组颜色是边框渐变颜色,top right是方向,其他颜色可增可减,可删可改,自己满意就好 播放器和仪表盘建立了关联,手动控制播放器的进度仪表盘会同步变化 这个换成指针加进度百分比了,不同的表现方式{:4_187:} 又看见一个新的播放器了。老黑厉害。这下又可以玩了。{:4_189:} 加林森 发表于 2022-5-20 11:57
又看见一个新的播放器了。老黑厉害。这下又可以玩了。
嗯,这个有这个的玩法 红影 发表于 2022-5-20 08:54
这个换成指针加进度百分比了,不同的表现方式
小小的改变,长相又不一样了 马黑黑 发表于 2022-5-20 12:08
嗯,这个有这个的玩法
嗯嗯,还得把图片装进去才行。 加林森 发表于 2022-5-20 12:09
嗯嗯,还得把图片装进去才行。
这是个工具,放到你的帖子里去就行啊 马黑黑 发表于 2022-5-20 12:11
这是个工具,放到你的帖子里去就行啊
嗯嗯。老黑,你去我那个帖看看,我的代码是不是有问题啊?怎么蝴蝶翻不出来呢? 加林森 发表于 2022-5-20 12:27
嗯嗯。老黑,你去我那个帖看看,我的代码是不是有问题啊?怎么蝴蝶翻不出来呢?
已经修改过 马黑黑 发表于 2022-5-20 13:03
已经修改过
看见了,谢谢啦! 加林森 发表于 2022-5-20 13:07
看见了,谢谢啦!
不客气 马黑黑 发表于 2022-5-20 18:08
不客气
嗯嗯。 加林森 发表于 2022-5-20 18:30
嗯嗯。
{:4_190:} 马黑黑 发表于 2022-5-20 19:08
谢谢! 加林森 发表于 2022-5-20 19:12
谢谢!
不客气的
页:
[1]
2