上一期我们介绍了外观设计,这把我们聊聊让进度条跟随播放进度走
目录
预期效果
准备
- 在此之前,你需要有以下基础:
- 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>
- 最终效果:
- 默认是静音的,可以点击播放试试
cytotec buy online usa buy cytotec Abortion pills online
http://ciprofloxacin.tech/# cipro ciprofloxacin
lisinopril 10 mg pill: zestril 10 mg cost – prinivil 20mg tabs
buy cytotec online fast delivery purchase cytotec buy cytotec online
https://finasteride.store/# cost of cheap propecia tablets
https://ciprofloxacin.tech/# where can i buy cipro online
https://nolvadex.life/# tamoxifen breast cancer
buy cytotec online fast delivery: cytotec pills online – Cytotec 200mcg price
Abortion pills online cytotec abortion pill buy cytotec over the counter
ciprofloxacin generic price: buy generic ciprofloxacin – buy cipro
zestril cost price cost of lisinopril 40 mg lisinopril tabs 4mg
https://ciprofloxacin.tech/# cipro 500mg best prices
buy cytotec online: buy cytotec – cytotec abortion pill
http://ciprofloxacin.tech/# cipro 500mg best prices
https://lisinopril.network/# lisinopril 10 mg tablet cost
http://ciprofloxacin.tech/# purchase cipro
lisinopril pill lisinopril 20mg online buy lisinopril without a prescription
ciprofloxacin 500mg buy online: cipro generic – cipro online no prescription in the usa
lisinopril 20mg tablets lisinopril 10 mg prices lisinopril 10 mg online
cytotec abortion pill buy cytotec pills online cheap buy cytotec online
liquid tamoxifen: nolvadex half life – nolvadex side effects
https://finasteride.store/# cheap propecia
Misoprostol 200 mg buy online: cytotec abortion pill – buy cytotec online fast delivery
buy cytotec over the counter cytotec online buy cytotec pills online cheap
http://cytotec.club/# purchase cytotec
https://finasteride.store/# propecia without rx
https://nolvadex.life/# where to get nolvadex
http://finasteride.store/# order propecia without rx
order cytotec online п»їcytotec pills online buy cytotec over the counter
ciprofloxacin generic price buy cipro online without prescription antibiotics cipro
lisinopril 5 mg buy online: buy prinivil online – lisinopril pills
buy cytotec online: buy cytotec over the counter – cytotec pills buy online
buy ciprofloxacin buy generic ciprofloxacin cipro for sale
http://lisinopril.network/# lisinopril price uk
buy cytotec over the counter: Cytotec 200mcg price – Misoprostol 200 mg buy online
https://nolvadex.life/# tamoxifen pill
https://cytotec.club/# cytotec online
buy ciprofloxacin ciprofloxacin mail online buy cipro online
http://cytotec.club/# cytotec pills buy online
lisinopril generic 20 mg prinivil coupon lisinopril 40 mg daily
buy ciprofloxacin over the counter: buy ciprofloxacin – cipro 500mg best prices
buy cytotec over the counter: buy cytotec pills online cheap – buy cytotec in usa
https://ciprofloxacin.tech/# buy ciprofloxacin over the counter
buy cipro online canada: ciprofloxacin 500mg buy online – ciprofloxacin order online
https://cytotec.club/# cytotec abortion pill
http://ciprofloxacin.tech/# buy generic ciprofloxacin
tamoxifen pill tamoxifen reviews nolvadex pills
lisinopril 0.5 mg lisinopril 25 mg cheapest lisinopril 10 mg
http://ciprofloxacin.tech/# buy ciprofloxacin over the counter
https://ciprofloxacin.tech/# buy cipro online without prescription