基于 Vue.js 2.0实现酷炫自适应背景视频登录页面

本文讲述如何实现拥有酷炫背景视频的登录页面,浏览器窗口随意拉伸,背景视频及前景登录组件均能完美适配,背景视频可始终铺满窗口,前景组件始终居中,视频的内容始终得到最大限度的保留,可以得到最好的视觉效果。并且基于 vue.js 2.0 全家桶。具体效果如下图所示:

最终效果可以翻到文章最后观看。

基于 Vue.js 2.0实现酷炫自适应背景视频登录页面 

1. 背景视频 Web 页面的既有实现方式

国外有一个很好的网站 「Coverr」 ,提供了完善的教程和视频资源,帮助前端开发者构建酷炫的背景视频主页,网站效果示例如下图所示:

立即学习“前端免费学习笔记(深入)”;

基于 Vue.js 2.0实现酷炫自适应背景视频登录页面 

教程如下所示:

基于 Vue.js 2.0实现酷炫自适应背景视频登录页面 

从图中以及我的实践可以得出以下观点:

该教程使用了 jQuery 。由于我们想要使用 Vue.js,则 jQuery 可被完全替代掉。

该教程的 CSS、JavaScript 代码均过于冗余。

直接运行示例,发现效果并不好,浏览器窗口随意拉伸时,背景视频并不能完美适配「会出现黑边等瑕疵」,效果未达到预期。

2. 设计完美的背景视频 Web 页面

首先基于脚手架工具 vue-cli 来创建一个使用 vue-loader 的项目,构建完毕后,在相应目录下创建「.vue」文件,作为登录页面的模板文件,具体细节不再赘述。本节内容仅局限于该.vue文件。

2.1 HTML 模板

基于需求,对 Coverr 提供的 HTML 模板进行了细微修改,结果如下:

 

登录后复制

模板中, filter 类的 p 标签是一层背景视频的蒙版,可以通过蒙版控制视频的亮暗以及色温等。

video 标签为标准的 HTML5 标签,提供两种格式的视频以及一张图片占位符,背景视频在加载完毕后即自动播放。

Coverr 提供的原始模板,直接调试,页面只显示图片,而无法播放视频,通过使用 Vue.js 的 v-if 指令解决了该问题。

2.2 CSS

对原始模板 CSS 代码进行了大幅精简,修改后的 CSS 代码如下所示:

 .homepage-hero-module, .video-container { position: relative; height: 100vh; overflow: hidden; } .video-container .poster img, .video-container video { z-index: 0; position: absolute; } .video-container .filter { z-index: 1; position: absolute; background: rgba(0, 0, 0, 0.4); }

登录后复制

由于大多数样式均被项目全局修改了,所以在此专用于此模板的样式只剩下三条,简要说明如下:

容器 p 铺满浏览器窗口

蒙版 p 位于视频的上方,以起到蒙版的作用。

2.3 JavaScript 代码

 export default { name: 'login', data() { return { vedioCanPlay: false, fixStyle: '' } }, methods: { canplay() { this.vedioCanPlay = true } }, mounted: function() { window.onresize = () => { 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.fixStyle = {  height: windowWidth * 0.5625 + 'px',  width: windowWidth + 'px',  'margin-bottom': (windowHeight - videoHeight) / 2 + 'px',  'margin-left': 'initial'  } } else {  videoHeight = windowHeight  videoWidth = videoHeight / 0.5625  this.fixStyle = {  height: windowHeight + 'px',  width: windowHeight / 0.5625 + 'px',  'margin-left': (windowWidth - videoWidth) / 2 + 'px',  'margin-bottom': 'initial'  } } } window.onresize() } }

登录后复制

以上代码中最重要的部分是对 window 对象的 onresize 事件的监听。当窗口大小更改时,程序同步修改 video 及蒙版 dom 的尺寸,使得视频的最窄的边始终撑满浏览器的窗口,而长的边左右两边被均匀地裁减。

这样操作,可以使得视频不会被拉伸,视频中心始终位于浏览器的中心,并且在随意拉伸浏览器窗口时,视频的内容始终得到最大限度的保留,并且可以得到最好的视觉效果。

最终效果如下所示:

基于 Vue.js 2.0实现酷炫自适应背景视频登录页面 

相关推荐:

微信小程序实现image组件图片自适应宽度比例实例分享

实例详解Javascript防止图片拉伸的自适应处理

怎样实现图片大小自适应

以上就是基于 Vue.js 2.0实现酷炫自适应背景视频登录页面的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2791023.html

(0)
上一篇 2025年3月8日 19:04:45
下一篇 2025年2月18日 23:31:58

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • JSP页面间的传值方法总结

    jsp页面间传递参数是经常需要使用到的功能,有时还需要多个jsp页面间传递参数,下面这篇文章主要给大家介绍了关于jsp页面间传值方法的相关资料,文中介绍的非常详细,对大家具有一定的参考学习价值,对jsp感兴趣的朋友们下面来一起看吧。 前言 …

    编程技术 2025年3月8日
    200
  • 运用JSP+ajax实现分类查询功能的实例代码

    本篇文章主要介绍了运用jsp+ajax实现分类查询功能的实例代码,具有一定的参考和学习jsp的价值,对jsp感兴趣的可以了解一下本篇文章 这次是对小学期关于大学毕业生信息管理系统课程设计中遇到的一些问题和解决方法进行记录和分享。 题目要求:…

    编程技术 2025年3月8日
    200
  • JSP开发之Spring方法注入之替换方法实现

    这篇文章主要介绍了jsp开发之spring方法注入之替换方法实现的相关的jsp资料,对jsp感兴趣的朋友可以参考下本篇文章 JSP开发之Spring方法注入之替换方法实现 Spring提供了一种替换方法实现的机制,可以让我们改变某个bean…

    编程技术 2025年3月8日
    200
  • jsp实现上一页下一页翻页功能(示例代码)

    下面小编就为大家带来一篇jsp实现上一页下一页翻页功能(示例代码)。小编觉得挺不错的,现在就分享jsp源码给大家,也给大家做个参考。对jsp感兴趣的一起跟随小编过来看看吧 前段时间一直忙于期末考试和找实习,好久没写博客了。 这段时间做了个小…

    2025年3月8日
    200
  • jsp页面数据分页模仿百度分页效果(实例讲解)

    下面小编就为大家带来一篇jsp页面数据分页模仿百度分页效果(实例讲解)。小编觉得挺不错的,现在就分享jsp源码给大家,也给大家做个参考。对jsp感兴趣的一起跟随小编过来看看吧 废话不多说,直接上代码 请根据自己的项目、包名修改 nbsp;h…

    编程技术 2025年3月8日
    200
  • JSP Spring配置文件中传值的实例详解

    这篇文章主要介绍了jsp spring配置文件中传值的实例详解的相关jsp资料,对jsp感兴趣的朋友可以参考下本篇文章。 JSP Spring配置文件中传值的实例详解 通过spring提供方法,在配置文件中取传值  调用get方法     …

    编程技术 2025年3月8日
    200
  • 完全掌握jsonp的原理和实现方式

    针对跨域问题,本文主要给大家详细分析一下jsonp的原理,给大家图文详细分析一下jsonp的原理以及跨域问题的汇总。希望能够给你提供到帮助。 详细分析jsonp的原理和实现方式 一:跨域问题。 二,跨域产生的原因 Js是不能跨域请求。出于安…

    2025年3月8日 编程技术
    200
  • JSP 开发之Spring Boot 动态创建Bean

    这篇文章主要介绍了jsp 开发之spring boot 动态创建bean的相关jsp的资料,对jsp感兴趣的朋友可以参考下本篇文章 JSP 开发之Spring Boot 动态创建Bean 1、通过注解@Import导入方式创建 a、新建My…

    编程技术 2025年3月8日
    200
  • three.js通过模块导入实例分享

    本文主要给大家介绍了关于three.js中文文档学习之通过模块导入的相关资料,文中通过示例代码介绍的非常详细,对大家学习或使用three.js具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。 前言 本文主要给大家介绍了关于…

    编程技术 2025年3月8日
    200
  • AngularJS实现自定义指令方法详解

    本文主要介绍了angularjs实现自定义指令及指令配置项的方法,结合实例形式简单总结分析了angularjs自定义指令及指令配置项的实现技巧,需要的朋友可以参考下,希望能帮助到大家。 AngularJS自定义指令有两种写法: //第一种a…

    编程技术 2025年3月8日
    200

发表回复

登录后才能评论