背景音乐部分跟视频播放部分出了点小问题,后来解决了,记录一下。
背景音乐基本需求:在背景右上角定位一个音乐开关,打开H5时自动播放,播放时开关一直旋转,点击关闭音乐,开关不旋转,还有如果播放视频时,音乐自动停止。
[TOC]
## 前言
做h5专题的时候我们经常需要添加背景音乐,重复的添加audio标签和控制已经让人厌烦,先本人本着社会主义精神将背景音乐所需要的代码进行封装(其实很早之前华哥就做过了)。使用的是函数式封装,而没有使用对象,因为感觉太简单不需要创建对象。
## 使用方法
~~~
<script src="http://www1.pconline.com.cn/zt/20160621/Gbgmusic_min.js"></script>
<script>
var bgMusic = new GbgMusic("http://www1.pconline.com.cn/zt/20160608/biyadi/bg.mp3");
</script>
~~~
## API说明
### 创建背景音乐对象:
如果手机支持背景音乐自动播放,则创建完对象后自动播放音乐。如果手机不支持自动播放背景音乐,则需要网友点击下页面或者点击下音乐播放按钮。
~~~
var bgMusic = new GbgMusic(src,top,left); //top、left可以省略默认是15px;
~~~
### 阻止自动播放
~~~
bgMusic.stopAuto();
~~~
### 停止音乐
~~~
bgMusic.pause();
~~~
### 播放音乐
~~~
bgMusic.play();
~~~
### 返回dom形式的音乐对象
~~~
bgMusic.getAudio();
~~~
## demo
http://www1.pconline.com.cn/zt/20160621/bgmusic.html
## 插件地址
压缩版插件地址:http://www1.pconline.com.cn/zt/20160621/Gbgmusic_min.js
## 源代码
~~~
/*初始化GbgMusic获取背景音乐对象*/
function GbgMusic(src,top,right){
return new _GbgMusic(src,top,right);
}
function _GbgMusic(src,top,right){
this.src=src;
this.top=top;
this.right=right;
this.audio=null;
this.musicBtn=null;
this.hasStop=false;
this.init();
}
//背景音乐初始化,背景音乐默认是自动播放且循环播放
_GbgMusic.prototype.init=function(){
var musicBtn=this.musicBtn=document.createElement("div"),
audio = this.audio=document.createElement("audio"),
styleNode = document.createElement("style");
styleNode.innerText=".GmusicBtn{width: 80px;height: 80px;overflow: hidden;position: absolute;top:"+(this.top?this.top:15)+"px;right:"+(this.right?this.right:15)+"px;z-index: 1000;background-image: url(http://www1.pconline.com.cn/zt/20160309/changma/image/other/playerBtn.png);background-repeat: no-repeat;background-position:0px 0px;}@-webkit-keyframes Grotate{0%{-webkit-transform:rotate(0deg);}100%{-webkit-transform:rotate(360deg);}}.Grotate{-webkit-animation:Grotate 5s linear infinite;}";
var bodyNode=document.getElementsByTagName("body")[0];
var frag = document.createDocumentFragment();
frag.appendChild(styleNode);
frag.appendChild(musicBtn);
frag.appendChild(audio);
bodyNode.appendChild(frag);
musicBtn.className="GmusicBtn Grotate";
audio.src=this.src;
audio.setAttribute("loop","loop");
audio.setAttribute("autoplay","autoplay");
var that = this;
bodyNode.addEventListener("touchstart",function(){
if(!that.hasStop){
that.musicPlay();
}
bodyNode.removeEventListener("touchstart",arguments.callee);
},false)
musicBtn.addEventListener("touchstart",function(e){
e.stopPropagation();
if(!audio.paused){
that.musicPause();
}else{
that.musicPlay();
}
},false)
}
_GbgMusic.prototype.musicPlay=function(){
var audio=this.audio,
musicBtn=this.musicBtn;
if(audio.paused){
musicBtn.style.backgroundPositi 0px";
musicBtn.className="GmusicBtn Grotate";
audio.play();
}
}
_GbgMusic.prototype.musicPause=function(){
var audio=this.audio,
musicBtn=this.musicBtn;
if(!audio.paused){
this.hasStop=true;
musicBtn.style.backgroundPositi -80px";
musicBtn.className="GmusicBtn";
audio.pause();
}
}
//停止自动播放
_GbgMusic.prototype.stopAuto=function(){
var audio=this.audio,
musicBtn=this.musicBtn;
this.hasStop=true;
audio.removeAttribute("autoplay","autoplay");
musicBtn.style.backgroundPositi -80px";
musicBtn.className="GmusicBtn";
audio.pause();
}
// 播放音乐
_GbgMusic.prototype.play=function(){
this.musicPlay();
}
// 暂停音乐
_GbgMusic.prototype.pause=function(){
this.musicPause();
}
//返回audio对象
_GbgMusic.prototype.getAudio=function(){
return this.audio;
}
~~~
## 参考网址
H5页面背景音乐,C33 360°旋转效果
https://www.cnblogs.com/shizq/p/5658539.html
H5分享页面背景音乐及播放视频
https://blog.csdn.net/weixin_42423019/article/details/80733601
- Layer无刷新不跳转弹框提示信息
- 整合ThinkPHP+实用代码
- TP整合Layer插件实现无刷新
- 自定义助手函数
- 添加信息失败后不跳转
- 三种无限级分类
- TP常用代码
- 自定义公共函数
- TP模型管理专题
- TP模型管理之添加模型
- sfox_newmodel.sql
- TP模型管理之删除模型
- TP模型管理之编辑模型
- TP模型管理之字段添加
- sfox_newmodel.sql_edit
- layer_hplus.js_edit
- TP模型管理之字段删除
- TP模型管理之字段编辑
- TP模型管理之预览模型
- TP模型管理之公共函数
- layer_hplus.js_修订一
- TP模型管理之预览模型静态页
- 后台内容管理系统
- 分类树显示
- 内容列表显示
- 信息发布
- 编辑信息
- layer_hplus.js
- myJs第一版
- myJs第二版
- myJs第三版
- myJs第四版
- TP5插件用法
- Datatables
- WebUploader
- bootstrap-fileinput
- UEditor
- 简单调用
- 路径问题
- 跨域多图上传
- 跨域单图上传
- UEditor图片跨域上传解决方案
- 定制工具栏图标
- ajaxFileUpload
- LayUI
- 图片上传
- layui分页
- 搜索页
- 搜索优化及删除
- Uploadify
- TP5前端应用
- 静态首页
- 前台首页功能实现
- 自定义标签库
- 前台模板继承应用
- 首页自定义标签改进
- 文章内容页
- 自定义标签改进
- 自定义标签修正
- 图片等比例自动缩放
- 后台权限管理
- 角色管理
- 规则管理
- 权限设置
- 会员管理
- 权限管理
- 前台登录注册功能
- 注册登录
- 阿里大于手机注册
- 阿里大于升级阿里云短信服务
- 自动登录完成
- PHP异位或加密实现自动登陆
- 微信开发
- 分享接口
- 静态页面实现微信分享
- 动态页微信分享
- 页面静态化
- 1-全站静态化前期配置
- 2-链接地址静态化
- TP5常用片段代码
- 加载静态资源路径与常量
- thinkphp5预定义常量
- 删除某文件夹的内容
- 解压插件包
- 异步提交插件
- 其他功能
- 背景音乐
- 手机访问PC网站自动跳转到手机网站代码
- 手机微信音乐MP3播放器
- 后盾之网页背景音乐
- 播放器宽度自适应
- 前台首页数据调用
- 视频列表
- 搜索分页
- H5解决苹果(IOS)不能自动播放音乐
- 清空缓存
- 文件处理常识
- 删除路径下的所有文件夹和文件
- 一键清空缓存
- 评论留言
- 格式化时间
- 替换微博内容的URL地址@用户与表情
- PHP正则理解
- jQuery评论插件
- TP空操作
- TP路由
- 跨域访问
- 设置请其头允许跨域请求
- 模板前台判断手机访问跳转手机网址代码
- PHP遍历一个文件夹下所有文件和子文件夹
- PHP获取视频的第一帧与时长
- TP5数据库
- 链式操作原理
- update替换字段部分内容
- 后台开发
- 后台登录页居中显示
- TP5自带验证码
- JS & JQuery专题
- 二级城市联动菜单
- 模板引擎
- 混合模板编译
- 黄永成TP微博开发
- 消息推送
- memcache安装
- 插件开发
- 插件介绍
- 插件钩子
- 浅谈初步理解钩子
- 插件钩子(hooks)分析
- 插件钩子简单理解
- 控制器调用插件
- 钩子通用处理函数
- 插件基类代码
- 插件测试代码
- 浅谈钩子与插件
- 技术综合
- 常用代码
- PHP
- 56个PHP开发常用代码片段(上)
- 56个PHP 开发常用代码片段(中)
- 56个PHP 开发常用代码片段(下)
- sublime text安装自动补全注释的插件
- 影音视频开发
- 视频
- H5视频直播扫盲
- 音乐
- 语音
- PHP实现语音播报功能
- MUI
- 窗体操作