html 音乐播放器逻辑

请问要实现一个音乐播放器,是不是写完样式和交互之后,那把video元素隐藏,点击播放把音乐的src给到video把音乐的封面给到那个装封面地div就行?
我是这么想的,不知道对不对

你的想法基本上是正确的,在实现音乐播放器时,可以使用video元素标签来处理音频播放,同时通过CSS样式和交互来控制其外观和行为,可以参考下这个小示例,应该可以帮到你

<!DOCTYPE html>
<html>
<head>
  <title>音乐播放器</title>
  <style>
    .music-player .player {
      display: none; /* 初始状态下隐藏video元素 */
    }
  
    .music-player .cover {
      /* 设置封面样式 */
    }
  
    .music-player .controls {
      /* 设置控制按钮样式 */
    }
  </style>
</head>
<body>
  <div class="music-player">
    <div class="cover">
      <!-- 封面图像显示在这里 -->
    </div>
    <video class="player" controls>
      <!-- 音乐文件将在这里播放 -->
    </video>
    <div class="controls">
      <button class="play-button">播放</button>
    </div>
  </div>

  <script>
    // 获取元素
    const player = document.querySelector('.player');
    const cover = document.querySelector('.cover');
    const playButton = document.querySelector('.play-button');

    // 监听播放按钮点击事件
    playButton.addEventListener('click', () => {
      // 更新video的src和显示封面
      player.src = '音乐文件的URL';
      cover.style.backgroundImage = 'url(封面图像的URL)';

      // 显示video元素
      player.style.display = 'block';

      // 播放音乐
      player.play();
    });
  </script>
</body>
</html>


  • 这篇博客: 解决video动态切换src视频不改变问题中的 解决video动态切换src视频不改变问题 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 1、问题:

    在开发react项目中,有个需求是要动态的改变video中的视频。但是video标签中的src已经更新,视频却还是显示原来的视频,并未更新。

    2、产生原因:

    当 video 中存在 source 标签的时候,浏览器渲染之后会自动去获取地址,即便地址改变,浏览器也不会再去获取地址。

    3、有效的解决方案:

    法一:不使用source标签,直接在video中使用src,动态切换这里面的src

    <video src={'http://' + item.video} width="320" height="240" controls autoPlay preload="auto" style={{ objectFit: 'fill' }}></video>
    

    法二:使用插件:video-react
    安装:npm install video-react

    // 导入后使用
    <Player playsInline src={'http://' + item.video} />
    

    4、之前的无效尝试

    方法一
    使用video + source,在video 和 source中都使用src,在src更新后,利用video的load方法进行更新;

    <video id="myVideo" src={'http://' + item.video} width="320" height="240" controls autoPlay preload="auto" style={{ objectFit: 'fill' }}>
    	<source src={'http://' + item.video}></source>
    </video>
    
    // 当video更新后使用load方法重新加载
    document.getElementById("myVideo").load();
    

    效果
    src更新后,视频显示框不会再显示原来的视频了,但是很难加载到新的视频,大部分情况下是直接黑掉。