使用CSS在pseudoelements上发声

时间:2016-04-01 15:15:09

标签: css css3

我读到的东西让我大吃一惊,我想问是否可能。

根据w3school docs content属性可以获取url值,该值可以是声音?!

  

url(url)将内容设置为某种媒体(图像,a   声音,视频等。)

根据MDN

  

该值是指定外部资源的URI(例如   图片)。如果无法显示资源或图像,则表示资源或图像   忽略或一些占位符出现。

所以我试了一下

content: url('http://www.w3schools.com/html/horse.ogg');

没有任何反应。我的问题是,是否确实可以使用CSS触发声音效果,或者只是w3schools docs中的一个错误

编辑:这可能有用的示例

当然你可以使用JS触发声音,但有些情况下你不允许使用javascript或者用户没有启用javascript。所以想象一下,你向第三个网站提供一个元素,并且你只允许使用HTML + CSS(例如横幅),如果content确实接受了声音,那么就可以在悬停伪元素时触发声音效果

2 个答案:

答案 0 :(得分:5)

CSS2.1

  

该值是指定外部的URI   资源(如图像)。如果用户代理无法显示   资源必须要么保留它,就像它没有被指定一样   显示一些无法显示资源的指示。

旧的CSS3 Generated and Replaced Content Module工作草案(2003)说

  

如果URI可用且支持格式,则为元素   或者,伪元素成为替换元素,否则,成为下一个项目   在逗号分隔列表中使用,如果有的话。

较新的CSS Generated Content Module Level 3编辑的草稿(尚未准备好实施)说的基本相同:

  

对于URI中最后一个逗号分隔部分中的URI以外的URI   值,如果URI可用且格式受支持,那么   元素或伪元素成为替换元素,否则,   使用逗号分隔列表中的下一项(如果有)。

因此,似乎浏览器可能决定支持声音并将其渲染为替换元素,如<audio>。但很可能他们不会赢。

答案 1 :(得分:2)

W3C spec读取的内容略有不同

  

该值是指定外部资源(例如图像)的URI。如果用户代理无法显示资源,则必须将其保留为未指定,或者显示某些资源无法显示的迹象。

没有声音的引用...如果 可能,则没有关于如何显示/声音/激活的指示......以及至多,目前,这将取决于浏览器的实施。

所以......可以说,W3Schools错了......不是第一次。