上一期我们介绍了外观设计,这把我们聊聊让进度条跟随播放进度走
目录
预期效果
准备
- 在此之前,你需要有以下基础:
- HTML/CSS/JS
- 了解一些<audio>标签的属性和事件
- Vue(数据绑定和事件绑定)
实现
- 还是上次的那个Html/css,但我们这把加入了:
- 最外围用div包裹,用于创建vue
- 添加了<audio>
- 显示音乐标签面板 (controls)
- 默认静音 (muted)
- 绑定事件:播放时长更新事件 timeupdate
- 绑定数据:音频文件资源链接 src
- 两个vue数据绑定
- cmusic_control_loadProgress_style (加载进度条长度)
- cmusic_control_progress_style (播放进度条长度)
- 修改部分css样式
- HTML:
<div id="root_div" class="cmusic_displayFlex_class" style="height:150px;justify-content:space-between;align-items: center;">
<!-- 音频 -->
<audio id="cmusic_audio" ref="cmusic_audio" controls muted
@timeupdate="audio_lengthChange()" :src="url_audio">
</audio>
<span id="cmusic_control_span_progressBar">
<div class="cmusic_displayFlex_class cmusic_control_progress_div" style="flex-direction: row;">
<span id="cmusic_control_span_loadProgress" :style="cmusic_control_loadProgress_style"></span>
<span id="cmusic_control_span_progress" :style="cmusic_control_progress_style"></span>
</div>
</span>
<div>
- CSS:
<style>
/*外框*/
#cmusic_control_span_progressBar{
border-radius: 50px;
height: 20px;
width: 100%;
display: inline-flex;
align-items: center;
position: relative;
background: transparent;
box-shadow: inset 2px 2px 4px #bcc5d6,
inset -2px -2px 5px #feffff;
border: 2px solid #d0f4ff;
justify-content: center;
transition: all 0.8s ease;
}
/*布局类*/
.cmusic_displayFlex_class {
width: 100%;
display: flex;
flex-direction: column;
margin-left: auto;
margin-right: auto;
}
.cmusic_control_progress_div {
position:absolute;
width:94% !important;
height:100%;
align-items: center;
}
/*进度条*/
#cmusic_control_span_progress,
#cmusic_control_span_loadProgress{
background: linear-gradient(90deg, #c4f4fe, #66ccff);
border-radius: 50px;
position: absolute;
width:100%;
height: 60%;
pointer-events: none;
transition: width 0.5s ease;
box-shadow: 2px 2px 10px #ccd3ff,
-2px -2px 10px #ccd3ff;
}
/*加载进度条*/
#cmusic_control_span_loadProgress {
background: linear-gradient(90deg, #abecd6, #fff9d2);
}
</style>
- 并在script标签内写js/vue代码:
<!-- 引入vue -->
<script src="https://unpkg.com/vue@3.2.33"></script>
<script>
const { createApp } = Vue
var cmusic_json = {
//数据
data() {
return {
url_audio:"https://blog.coolight.cool/wp-content/uploads/2022/05/大喜_洛天依.m4a",
cmusic_control_loadProgress_style:"width:80%",
cmusic_control_progress_style:"width:50%"
}
},
//函数
methods:{
//监听播放时长,修改进度条长度
audio_lengthChange:function(){
let caudio = this.$refs.cmusic_audio;
//duration是音频总时长
//如果音频元数据加载完成,才能获得其总时长,后续才能进行计算
if (!isNaN(caudio.duration)){
this.cmusic_control_progress_style = "width:" + (parseInt(caudio.currentTime / caudio.duration * 100)).toString() + "%;";
}else{
this.cmusic_control_progress_style = "width:0%;";
}
}
}
};
var cmusic_app = Vue.createApp(cmusic_json);
var cmusic_vue = cmusic_app.mount("#root_div");
</script>
- 最终效果:
- 默认是静音的,可以点击播放试试
http://kamagra.win/# п»їkamagra
Viagra tablet online Buy Viagra online cheap buy Viagra online
https://cenforce.pro/# cheapest cenforce
Purchase Cenforce Online: cenforce.pro – order cenforce
sildenafil oral jelly 100mg kamagra kamagra pills Kamagra 100mg price
Vardenafil online prescription: levitrav.store – Cheap Levitra online
Buy Cenforce 100mg Online: Purchase Cenforce Online – cenforce for sale
http://cenforce.pro/# cheapest cenforce
order cenforce: buy cenforce – Purchase Cenforce Online
Generic Tadalafil 20mg price Generic Tadalafil 20mg price cialis for sale
https://cenforce.pro/# cenforce for sale
http://viagras.online/# Cheap generic Viagra
http://levitrav.store/# Levitra generic best price
cheap propecia: cost generic propecia for sale – buying propecia pill
cytotec abortion pill cytotec online order cytotec online
cytotec abortion pill cytotec buy online usa buy cytotec online
https://lisinopril.network/# lisinopril 20mg daily
tamoxifen and uterine thickening: tamoxifen and depression – tamoxifen and uterine thickening
cipro 500mg best prices ciprofloxacin generic buy cipro cheap
tamoxifen warning: tamoxifen vs clomid – cost of tamoxifen
http://lisinopril.network/# lisinopril 5 mg buy
http://lisinopril.network/# zestoretic 10 12.5 mg
https://finasteride.store/# order propecia without dr prescription
purchase cytotec Cytotec 200mcg price Misoprostol 200 mg buy online
propecia price order generic propecia price propecia without insurance
buy cipro online: cipro online no prescription in the usa – where can i buy cipro online
https://finasteride.store/# generic propecia without dr prescription
buy ciprofloxacin over the counter: ciprofloxacin order online – where can i buy cipro online
http://ciprofloxacin.tech/# buy cipro cheap
Abortion pills online buy misoprostol over the counter buy misoprostol over the counter
cipro generic: ciprofloxacin order online – where can i buy cipro online
http://nolvadex.life/# where can i buy nolvadex
http://finasteride.store/# buying cheap propecia without prescription
http://cytotec.club/# buy cytotec
lisinopril 5 mg price drug lisinopril 5 mg lisinopril 4214
buy generic ciprofloxacin cipro ciprofloxacin order online
nolvadex online: tamoxifen 20 mg tablet – tamoxifen effectiveness
order cytotec online buy cytotec in usa buy cytotec
buy cytotec online fast delivery: Misoprostol 200 mg buy online – buy cytotec online
http://lisinopril.network/# lisinopril 5 mg uk price
https://cytotec.club/# cytotec buy online usa
tamoxifen menopause: should i take tamoxifen – arimidex vs tamoxifen bodybuilding
tamoxifen for breast cancer prevention tamoxifen and antidepressants natural alternatives to tamoxifen
http://finasteride.store/# cost cheap propecia online
http://lisinopril.network/# lisinopril 10
buying propecia tablets buy propecia for sale cost of cheap propecia without rx
cheap propecia for sale cost cheap propecia without insurance propecia rx
buy cytotec pills online cheap: buy cytotec over the counter – buy cytotec pills online cheap
cytotec pills online: cytotec abortion pill – buy cytotec online fast delivery
https://lisinopril.network/# lisinopril tabs 88mg