1.关于自动播放
有些app和浏览器不支持自动播放,必须用户手动触发,才能自动播放。有些app和浏览器,可以支持自动播放
2.ios的踩坑:背景音乐在调用Html2canvas()会重复播放,
背景音乐在调用Html2canvas()会重复播放,说明背景音乐在Html2canvas从DOM读取信息渲染成图片时,背景音乐在已有的播放音乐没有停止的情况下,又重复加载了一次,所以想到的解决方法就是在Html2canvas()在调用之前,背景音乐不自动播放。
this.$refs.audio && this.$refs.audio.removeAttribute('autoplay');
3.音频的动画的暂停与继续。
<div class="WxAudio">
<div class="audiobox"
@click="clickAudio"
:class="{'loop': playing || isClick}"
:style="{...styleObject}"
ref="audiobox"
>
<audio
class="audioContainer"
ref="audio"
:autoplay="isAutoPlay"
:controls="showControls"
:loop="isLoop"
@ended="ended"
@play="playEvent"
@pause="pauseEvent"
@canplay="readyPlay"
>
<source :src="src" />Your browser does not support the audio tag.
</audio>
</div>
</div>
.audiobox
width 35px
height 35px
border-radius 50%
position absolute
background-repeat no-repeat
background-size 100% 100%
&.loop
animation audioRotate 3s linear infinite
@-webkit-keyframes audioRotate
from
-webkit-transform: rotate(0deg);
to
-webkit-transform: rotate(360deg);
pauseEvent() {
if (!this.$refs.audiobox) return;
this.$refs.audiobox && (this.$refs.audiobox.style.animationPlayState = 'paused');
},
play() {
this.$refs.audio && this.$refs.audio.play().then(() => {
if (!this.$refs.audiobox) return;
this.$refs.audiobox.style.animationPlayState = 'running';
}).catch(() => {
});
},