【需求】h5页面添加背景音乐,支持微信、QQ、各种APP。

【实现思路】1、通过audio标签,设置自动播放,是一种方法,但是此方法只适合微信、QQ,并不兼容我司的APP,需要主动触发下播放事件。

      2、针对可以自动播放的渠道,通过this.audio.addEventListene监听playing事件,控制小喇叭的状态。

【知识点】audio标签、addEventListener、classList

【代码】封装了一个公共组件:

 <template>
<div class="music">
<audio src={{musicsrc}} id="Jaudio" class="media-audio" preload loop="loop" hidden="false"></audio>
<div class="icon"></div>
</div>
</template>
<script>
/* eslint-disable */
export default{
data() {
return {}
},
props: {
musicsrc: {}
},
methods: {
// 音乐背景
play() {
this.audio.play()
this.icon.classList.add('play');
this.icon.classList.remove('stop');
},
stop() {
this.audio.pause()
this.icon.classList.add('stop');
this.icon.classList.remove('play');
},
audioAutoPlay() {
this.audio.play();
var that=this;
//控制小喇叭的播放状态
this.audio.addEventListener("playing", function(){
that.icon.classList.add('play');
that.icon.classList.remove('stop');
});
this.audio.addEventListener("pause", function(){
that.icon.classList.add('stop');
that.icon.classList.remove('play');
});
document.addEventListener("WeixinJSBridgeReady", function () {
that.audio.play();
this.icon.classList.add('play');
this.icon.classList.remove('stop');
}, false);
this.icon.addEventListener("click", () => {
if (this.audio.paused) {
this.play()
} else {
this.stop()
}
}, false);
// 触发播放音乐效果,解决浏览器或者APP自动播放问题
document.addEventListener("touchstart", () => {
if(!this.isPlay) {
this.play();
this.isPlay = true;
}
}, false)
}, },
ready() {
this.audio = window.document.querySelector('.media-audio');
this.icon = window.document.querySelector('.icon');
this.audioAutoPlay();
}
}
</script>
<style rel="stylesheet/scss" lang="scss">
.music {
position:fixed;
z-index:1000;
top:50px;
right:20px; .icon{
width:60px;
height:50px;
background:url('https://pic.51zhangdan.com/u51/storage/dd/df9e5296-1fa9-f3c4-6151-afeab9c2f34d.png') no-repeat;
background-size: 100%;
&.play{
animation: 4s linear 0s normal none infinite rotate;
// animation-fill-mode:forwards;
// animation-play-state: running;
}
&.stop{
// animation: 4s linear 0s normal none infinite rotate;
// animation-fill-mode:forwards;
// animation-play-state: paused;
}
}
} @keyframes rotate{
from{transform:rotate(0deg)}
to{transform:rotate(360deg)}
}
</style>

组件调用:

 <template>
<bgmusic :musicsrc='musicbg'></bgmusic>
</template>
<script>
import bgmusic from '../../components/music/bgmusic.vue' export default {
data() {
return {
musicbg: "../../assets/music/musicbg.mp3",
}
}
} </script>

h5页面添加背景音乐的更多相关文章

  1. 给H5页面添加百分比的进度条,精确度高

    进度条样式地址:http://sandbox.runjs.cn/show/6vxbxjrf SVG圆环样式地址:http://sandbox.runjs.cn/show/3ho1qpe9 原理:由于H ...

  2. vue 页面 添加背景音乐

    背景音乐 添加背景音乐 并有单击事件   循环播放 <template> <div id="page"> <div style="width ...

  3. h5 页面点击添加添加input框

    h5 页面点击添加添加input框 前段时间有个需求,页面要能点击添加按钮控制input框的个数,当时感觉有点难,就没做,这两个又遇到了,没办法写了个简单的 效果图,加号增加,减号减少 直接上代码, ...

  4. H5页面背景音乐,C33 360°旋转效果

    在做H5页面的时候,经常会需要用到背景音乐,比如电子贺卡.动态音乐相册等,右上角有个360°旋转的音乐图标,点击可以控制音乐是否播放,那这个效果是如何实现的呢?我现整理了一下代码:  Demo  点击 ...

  5. 【干货】微信场景之H5页面制作免费工具大集合

    营销代有手段出,各领风骚数百天.要说现在哪些营销方式最能传播,屡屡刷爆朋友圈的H5页面肯定就是首当其冲的,提到H5页面,就立马想到"围住神经猫",上线微信朋友圈3天的时间便创造了用 ...

  6. 自定义H5页面规范

    查看详情页也可支持自定义H5页面,用来展示更多内容. 交互规范 分屏切换,支持横向和竖向,滑动指引需清晰 若详情页加载较慢,需设计loading页,给予用户友好的提示 如有视频,需在底部加上“建议在W ...

  7. 基于swiper的移动端H5页面,丰富的动画效果

    概述 通过运用swiper插件,制作移动端上下整屏滑动的H5页面,用来宣传或者简单注册等,可以嵌套H5音乐或者视频. 详细 代码下载:http://www.demodashi.com/demo/119 ...

  8. 微信h5页面audio标签在ios下不能自动播放

    背景介绍:在一个h5页面中,当用户提交表单到后台,后台返回的结果成功的话,开始自动播放背景音乐 出现的问题:在安卓手机上正常,iOS中没有反应 后来网上一番搜索后了解到时因为iOS不允许自动播放音乐, ...

  9. 移动端H5页面高清多屏适配方案

    背景 开发移动端H5页面 面对不同分辨率的手机 面对不同屏幕尺寸的手机 视觉稿 在前端开发之前,视觉MM会给我们一个psd文件,称之为视觉稿. 对于移动端开发而言,为了做到页面高清的效果,视觉稿的规范 ...

随机推荐

  1. uplift model学习笔记

    一.解决的问题: 通常的 Propensity Model 和 Response Model 只是给目标用户打了个分,并没有确保模型的结果可以使得活动的提升最大化:它没有告诉市场营销人员,哪个用户最有 ...

  2. windows系统下用VScode配置远程编辑服务器文件的环境!通过Rmate方法

    虽然公司电脑win可以通过Xshell通过SSH远程连接家中内网linux服务器了,但是只能用vim编辑文件有点不爽. 于是上网查询,windows下使用vscode远程编辑服务器文件的办法.参照博文 ...

  3. python3爬取咪咕音乐榜信息(附源代码)

    参照上一篇爬虫小猪短租的思路https://www.cnblogs.com/aby321/p/9946831.html,继续熟悉基础爬虫方法,本次爬取的是咪咕音乐的排名 咪咕音乐榜首页http://m ...

  4. 3-1 练习 HTML 总结

    1.段落 #段落 <div class="ui segment"> </div> #翻转 <div class="ui inverted s ...

  5. Trident整合MongoDB

    MongoDB是大数据技术中常用的NoSql型数据库,它提供的大量的查询.聚合等操作函数,对于大量查询的日志系统来说,该MongoDB是大数据日志存储的福音.Storm的高级编程技术Trident,也 ...

  6. 让NVelocity做更多的事,VS Extension+NVelocity系列

    我不知道园子里到底有多少人喜欢使用NVelocity这个模板引擎,其实说实话,如果现在让我选,我对Razor的喜好要比NVelocity或者T4等等的模板引擎更多一些,当然了,个人看法而已.只是我在公 ...

  7. runloop和线程有什么关系?

    每条线程都有唯一的一个RunLoop对象与之对应的 主线程的RunLoop是自动创建并启动 子线程的RunLoop需要手动启动 子线程的RunLoop创建步骤如下: 获得RunLoop对象后要调用ru ...

  8. 使用系统的某些block api(如UIView的block版本写动画时),是否也考虑循环引用问题?

    系统的某些block api中,UIView的block版本写动画时不需要考虑,但也有一些api 需要考虑 以下这些使用方式不会引起循环引用的问题 [UIView animateWithDuratio ...

  9. js实现类bootstrap模态框动画

    在pc端开发,模态框是一个很常用的插件,之前一直用的第三方插件,比如bootstrap,jQuery的模态框插件,最近还用了elementUI的.但是会发现其实动画效果都差不多,那么如何去实现这样一个 ...

  10. python学习总结 --函数基础

    函数基础 ### 函数简介 - 定义:具有特定功能的一段代码 - 优点: - 可以减少代码的重复书写 - 可以将功能的实现着和使用者分开,可以提高开发效率 - 分类: - 库函数:print.inpu ...