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">…</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音频插件的更多相关文章
- Wrangle – 响应式的,触摸友好的多选插件
Wrangle 是一个响应式,触摸友好的选择插件,支持 jQuery 以及 Zepto.Wrangle 为多项选择提供了一个独特的方法:通过画一条贯穿项目的线条来选择项目.它给你的应用程序的一种新的方 ...
- Glide.js:响应式 & 触摸友好的 jQuery 滑块插件
Glide.js 是一款响应式和对触摸友好的 jQuery 滑块.基于 CSS3 转换实现,并在低版本浏览器降级处理.Glide.js 简单,重量轻,快速,适用于智能手机,平板电脑和台式机.它支持 s ...
- 使用jQuery开发一个响应式超酷整合RSS信息阅读杂志
在线演示1 本地下载 申请达人,去除赞助商链接 如果大家喜欢阅读博客文章的话,可能都会使用RSS阅读器,今天这里我们将使用jQuery来开发一个响应式的RSS信息阅读应用,使用它你可以将你喜欢 ...
- 一个响应式框架——agera
Google在上周开源了一个响应式框架——agera,相信它会慢慢地被广大程序员所熟知.我个人对这样的技术是很感兴趣的,在这之前也研究过RxJava,所以在得知Google开源了这样的框架之后第一时间 ...
- 25款响应式,支持视网膜显示的 Wordpress 主题
响应式和现代设计风格的多用途 WordPress 主题与能够非常灵活的适应所有设备.而高级主题能够更大可能性的轻松定制.所有的主题是完全响应式的,您可以从主题选项中禁用/启用响应模式. 多用途的响应式 ...
- 使用media Queries实现一个响应式的菜单
Media queries是CSS3引入的一个特性,使用它可以方便的实现各种响应式效果.在这个示例中我们将会使用media queries实现一个响应式的菜单.这个菜单会根据当前浏览器屏幕的大小变化而 ...
- 一个响应式数据库框架SQLBrite,完美解决数据库和UI的同步更新!
相信小伙伴们在开发中或多或少都可能遇到过这样的问题:打开一个应用后,为了快速响应,先将数据库中的数据呈现给用户,然后再去网络上请求数据,请求成功之后将数据缓存至数据库,同时更新UI,但是我们经常会这样 ...
- media Queries实现一个响应式的菜单
使用media Queries实现一个响应式的菜单 Media queries是CSS3引入的一个特性,使用它可以方便的实现各种响应式效果.在这个示例中我们将会使用media queries实现一 ...
- 利用JS去做响应式布局
利用JS去做响应式布局 js动态改变布局方式 // 取浏览器可视区高宽 var lw = $(window).width(); var lh = $(window).height();// 页面加载完 ...
随机推荐
- 在使用Redis的客户端连接工具ServiceStack.Redis要注意的问题
在使用Redis的客户端连接工具ServiceStack.Redis要注意的问题 Redis是一个非常NB的内存级的数据库,我们可以把很多”热数据“(即读写非常多的数据)放入其中来操作,这样就减少 ...
- 【转】8张图理解Java
一图胜千言,下面图解均来自Program Creek 网站的Java教程,目前它们拥有最多的票选.如果图解没有阐明问题,那么你可以借助它的标题来一窥究竟. 1.字符串不变性 下面这张图展示了这段代码做 ...
- 再看erlang的socket部分基础
socket的选项里面的{packet,0}和{packet,raw}的区别 {packet,} erlang处理2字节大端包头 {packet,} erlang处理4字节大端包头 {packet,} ...
- hadoop作业调优参数整理及原理(转)
1 Map side tuning参数 1.1 MapTask运行内部原理 当map task开始运算,并产生中间数据时,其产生的中间结果并非直接就简单的写入磁盘.这中间的过程比较复杂,并且利用到了内 ...
- jetty-run运行报错的原因
- Apache HttpClient
HpptClient特性 1. 基于标准.纯净的java语言.实现了Http1.0和Http1.1 2. 以可扩展的面向对象的结构实现了Http全部的方法(GET, POST, PUT, DELETE ...
- Well, let's start everything from the very beginning.
帝都的霾仿佛亘古不变,不知觉2015年竟已快到尾声,而我在IBM也已呆了4个月.回顾过往多遇贵人,所获颇丰.最幸运的还是自己不忘初心,仍在不断成长.继续学习. 过去的几个月一直用WordPress,搭 ...
- POJ 1410 Intersection(计算几何)
题目大意:题目意思很简单,就是说有一个矩阵是实心的,给出一条线段,问线段和矩阵是否相交解题思路:用到了线段与线段是否交叉,然后再判断线段是否在矩阵里面,这里要注意的是,他给出的矩阵的坐标明显不是左上和 ...
- oracle 运维基础
setupDatabase() { runStr=" cd $BASE_INSTALL_DIR/database nohup ./runInstaller -silent -force -r ...
- RabbitMQ介绍4 - 编程(C#客户端示例)
C#终端的说明文档: http://www.rabbitmq.com/dotnet-api-guide.html 这里介绍使用RabbitMQ的几种典型场景. 1. 简单direct模式( http: ...