上一期我们介绍了外观设计,这把我们聊聊让进度条跟随播放进度走
目录
预期效果
准备
- 在此之前,你需要有以下基础:
- 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>
- 最终效果:
- 默认是静音的,可以点击播放试试
lisinopril 15 mg tablets: lisinopril 20 mg canada – buy lisinopril
Предлагаем услуги профессиональных инженеров офицальной мастерской.
Еслли вы искали ремонт телевизоров samsung адреса, можете посмотреть на сайте: ремонт телевизоров samsung
Наши мастера оперативно устранят неисправности вашего устройства в сервисе или с выездом на дом!
Предлагаем услуги профессиональных инженеров офицальной мастерской.
Еслли вы искали ремонт телевизоров samsung сервис, можете посмотреть на сайте: ремонт телевизоров samsung
Наши мастера оперативно устранят неисправности вашего устройства в сервисе или с выездом на дом!
Introducing to you the most prestigious online entertainment address today. Visit now to experience now!
can i order generic clomid tablets can i buy generic clomid where to buy clomid prices
You’re so interesting! I don’t think I’ve read through anything like this before. So nice to find somebody with unique thoughts on this topic. Seriously.. thank you for starting this up. This web site is something that is needed on the internet, someone with a bit of originality.
https://azithromycinus.com/# zithromax for sale usa
10mg generic 10mg lisinopril: lisinopril 5 mg tabs – lisinopril 12.5 mg price
buy cytotec pills online cheap: buy misoprostol over the counter – Abortion pills online
https://vgo88.net/
buy cipro: ciprofloxacin generic – buy cipro without rx
Introducing to you the most prestigious online entertainment address today. Visit now to experience now!
cost generic clomid pills buying clomid prices where to buy clomid without prescription
prinivil 5mg tablet: lisinopril 25 mg cost – lisinopril 419
https://ciprofloxacin.cheap/# buy cipro online canada
Greetings! Very useful advice within this article! It is the little changes that produce the biggest changes. Thanks a lot for sharing!
ciprofloxacin generic: cipro 500mg best prices – buy cipro online canada
how to buy lisinopril: zestoretic 20 25 mg – lisinopril 20 mg price online
zestril over the counter: 25 mg lisinopril – lisinopril 10 best price
https://clomid.store/# clomid sale
zithromax 1000 mg online zithromax over the counter buy zithromax without presc
Introducing to you the most prestigious online entertainment address today. Visit now to experience now!
Loved the insight in this post. It’s very comprehensive and packed with helpful information. Fantastic effort!
You ought to take part in a contest for one of the greatest blogs on the web. I am going to recommend this blog!
prescription drug prices lisinopril: lisinopril 40 mg daily – where can i purchase lisinopril
cytotec pills buy online buy cytotec over the counter cytotec pills buy online
Abortion pills online: п»їcytotec pills online – buy cytotec online
https://ciprofloxacin.cheap/# cipro online no prescription in the usa
Nice post. I learn something new and challenging on sites I stumbleupon every day. It’s always interesting to read articles from other authors and practice something from their websites.
buy cytotec in usa: buy cytotec pills – cytotec abortion pill
https://lisinoprilus.com/# lisinopril with out prescription
buy lisinopril without a prescription: order lisinopril online united states – lisinopril pill 40 mg