在 html 中单击图像时播放声音

Posted

技术标签:

【中文标题】在 html 中单击图像时播放声音【英文标题】:play a sound on image click in html 【发布时间】:2016-01-09 16:51:18 【问题描述】:

我正在开发一个字母儿童学习网站,并希望在单击图像时播放声音。例如如果用户点击 A(image),则必须在背景中播放 A 的发音。不使用java脚本可以吗?有人可以帮忙吗?

【问题讨论】:

没有javascript?怎么样? 因为此时我只需要网站的原型。 我不知道这是否可能。代码虽然很简单。 ***.com/questions/10083788/… 【参考方案1】:

没有 JavaScript?我不这么认为,但 JavaScript 非常简单。

您可以使用document.getElementById('audioTag').play(); 播放已放入页面的音频元素 所以这应该有效:

<a onclick="document.getElementById('yourAudioTag').play();">
     <img src="yourSrc.jpg">
</a>

JSFiddle.

您甚至可以像这样将 onclick 方法放入您的图像标签中:

<img src="yourSrc.jpg" onclick="document.getElementById('yourAudioTag').play();">

然后您可以使用.pause() 方法暂停音频,如果您想加载一些新音频,则可以使用.load()。它的工作原理类似于 html5 视频标签。

如果您不想为音频使用元素,可以这样声明:

var audio = new Audio('audio_file.mp3'); audio.play();

并以同样的方式使用它。只是代替

document.getElementById('yourAudioTag').play();

你会使用

audio.play();

整个事情的一个例子看起来像这样:

 <a onclick="myAudioFunction('A');">
     <img src="A.jpg">
 </a>
 <a onclick="myAudioFunction('B');">
     <img src="B.jpg">
 </a>
 <script>
     var aAudio = new Audio('a.mp3');
     var bAudio = new Audio('b.mp3');
     function myAudioFunction(letter) 
         if(letter == 'a') 
             aAudio.play();
          else if(letter == 'b') 
             bAudio.play();
         
     
 </script>

【讨论】:

我正在使用 Visual Studio 2015。它无法解决这个问题。 这对我有用..您可以通过初始化其中的路径来使函数更通用 function myAudioFunction(word) var base = "C/"; var path=base.concat(word, ".mp3"); var textAudio = 新音频(路径); textAudio.play(); 【参考方案2】:

有趣的问题。

显然,您应该寻求 JavaScript 解决方案(例如 this post)。 引用css-tricks.com:

很遗憾,我们无法通过 CSS 告诉 &lt;audio&gt; 元素该做什么,因此我们需要 JavaScript。

但是你已经设置了一个相当不错的挑战。

&lt;audio&gt; 元素可以显示控件。在大多数浏览器中,播放按钮会在控件中从左开始出现。 因此,如果您将适当的&lt;audio&gt; 元素包装在您的字母元素(&lt;div&gt;/&lt;img&gt;/ 等)中,那么,对于&lt;audio&gt;,使用一点绝对定位魔法和较低的opacity,您可以把你的信“盖过声音”。因此,当用户点击字母时,他们实际上是点击了播放按钮。

如果您使用浏览器的默认控件,那么您将依赖于浏览器,因为不同浏览器的控件尺寸确实不同。但是,您可以create custom controls,或使用市场上可用的播放器(如JPlayer),以获得适合您的字母的恒定尺寸。

示例和演示:

下面的代码会让点击字母H播放马声,只要你在Chrome浏览器中测试一下。

CSS:

div#lH 
  position: absolute;
  width: 30px;
  height: 30px;
  overflow: hidden;
  z-index: 1;
  font-size: 25px;
  text-align:center;

audio#aH 
  position: absolute;
  top: -5px;
  left: -5px;
  z-index: 2;
  opacity: 0.01;

HTML:

<div id="lH">
  <audio controls id="aH">
    <source src="http://www.w3schools.com/html/horse.ogg" type="audio/ogg">
    <source src="http://www.w3schools.com/html/horse.mp3" type="audio/mpeg">
</audio>
H
</div>

这是JSFiddle。

【讨论】:

以上是关于在 html 中单击图像时播放声音的主要内容,如果未能解决你的问题,请参考以下文章

单击另一个按钮 swift 2.2 更改声音按钮图像

点击播放声音

Javascript 声音开始/停止和图像更改

可以在 html 5 中连续播放两次声音吗?

用户单击图标时如何在wp7中播放声音

显示图像并将其链接到声音