vue视频登陆背景

前言

在vue中使用video做一个全屏视频背景,使用video加position定位即可

vue视频背景示例

注意

在google浏览器里面 是禁止视频自动播放的 因为google认为这对用户体验不好 。
解决方法 设置静音播放 muted=‘muted’ 这样就能正常播放了

完整代码

根容器设置position: relative;而子元素设置 position: absolute;(子绝父相)。
为避免表单内容区被覆盖,按css层级概念为内容盒子增大z-index

<template>
    <div class="login">
    // poster 设置封面在视频未加载播放时展示
	    <video autoplay loop class="video-bg" :style="videoStyle" muted="muted" poster="">
	      <source
	        src="https://assets.mixkit.co/videos/preview/mixkit-turquoise-ocean-background-with-foaming-waves-2091-large.mp4"
	        type="video/mp4"
	      >
	    </video>
	    <div class="login-form">这里写表单内容</div>
  </div>
</template>

<script>
export default {
  name: 'Login',
  data () {
    return {
      videoStyle: ''
    }
  },
  mounted () {
    this.handleWindowResize()
    window.addEventListener('resize', this.handleWindowResize)
    this.$once('hook:beforeDestroy', () => {
      window.removeEventListener('resize', this.handleWindowResize)
    })
  },
   methods: {
	    handleWindowResize () {
	      const windowWidth = document.body.clientWidth
	      const windowHeight = document.body.clientHeight
	      const windowAspectRatio = windowHeight / windowWidth
	      let videoWidth
	      let videoHeight
	      if (windowAspectRatio < 0.5625) {
	        videoWidth = windowWidth
	        videoHeight = videoWidth * 0.5625
	        this.videoStyle = {
	          height: windowWidth * 0.5625 + 'px',
	          width: windowWidth + 'px',
	        }
	      } else {
	        videoHeight = windowHeight
	        videoWidth = videoHeight / 0.5625
	        this.videoStyle = {
	          height: windowHeight + 'px',
	          width: windowHeight / 0.5625 + 'px',
	        }
	      }
	    },
    },
}
</script>

<style scoped>
  .login {
	  position: relative;
	  height: 100%;
	  // 可设置背景在视频加载前或失败时做显示
	  background: #fff url('') no-repeat fixed center center / cover;
  .video-bg {
    z-index: 0;
    position: absolute;
    height: 100vh;
    left: 0;
    right: 0;
  }
  .login-form {
    z-index: 1;
    position: absolute;
    top: 50%;
    right: 50%;
    transform: translate(-50%, -50%);
  }
}
</style>

handleWindowResize 函数

为了保证视频能填满背景,并随window变化而变化,咱们需要监听window resize。

window.addEventListener('resize', this.handleWindowResize)

this.$once(‘hook:beforeDestroy’)的作用?

既然注册了事件监听,那必然要去做销毁处理啦,
this.$once 监听一次事件,'hook:beforeDestroy’就是监听生命钩子"beforeDestroy", 第二个参数就是处理方法

this.$once('hook:beforeDestroy', () => window.removeEventListener('resize', this.handleWindowResize))

为什么要先执行一次 this.handleWindowResize()

因为挂载后 window 宽高没有变化 “resize” 也不会触发,所以要初始化获取移除宽高并应用到video

兜底处理

如果视频首帧还没加载处理或者视频加载失败,总不能白屏吧。

  1. 设置video的poster属性,封面图片
  2. 根组件加 background 图片

以上就是视频背景的分享 END

  • 9
    点赞
  • 57
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论
Vue是一种基于JavaScript的前端框架,它可以帮助我们构建交互式的Web界面。iOS是苹果公司的操作系统,运行在iPhone和iPad等设备上。背景视频是一种在网页或应用程序中播放的视频。因此,“Vue背景iOS视频”表示在Vue框架中使用iOS设备播放背景视频。 要在Vue中实现背景iOS视频,我们可以遵循以下步骤: 1. 首先,确保在Vue项目中安装了必要的依赖项,例如VueVue CLI等。 2. 接下来,我们需要准备一个iOS设备上的视频。可以使用合适的工具将视频转换为适用于Web播放的格式,如MP4或WEBM。确保视频文件大小适中,以便在网页加载时不会太慢。 3. 然后,在Vue组件中添加一个容器元素,用于放置视频。 4. 在Vue组件的相关生命周期钩子中,例如"mounted",使用适当的HTML元素和属性将视频添加到容器中。在这里,我们可以使用HTML的视频元素(<video>)和相关属性,如“src”、“autoplay”和“loop”等。这将确保视频在页面加载完成后自动播放,并且循环播放背景。 5. 最后,在Vue组件的CSS样式中,使用适当的选择器定位并修饰视频容器。可以设置其位置、尺寸和其他样式属性,以使其适应背景布局,并且与其他元素正确叠加。 通过上述步骤,我们就可以在Vue框架中实现背景iOS视频效果。当用户访问应用程序或网页时,视频将作为背景自动播放,并且可以循环播放。这种效果可以为用户提供更吸引人的视觉体验,并使应用程序或网页更具吸引力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

@引力波

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值