AudioPlayer.js,一个响应式且支持触摸操作的jquery音频插件

AudioPlayer.js是一个响应式、支持触摸操作的HTML5
的音乐播放器。本文是对其官网的说用说明文档得翻译,博主第一次翻译外文。不到之处还请谅解、之处。

JS文件地址:http://osvaldas.info/examples/audio-player-responsive-and-touch-friendly/audioplayer.js

你可以在右键点击上面的地址,然后选择另存为把JS文件保存到本地。

英文原文地址:http://osvaldas.info/audio-player-responsive-and-touch-friendly

Audio Player:响应式且支持触摸操作

几个月前,我做了一个Jquery插件,用自定义的HTMl代码来取代<audio>标签。通过写一些css你可以得到一个全新的、个性化的并且和功能和默认一样强大的播放器。没有办法直接修改元素的样式。但是html5文档模型中的元素有方法、属性、和事件,这样就可以很容易实现了。由DragonDean翻译,首发于码农自留地

总而言之,这个插件就是允许你自定义样式<audio>元素的样式。这就是为什么我制作了这个插件的原因。我希望播放器可以适应我门前的一个项目(商用IP电话-VOIP)的主题。audio元素提供IVR(交互式语音响应)功能,客户们可以建立自己的声音响应程序/菜单,记录、回放音频。

几个星期之前,我就这个插件为Codrops写了一篇深入介绍的文章,我推荐给那些在这个领域经验较少的人。收到了一些很有帮助的反馈,帮助我改进这个播放器。很明显,这还不是结尾,我希望在这也能收到您的反馈信息。由DragonDean翻译,首发于码农自留地

特点

在决定自己做这个插件之前,我对现有的可选方案做了一些小的调查。我有明确和严格的要求:(1)必须是轻量级的、可定制的、正确的。(2)必须能解决当前的问题,比如响应式的、支持触摸操作的。(3)必须解决了我目前没解决的问题。然而,没有一个通过筛选。事实上重点是我做的这个播放器是:

响应式的

为达到这个要求,所有的责任都在你的CSS。我的例子是响应式的,你也可以做一个非响应式的,虽然我不推荐这样做。响应式是好的网页体验的一个标志。

    可触摸操作

支持触摸操作也是好的网页体验的一个标志。有了这两项你就从设备和屏幕中独立出来了。工作已经完成了一半。

    自适应的

当浏览器完全不支持audio元素或是音频文件的时候,播放器自动更改为一个基于使用第三方插件的播放器(基本上是在mac上市quickTime,在windows上就是windows
media
player)单按钮(只有播放/暂停按钮)<embed/>的元素来播放因为文件。还有一种情况就是不支持javascript的浏览器。然后就调用浏览器的默认播放器。这也挺好的。

    原生的

播放器没办法直接就是原生的。插件支持audio元素的属性(src,autoplay,loop,preload)和标签(<sorce>)。基于这几点,“autoplay”和“loop”属性继承于刚提到了情况。

    实用的

关键的播放/暂停和回放进度控制,开关,增减控制以及音频的加载进度(缓存)等。

    无图

这个也依赖于你的css,我做的播放器完全使用css的,一个图片文件都没有用到。做这个以及改变大小都用了em元素。让播放器可以缩放,拉伸。

    无Flash

再见,flash。我现在不需要你。

轻量级的

压缩版的插件只有4KB大小。

使用方法

添加一个audio元素,设置你需要的属性并添加资源。你添加的资源越多就有越多的用户可以听到你的音频(因为没有一种音频格式支持所有的刘拉你)。由DragonDean翻译,首发于码农自留地

三个例子:

<audio src="audio.wav" preload="auto" controls></audio>

这个只加载audio.wav文件并且在点击播放按钮之前不会播放。另一个加载值(none,metadata)不会加载文件。

加载后自动循环播放文件可以采用这种方式:

<audio src="audio.wav" preload="auto" controls autoplay loop></audio>

指定多个音频格式来解决之前提到的问题(译者注:没有一种音频文件支持所有的浏览器):、

<audio preload="auto" controls>
<source src="audio.wav" />
<source src="audio.mp3" />
<source src="audio.ogg" />
</audio>

神秘的控件?这是一个任何方式都不能影响插件的布尔属性,但是确保了不支持javascript时浏览器的默认播放器被显示且显示出控件。

最后一步-在audio元素上调用插件(如果之前没有引入jquery和插件文件的话,先引入):


<audio src="audio.wav" preload="auto" controls></audio>
<script src="jquery.js"></script>
<script src="audioplayer.js"></script>
<script>
$( function()
{
$( ‘audio‘ ).audioPlayer();
});
</script>

插件有一些可选的参数。最重要的就是classPrefix。传递的值会成为父元素的类名和子元素的类前缀名。其他参数可能只对非英语有利。举个默认值得例子:


$( ‘audio‘ ).audioPlayer(
{
classPrefix: ‘audioplayer‘,
strPlay: ‘Play‘,
strPause: ‘Pause‘,
strVolume: ‘Volume‘
});

HTML

在开始第一段提到的,插件被调用的时候,audio圆度会被一些html替换掉:


<div class="audioplayer audioplayer-stopped">
<audio src="audio.wav" preload="auto" controls></audio>
<div class="audioplayer-playpause" title="Play"><a href="#">Play</a></div>
<div class="audioplayer-time audioplayer-time-current">00:00</div>
<div class="audioplayer-bar">
<div class="audioplayer-bar-loaded"></div>
<div class="audioplayer-bar-played"></div>
</div>
<div class="audioplayer-time audioplayer-time-duration">&hellip;</div>
<div class="audioplayer-volume">
<div class="audioplayer-volume-button" title="Volume"><a href="#">Volume</a></div>
<div class="audioplayer-volume-adjust"><div><div></div></div></div>
</div>
</div>

当发生下列情况时会有一些类被分配给父元素:

  • 播放器播放时-音频正在播放

<div class="audioplayer audioplayer-playing">

  • 播放器停止-音频播放已经停止

<div class="audioplayer audioplayer-stopped">

  • 播放器静音-声音静音状态

<div class="audioplayer audioplayer-muted">

  • 播放器没有音量-音量调节不可用:

<div class="audioplayer audioplayer-novolume">

注意:当浏览器不支持audio元素或者不支持给出的音频文件时,播放器转为最小化模式,只显示播放器的播放/暂停按钮(因为embed元素在操作上是受限制的):

<div class="audioplayer audioplayer-stopped audioplayer-mini">
<embed src="audio.wav" width="0" height="0" volume="100" autostart="false" loop="false" />
<div class="audioplayer-playpause" title="Play"><a href="#">Play</a></div>
</div>

提示:在插件初始化时使用classPrefix参数,你就可以在html中用你自己的值来替换每个音频播放器外观,这样就可以在一个网站里有多个不同外观的多媒体播放器了。

现在一切取决于你怎么用css来定义你的播放器样式。我将跳过这部分,直接举例,你可以随时查阅我在Codrops上关于怎么定义样式的文章。由DragonDean翻译,首发于码农自留地

Demo:

之前提到过很多次,我的播放器是响应式的,甚至不依赖媒体查询。我有一个安排来解释布局:

父元素.audioplayer是position:
relative;子元素.audioplayer-*是position:
absolute;

demo链接http://osvaldas.info/examples/audio-player-responsive-and-touch-friendly/ 
(译者注:由于是国外网站,加载时间可能稍微长点)

获取audioplayer.js(未压缩版:8KB),audioplayer.min.js (压缩版;
4KB).

本文由DragonDean翻译,首发于码农自留地,转载请注明出处!

AudioPlayer.js,一个响应式且支持触摸操作的jquery音频插件,布布扣,bubuko.com

时间: 2024-11-06 23:16:47

AudioPlayer.js,一个响应式且支持触摸操作的jquery音频插件的相关文章

【翻译】使用Ext JS设计响应式应用程序

原文:Designing Responsive Applications with Ext JS 在当今这个时代,用户都希望Web应用程序无论在形状还是大小上,既能在桌面电脑,也能在移动设备上使用.使应用程序能适应不同的需求渐成趋势.幸运的是,Ext JS 5提供了所有支持应用程序以符合任何屏幕尺寸.形状和方向的工具. responsiveConfig概述 要让Ext JS 5支持新的平板电脑,需要使用"responsiveConfig",一个强大的新功能,可以让应用程序根据屏幕大小和

使用jQuery开发一个响应式超酷整合RSS信息阅读杂志

在线演示1 本地下载 申请达人,去除赞助商链接 如果大家喜欢阅读博客文章的话,可能都会使用RSS阅读器,今天这里我们将使用jQuery来开发一个响应式的RSS信息阅读应用,使用它你可以将你喜欢的RSS文章以聚合的方式显示在同一个页面,类似一本在线的杂志或者刊物,你也可以自定义配置用来设定需要访问的RSS源,希望大家喜欢! 使用的js类库和jQuery插件: jQuery jQuery cookie jQuery socialist jQuery feed Cufon jquery placeho

响应式重构,如何把一个固定页面重构为一个响应式页面:

上周末时接到公司安排下来的任务, 要我一个人在一周内把一个项目里的所有固定页面转换为响应式的页面,14个页面,虽说做成响应式不难,但是,先理解别人的代码,然后通过修改别人的代码,把一个页面转换为一个响应式的页面,还是没有那么简单的,公司觉得这个任务简单,于是把这个任务交给了我这个新手. 在重构一个页面时,我的思路如下: 一.拿到一个页面,你首先要考虑这个页面我是该重新做呢还是在现有的基础上去修改呢? 我这是这么判断的,首先看他的html结构,是否符合响应式的要求,如果符合,就在现有的基础去修改,

做一个响应式网站需要多长时间

以传统的响应式建站模式来讲,做一个响应式网站需要的时间是很长的.抛开页面设计和模块的结合,光是网站的结构和网站布局就需要花费很长时间.还没计算建站前的准备工作,网站的策划等等.所以一般让企业对响应式网站望而止步的因素不单单是建站的费用,还有就是建站的时间过长,让网站的上线收到延迟,没有办法能够抢在黄金时间上线.那做一个响应式网站要多久呢?一般以企业展示型网站来统计,找建站公司来搭建大概需要3-6个月时间,如果是自己找开发团队时间大概要2-3个月时间.所以企业对于响应式网站既是爱,又是狠. 有什么

如何评定一个响应式网站的好坏

一个响应式网站的好坏,是否受人欢迎?这些都要取决于网站的整体情况,从网站建设到网站运营,每一个步骤和环境都需要很好的统筹规划.很多人评定一个响应式网站的好坏,都只是单单的从表面的迹象来看,并没有结合整体来评定.往往光看一个响应式网站的展现方式多么炫酷,功能多么强大,却没有看网站的内容.网站的结构.页面的衔接等等的方面,就评定说这是一个好网站. 好的响应式网站该具备什么样的标准?一个好的响应式网站最基本的要求:1.访问速度快2.网站稳定3.页面整洁4.结构清晰5.没有被搜索引擎处罚过 对于怎么样评

如何使用CSS绘制一个响应式的矩形

背景: 最近因为需要用到绘制类似九宫格的需求,所以研究了一下响应式矩形的实现方案. 有如下几种方案: 使用js来设置元素的高度 使用vw单位  div {width: 50vw; height: 50vw;} 使用伪元素设置padding的方式来实现正方形(也就是本次使用的方式) 实现一个正方形 1 .square 2 position: relative 3 width: 100% 4 5 &::before 6 content: '' 7 display: block 8 padding-t

js实现响应式瀑布流

导读:瀑布流,又称瀑布流式布局.是比较流行的一种网站页面布局,视觉表现为参差不齐的多栏布局,随着页面滚动条向下滚动,这种布局还会不断加载数据块并附加至当前尾部.最早采用此布局的网站是Pinterest,逐渐在国内流行开来.国内大多数清新站基本为这类风格,像花瓣网.蘑菇街.美丽说等. 最近在好多地方看到瀑布流的字眼,感觉真的很不错,于是就想自己能不能写一个呢,而且是响应式的.经过将近两天的研究,终于写出来了,先传几张图给大家看看最终的效果:      随着浏览器页面的大小调整.布局从四列逐渐变成三

利用JS去做响应式布局

js动态改变布局方式 // 取浏览器可视区高宽 var lw = $(window).width(); var lh = $(window).height();// 页面加载完毕后执行 $(function () {     // 加载完毕后设置body的高度和宽度     $(document.body).css({ "width": lw, "height": lh });     // 新的高度 = lh - (Navigation + Footer + Ba

如何给一个响应式数据添加一个属性 this.$set

this.$set(this.data,”key”,value’) Vue.set(vm.items,2,"ling") : 表示 把vm.items  这个数组的下标为2 的元素,改为"ling" Vue.set(vm.person,"age","26") Vue.set()向响应式对象中添加一个属性,并确保这个新属性同样是响应式的,且触发视图更新.它必须用于向响应式对象上添加新属性,因为 Vue 无法探测普通的新增属性 (