You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用JavaScript实现CSS :active等效效果,让音频在鼠标按下时播放

解决方案

现有代码使用的onclick事件触发时机为鼠标按下后抬起时,要实现按下即触发的效果,直接将事件替换为onmousedown即可。该事件会在鼠标按键按下的瞬间立即执行,完全匹配你需要的类似CSS:active的触发逻辑。

注:上述交互属于用户主动触发的行为,符合浏览器的媒体自动播放策略,不会触发权限拦截。


基础版本(按下即播放,播放完成后自动停止)

仅替换触发事件即可实现需求,额外加了重置播放进度的逻辑,重复按下时会从头开始播放,不需要可以删除对应行:

<!doctype html>
<html>
<head>
  <title>Audio</title>
</head>
<body>
  <script>
    function play() {
      var audio = document.getElementById("audio");
      // 重复按下时重置播放进度,不需要可删除该行
      audio.currentTime = 0;
      audio.play();
    }
  </script>
  <!-- 将onclick替换为onmousedown -->
  <input type="button" value="PLAY" onmousedown="play()">
  <audio id="audio" src="https://interactive-examples.mdn.mozilla.net/media/cc0-audio/t-rex-roar.mp3"></audio>
</body>
</html>

进阶版本(按下播放、松开暂停,完全匹配:active交互逻辑)

如果需要实现按住播放、松开即停止的效果,可以新增暂停函数绑定onmouseup事件:

<!doctype html>
<html>
<head>
  <title>Audio</title>
</head>
<body>
  <script>
    const audio = document.getElementById("audio");
    function play() {
      audio.currentTime = 0;
      audio.play();
    }
    function pause() {
      audio.pause();
    }
  </script>
  <input type="button" value="PLAY" onmousedown="play()" onmouseup="pause()">
  <audio id="audio" src="https://interactive-examples.mdn.mozilla.net/media/cc0-audio/t-rex-roar.mp3"></audio>
</body>
</html>

内容的提问来源于stack exchange,提问作者r0naldinio

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 14:24:03