接到需求说要做一个h5轮播图,同时配上背景音乐。

Html部分:

<!--音乐开始-->

<div id="music">

<div id="audio-btn" class="on" onclick="music.changeClass(this,'media')">

<audio loop="loop" src="data:images/SeeYouAgain.mp3" id="media" preload="preload"></audio>

</div>

</div>

<!--音乐结束-->

Css部分:

#music #audio-btn {

width: 44px;

height: 44px;

position: fixed;

z-index: 1000;

top: 30px;

left: 30px;

}

#music .on {

background: url('../images/music_on.png') no-repeat 0 0;

-webkit-animation: rotating 1.2s linear infinite;

animation: rotating 1.2s linear infinite;

}

#music .off {

background: url('../images/music_off.png') no-repeat 0 0;

}

@-webkit-keyframes rotating {

from {

-webkit-transform: rotate(0deg);

-moz-transform: rotate(0deg);

-ms-transform: rotate(0deg);

-o-transform: rotate(0deg);

transform: rotate(0deg);

}

to {

-webkit-transform: rotate(360deg);

-moz-transform: rotate(360deg);

-ms-transform: rotate(360deg);

-o-transform: rotate(360deg);

transform: rotate(360deg);

}

}

@keyframes rotating {

from {

-webkit-transform: rotate(0deg);

-moz-transform: rotate(0deg);

-ms-transform: rotate(0deg);

-o-transform: rotate(0deg);

transform: rotate(0deg);

}

to {

-webkit-transform: rotate(360deg);

-moz-transform: rotate(360deg);

-ms-transform: rotate(360deg);

-o-transform: rotate(360deg);

transform: rotate(360deg);

}

}

JS 部分:

var music = {

changeClass: function(target, id) {

var className = $(target).attr('class');

var ids = document.getElementById(id);

(className == 'on') ?

$(target).removeClass('on').addClass('off'): $(target).removeClass('off').addClass('on');

(className == 'on') ?

ids.pause(): ids.play();

},

play: function() {

var media = document.getElementById('media');

media.src = "images/SeeYouAgain.mp3";

media.play();

//document.getElementById("audio-btn").click(changeClass(this,'media'));

document.addEventListener("WeixinJSBridgeReady", function() {

var audioPlayer = document.querySelector('audio#media');

if(audioPlayer.paused) {

music.changeClass($(".off"), 'media')

}

media.play();

}, false);

}

}

music.play();

var audioPlayer = document.querySelector('audio#media');

if(audioPlayer.paused) {

music.changeClass($(".on"), 'media')

}

遇到的问题:

(1)安卓手机正常,苹果手机微信不能播放:

添加微信监听事件:

document.addEventListener("WeixinJSBridgeReady", function() {

media.play();

)}

(2)微信正常,苹果ipad上的qq不能播放

这个在各种百度后发现,还是不能播放,所以我们对播放器进行判断,更换停播样式:

var audioPlayer = document.querySelector('audio#media');

if(audioPlayer.paused) {

music.changeClass($(".on"), 'media')

}

(3)qq好了,微信出现样式是停播,但是实际在播放,所以把判断也要赋值到,监听后的方法中。

ok 各种正常,写个博客压压惊。

在h5页面上添加音乐播放的更多相关文章

  1. WordPress怎么在页面上添加目录

    要实现的如下功能,在页面上添加一个文章目录: 步骤:   1)在wordpress中,在Posts----Categories中建立目录, 2) 3)add new post,指定post所属的cat ...

  2. Inno Setup技巧[界面]欢迎页面上添加文字

    原文:Inno Setup技巧[界面]欢迎页面上添加文字 本文介绍在"欢迎页面添加文字"的两种方法. 界面预览: Setup技巧[界面]欢迎页面上添加文字" title= ...

  3. jquery,从后台查数据,给页面上添加树形。

    前台jquery+ajax请求往页面上添加树形的js代码 //传入当前点击节点的id,在后台代码查询出parentid=当前节点id的记录数,从而实现点击当前节点,往后台发送ajax请求,查询出子节点 ...

  4. 每天看一片代码系列(三):codepen上一个音乐播放器的实现

    今天我们看的是一个使用纯HTML+CSS+JS实现音乐播放器的例子,效果还是很赞的: codePen地址 HTML部分 首先我们要思考一下,一个播放器主要包含哪些元素.首先要有播放的进度信息,还有播放 ...

  5. 【转】一种解决h5页面背景音乐不能自动播放的方案

    原文:http://www.cnblogs.com/wmhuang/p/5452259.html --------------------------------------------------- ...

  6. 一种解决h5页面背景音乐不能自动播放的方案

    场景:微信.浏览器.App 普通解决方案:采用audio标签的autoplay属性 现象: 大部分IOS系统和少部分Android微信不支持自动播放 $解决方案:监听WeixinJSBridgeRea ...

  7. ios系统微信浏览器、safari浏览器中h5页面上拉下滑导致悬浮层脱离窗口的解决方法

    一. 运行环境: iphone所有机型的qq浏览器,safari浏览器,微信内置浏览器(qq浏览器内核)等. 二. 异常现象: 1. 大幅度上下滑动h5页面,然后停止滑动,有时候会影响到页面滚动,如局 ...

  8. 关于微信H5页面开发中音乐不自动播放的解决方法

    我想应该有很多人在做H5场景应用.H5微刊.H5微杂志的时候加入背景音乐吧(客户需求),相信很多人一定碰过不能自动播放的时候,即使是相同的iPhone 5s也有不播放的时候,很蛋疼吧!? 之前我的解决 ...

  9. 【转】h5页面audio不自动播放问题

    1.audio:html5音频标签 <audio loop src="/photo/aa.mp3" id="audio" autoplay preload ...

随机推荐

  1. C++中数据类型表示范围

    32位机器环境下结果如下: Type Size 数值范围 无值型void 0 byte 无值域 布尔型bool 1 byte true   false 有符号短整型short [int] /signe ...

  2. Linux安装C++环境

    centos 安装gcc-c++ yum install gcc-c++ 安装CMake yum install cmake 切换gcc版本 安装devtoolset-x 安装devtoolset-3 ...

  3. 主机ping虚拟机失败。虚拟机ping主机,可以ping通。

    原文:https://blog.csdn.net/ww1473345713/article/details/51490525 今天打开虚拟机,然后用Xshell远程连接,发现连接不上.按照以下顺序检查 ...

  4. docker 容器启动时设置环境变量source

    镜像启动时,自动执行的是~/.bashrc文件,所以,环境变量需要配置在该文件内,这样镜像启动时,可自动执行该文件,使环境变量生效. vi  ~/.bashrc ------------------- ...

  5. makecert 制作数字证书 给DLL加一个数字签名

    声明:文章整理自互联网 我仅需要给dll添加(替换)一个签名,所以我只看了第一步和第三步,其余的部分我没有测试,不能保证内容的是否正确. 看了很多关于DLL加签名的教程 大多是错误的 完全无法正常走下 ...

  6. JAVA学习笔记-数组的三种初始化方式

      package Study; public class TestArray02 { public static void main(String[] args){//声明 int[] a; int ...

  7. python中groupby函数详解(非常容易懂)

    一.groupby 能做什么? python中groupby函数主要的作用是进行数据的分组以及分组后地组内运算! 对于数据的分组和分组运算主要是指groupby函数的应用,具体函数的规则如下: df[ ...

  8. HDU - 6006 Engineer Assignment (状压dfs)

    题意:n个工作,m个人完成,每个工作有ci个阶段,一个人只能选择一种工作完成,可以不选,且只能完成该工作中与自身标号相同的工作阶段,问最多能完成几种工作. 分析: 1.如果一个工作中的某个工作阶段没有 ...

  9. tomcat端口号被占用,且杀进程不能够杀掉解决办法

    在电脑上安装了zookeeper以后,配置好tomcat启动发现端口号8009端口号被占用,报错如下: 采用netstat –ano 查询所有进程查看或者根据端口号查进程netstat -ano |f ...

  10. C++面试常见问题——07容器和迭代器

    容器和迭代器 vector.list.deque #include<iostream> #include<vector> #include<deque> #incl ...