image.png

image.png

使用object-fit:fill做视频填满-css难点

  1. .move {
  2. position: absolute;
  3. left: 0;
  4. top: 0;
  5. right: 0;
  6. width: 100%;
  7. overflow-x: hidden;
  8. z-index: 2;
  9. video {
  10. height: 100vh;
  11. }
  12. }
  13. @media only screen and (min-width: 1200px) {
  14. .page {
  15. .move {
  16. object-fit:fill;
  17. video {
  18. width: 100%;
  19. height: 100%;
  20. }
  21. }
  22. }
  23. }

处理在移动端视频自动播放

  1. <div class="move">
  2. <video id="video-content" muted autoplay="true" loop="loop">
  3. <source
  4. src="https://www.hashnest.com/video/pool.mp4"
  5. type="video/mp4"
  6. />
  7. </video>
  8. </div>

muted

基于谷歌的安全性校验机制,可以允许自动播放,但是自动播放默认静音, 在chrome上测试良好

在移动端真机查看时, 背景视频卡住,无法自动播放,经过多次调试发现少了属性

playsinline -自动在原来文档流内播放

  1. <video id="video-content" muted autoplay="true" loop="loop" playsinline>
  2. <source
  3. src="https://www.hashnest.com/video/pool.mp4"
  4. type="video/mp4"
  5. />
  6. </video>

开发细节完善

一般而言10s以上的视频,需要2s左右的加载时间, 所以初始进入网页可能会造成卡顿
我们可以加入加载loading, 通过监听视频是否加载完成,决定loading的变量修改的时间

  1. <div class="loading" v-show="state.loading">
  2. <img src="@/assets/favicon.jpeg" alt="" />
  3. <span>Cloud Mining</span>
  4. <n-spin size="large" stroke="#000000"/>
  5. </div>
  1. state.loading = true;
  2. onMounted(() => {
  3. var vid = document.getElementById("myVideo");
  4. vid.oncanplaythrough = function () {
  5. state.loading = false
  6. };
  7. });