【问题标题】:make style on html5 audio player timeline在 html5 音频播放器时间轴上制作样式
【发布时间】:2013-06-12 08:26:12
【问题描述】:

我想在 html5 音频播放器上做一个样式。

    <audio id="player" controls="controls">
        <source src="song.ogg" type="audio/ogg" /> 
        <!-- using mozilla firefox -->
        Your browser does not support HTML5 audio. Please upgrade your browser.
    </audio>

是否可以将 css 样式放在 html5 通用音频播放器时间轴上?

-谢谢。

【问题讨论】:

  • 我发现了一个类似但更笼统的问题here。看起来没有一个答案对您正在寻找的内容有帮助,并且只是重复了这里已经说过的内容。
  • 我通过在音频标签上应用 css 来设置图片中的边框半径和背景颜色。但不能在时间轴上这样做,这就是我想要做的。是否可以仅通过 css(而不是 javascript 播放器)在时间轴上制作样式?
  • 链接到基于@jessegibbons @jessegibbons advprog.blogspot.co.uk/2013/07/…的这个问题的跨浏览器信息

标签: css html5-audio


【解决方案1】:

以下代码粘贴到 Chrome 的开发者控制台后,会显示一个描述音频元素结构的文档片段:

var aud = document.createElement('audio');
document.querySelector('body').appendChild(aud);
aud.controls = true;

转到 chrome 调试器的元素选项卡会显示此文档片段:

<div>
 <div>
  <div>
   <input type="button">
   <input type="range" precision="float" max="0">
   <div style="display: none;">0:00</div>
   <div>0:00</div>
   <input type="button">
   <input type="range" precision="float" max="1" style="display: none;">
   <input type="button" style="display: none;">
   <input type="button" style="display: none;">
  </div>
 </div>
</div>

如果有一种方法可以在不重新定义内部结构(即 shadow DOM)的情况下更改时间显示或播放/暂停按钮的样式,那将是通过该文档片段。既没有函数也没有属性表明能够访问所述文档片段。

【讨论】:

  • 但在 Firefox 中,输入类型“范围”显示为文本框,看起来不像 chrome 或 Opera 范围。但是 html 音频时间线仍然出现在 Firefox 中,这不像 textbox。所以没有办法在通用 html5 播放器时间线上制作 css 样式吗?
  • 您刚刚证明媒体控制器不是统一的,根据定义,不是通用的。目前还没有 HTML5/CSS3 标准来设计媒体元素的内部工作方式,但我已经做了一些研究,如果我能成功,我会向你展示它是如何完成的。不幸的是,我只能从 Shadow DOM 中发现这些东西,所以在另行通知之前,只能包含支持 Chrome、Opera 和 Shadow DOM 的浏览器。
  • 请仔细阅读我的博文并告诉我你的想法。我知道它没有给你一种设计通用媒体控制器样式的方法,但我希望它能解释为什么没有一些自定义 HTML 是不可能的,以及如果可能的话,你将如何解决它。 advprog.blogspot.com/2013/07/…
  • 感谢您的博客链接。它解决了 chrome。但是歌剧呢?我尝试了 audio::-o-media-controls-timeline{background-color:green;width:800px;} 但这不起作用(-webkit-media-controls-timeline 适用于 chrome)。而且我仍然在使用 firefox 时遇到问题。由于输入类型“range”不能很好地支持 firefox,所以我无法使用时间线创建自己的播放器。所以没有任何方法可以为 firefox 设置时间线的样式吗?
  • 我刚刚测试了它,它可以在最新版本的opera(15.0+)上运行,因为opera现在是一个webkit浏览器。它也应该适用于 Safari,因为 Safari 是基于 Webkit 的。我知道它适用于 Maxthon,这是一个中文 webkit 浏览器。这是您通常需要担心的浏览器的一半,再加上 Maxthon。
【解决方案2】:

Youtube 有自己的 HTML5 视频时间线,以防有人想“尝试新事物”(或者只是破解一种简单的方法来下载他们的一些无广告 WebM 视频),所以我知道这是可能的。我猜你需要这样做:

 <audio id="player" ><!--notice how you get rid of the controls -->
        <source src="song.ogg" type="audio/ogg" /> <!-- using mozilla firefox -->
        Your browser does not support HTML5 audio. Please upgrade your browser.
    </audio>

如果您隐藏了音频播放器,您可以添加Event Listeners 以更新状态/进度。你肯定会想要至少使用 onTimeUpdate

同时,您可以使用带有边框半径 = (width/2) 的方形标签制作自己的 DOM 控制器,或者只使用 .我建议您查看Shadow DOM 以了解对用户和其他脚本隐藏功能的方法。 如果您只想向用户显示音乐播放了多远而不允许用户搜索,请使用标签或标签。否则,您可以使用标签并将其风格化。不要忘记添加一个 onInput 处理程序来跳过轨道。

编辑

我没有看到那张图片。你一定是在我回答的时候上传的。我建议您使用过滤器,但这可能不适用于图像以外的任何东西。尝试在其上设置一个透明的 div 并 allowing the user to click through it

编辑#2

事实证明,背景颜色会根据背景颜色对 Chrome 中的播放器(仅音频播放器)进行着色,但播放时间颜色不会随背景颜色或颜色改变颜色。您可以使用自定义播放器完全控制和统一您的风格,但这意味着您需要额外的工作。希望我的回答对您有所帮助。

【讨论】:

  • 是否可以在通用播放器上仅使用 css(播放器未隐藏)?
  • 对不起,这不是我想要的。
  • 我一直得出错误的结论 :~|如果没有深入研究,最后一次编辑是我能做到的最好的。
  • 由于浏览器之间的播放器不同,因此没有标准的方法来设置文本和滚动视图的样式并保留原始播放器。悬停时您甚至没有时间在 Chrome 中弹出。
  • 但时间线出现在 firefox,chrome,opera 中。有什么方法可以设置通用 html5 音频播放器的时间线?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多