vue3+vite+ts视频背景酷炫登录模板【英雄联盟主题】

news2024/11/19 5:40:11

最近我准备在自己的网站上开发一个博客系统,首先要实现后台登录界面。我选择使用Vue 3 + Vite + TypeScript框架来构建,下面是针对该主题的详细说明:

在网页中使用视频作为背景图已经相当常见了,而且网上也有很多相关的插件可供使用。我选择使用"vue-responsive-video-background-player"插件来实现这个功能。

首先,你需要通过以下命令来安装该插件:

npm install vue-responsive-video-background-player

下面是两种不同的引入方式,并将插件注册到Vue应用中:

作为组件:
在main.ts文件中引入插件,并将其作为一个全局组件注册:

import VideoBackground from 'vue-responsive-video-background-player'

Vue.component('video-background', VideoBackground);

作为插件:
在main.ts文件中引入插件,并使用Vue的use方法注册插件:

import { Plugin } from 'vue-responsive-video-background-player'

Vue.use(Plugin);

如果在使用过程中出现了找不到声明模块的错误,你可以创建一个以.d.ts为后缀的新文件,然后添加以下内容:

declare module 'vue-responsive-video-background-player'{
    const content: any
    export = content
}

这样就能解决找不到声明模块的问题了。

创建视频组件

<template>
  <div class="v_bg" style="z-index: 0;">
    <video-background src="视频地址" style="width: 100vw;max-width:100%; height: 100vh;height: 100vh;" muted preload playsWhen="canplay"
      objectFit="cover">

      <h1 style="color: white;padding-left: 20px;" >Entrie Star皆星河</h1>
    </video-background>
   
  </div>
</template>

<script setup lang="ts">
import { ref } from 'vue';

</script>

<style scoped>
body {
  margin: 0;
}
h1 {
  font-size: 3.2em;
  line-height: 1.1;
}


</style>
  1. src(路径,必填)
  2. autoplay(自动播放,默认值:true)
  3. muted(静音,默认值:true)
  4. preload(预加载,默认值:auto)
  5. objectFit(适应容器,默认值:cover|fill|contain)

更多的组件配置可以参考vue-responsive-video-background-player文档

使用组件

//创建login.vue
<template>
   <div class="login">
      <videoTool></videoTool>
      <div class="Loginform">

         <el-row :gutter="20">
            <el-col :span="15">
               <div class="input_form">
                  <div class="title">欢迎来到英雄联盟~</div>
                  <div class="input_user">
                     <img class="user_logo" src="@/assets/lol.png">
                     <el-input v-model="username" placeholder="请输入召唤师账号" />
                  </div>
                  <div class="input_pas">
                     <img class="pas_logo" src="@/assets/R-C_pixian.png">
                     <el-input v-model="password" placeholder="请输入召唤师密码" />
                  </div>
                  <div class="input_valiCode">
                     <el-input v-model="vailcode" placeholder="请输入验证码" />
                     <valicode></valicode>
                  </div>
                  <div class="commit">
                     <el-button type="warning" >进入峡谷</el-button>
                     
                  </div>
               </div>
            </el-col>
            <el-col :span="9">

            </el-col>
         </el-row>
      </div>
   </div>
</template>

<script lang="ts" setup>
import { ref} from 'vue';
import "animate.css";

import videoTool from '@/components/videoTool.vue'
const username=ref()
const password=ref()
const vailcode=ref()
</script>

<style lang="scss" scoped>
body {
   margin: 0;
}

.login {
   width: 100%;
   height: 100%;
   margin: 0;
   padding: 0;

   .Loginform {
      position: fixed;
      width: 700px;
      height: 400px;
      background-color: rgb(34, 50, 75);
      top: 50%;
      left: 50%;
      transform: translate(-50%, -50%);
      z-index: 9999;
      opacity: 0.95;
      background-image: url('@/assets/1_pixian.png');
      background-size: 700px 400px;
      background-position: 230px 0;
      background-repeat: no-repeat;

      .input_form {
         width: calc(100% - 20px);
         height: 380px;
         margin: 10px 10px;

         .title {
            width: 100%;
            height: 80px;
            line-height: 80px;
            text-align: center;
            font-size: 30px;
            font-weight: bolder;
         }

         .input_user {
            display: flex;
            width: 90%;
            height: 80px;
            margin: 0 auto;
            align-items: center;
            position: relative;

            .user_logo {
               width: 25px;
               height: 25px;
               position: absolute;
               z-index: 1111;
            }

            :deep(.el-input .el-input__inner)::placeholder {
               text-indent: 20px;
               color: rgb(95, 40, 74);
               /* 设定缩进的距离,根据需要进行调整 */
            }
         }

         .input_pas {
            display: flex;
            width: 90%;
            height: 70px;
            margin: 0 auto;
            align-items: center;
            .pas_logo{
               width: 25px;
               height: 25px;
               position: absolute;
               z-index: 1111;
            }
            :deep(.el-input .el-input__inner)::placeholder {
               text-indent: 20px;
               color: rgb(95, 40, 74);
               /* 设定缩进的距离,根据需要进行调整 */
            }
         }
         .input_valiCode{
            display: flex;
            width: 90%;
            height: 80px;
            margin: 0 auto;
            align-items: center;
            
            :deep(.el-input ) {
               width: 200px;
               /* 设定缩进的距离,根据需要进行调整 */
            }
            :deep(.el-input .el-input__inner)::placeholder {
               // text-indent: 20px;
               color: rgb(95, 40, 74);
               /* 设定缩进的距离,根据需要进行调整 */
            }
         }
         .commit{
            display: flex;
            justify-content: center;
            
            :deep(.el-button) {
               width: 150px;
               /* 设定缩进的距离,根据需要进行调整 */
            }
         }
      }
   }
}</style>

这里是使用elementUI的组件,所以需要安装element-ui

npm install element-plus --save

安装scss

npm i sass sass-loader --save-dev

验证码组件请参考我之前的文章---->vue3+vite+ts验证码组件

常见问题

1.视频地址
视频地址不可以直接在src里引入,需要定义变量传入,例如const vurl = ref('../src/assets/test.mp4')
2.vue打包视频不会将视频,需要上传至服务器
3.视频加载很慢,卡顿建议使用对象存储将视频文件上传使用在线地址减少服务器压力

最终效果图:
在这里插入图片描述

效果预览地址:点这里

后续优化

输入框提示,登录动画,主题色
持续更新~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/706649.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

QT Creator上位机学习(四)多线程操作

系列文章目录 文章目录 系列文章目录前言多线程操作多线程创建基本概念接口函数线程类的定义实例 线程同步基础互斥量的线程同步基于QReadWriteLock的线程同步基于QWaitCondition的线程同步基于信号量的线程同步 总结 前言 由于目前时间比较赶&#xff0c;同时还在学习FreeRTO…

ModaHub 魔搭社区:火山方舟是如何解决大模型互信问题的

火山方舟是一个全面的大模型服务平台&#xff0c;通过整合多个大模型公司的产品&#xff0c;为需要大模型的企业提供联系和选择的机会。它不仅提供相关工具和服务&#xff0c;还构建了大模型"安全互信计算架构"&#xff0c;解决了大模型互信的问题。 这个安全互信计算…

【ArcGIS微课1000例】0069:用ArcGIS提取一条线的高程值

本实验讲解用ArcGIS软件,基于数字高程模型DEM提取一条线的高程值并导出。 文章目录 一、加载实验数据二、将线转为折点三、提取折点高程值四、导出高程值五、注意事项【相关阅读】:【GlobalMapper精品教程】060:用dem提取一条线的高程值 一、加载实验数据 本实验使用的数据…

AI创作与游戏开发(三)世界观设计

本文将从实践出发&#xff0c;全方位的在美术&#xff0c;程序&#xff0c;策划, 音乐方面使用AIGC进行游戏开发的辅助创作&#xff0c;来探索AI的上限。 写在前面 不管AI发展到什么地步&#xff0c;要记住一点的是。它只是工具&#xff0c;还是要以我为主&#xff0c;为我所…

Lake Shore475高斯计使用教程

475高斯计具有双排20字符真空荧光显示屏。在正常操作下&#xff0c;显示屏用来显示磁场读数和功能&#xff08;最大、最小值、相对读数等&#xff09;信息。另外也可以被配置为显示被测磁场温度和频率等信息。当设置高斯计参数或功能时&#xff0c;屏幕会显示操作提示和反馈信息…

华为云Could not connect to ‘121.37.92.110‘ (port 22): Connection failed.

今天在使用xshell连接服务器的时候&#xff0c;一直报错&#xff0c;爆的心态都炸了&#xff1a; 在输入主机和密码都正确的情况下&#xff0c;还是连接不上服务器&#xff1a; 后来经过长时间摸索&#xff0c;发现xshell软件要通过镜像系统来操作&#xff0c;而自己买的服务器…

走进人工智能|自动驾驶 迈向无人驾驶未来

前言&#xff1a; 自动驾驶是一种技术&#xff0c;通过使用传感器、人工智能和算法来使车辆能够在不需要人类干预的情况下自主地感知、决策和操作。 文章目录 序言背景核心技术支持传感器技术人工智能与机器学习 迈向无人驾驶未来目前形式领跑人困境和挑战 总结 本篇带你走进自…

【Mysql】X-DOC:Mysql数据库大量数据查询加速(定时JOB和存储过程应用案例)

X-DOC&#xff1a;Mysql数据库大量数据查询加速&#xff08;定时JOB和存储过程应用案例&#xff09; 1、案例背景2、解决思路3、实现方式3.1 开启定时调度功能3.2 创建JOB日志表3.3 创建JOB任务3.4 创建JOB3.5 JOB的维护及查看 4、总结 1、案例背景 在某中台系统中&#xff0c…

基于HTML5的手术室信息管理系统的设计与实现(源码+文档+数据库)

本文通过对现有手术室信息管理系统分析&#xff0c;设计了一套基于 HTML的手术室信息管理系统&#xff0c;实现了患者信息、手术记录及术后随访等功能&#xff0c;提高了手术室工作效率。 本系统实现了患者基本资料的录入及基本信息的查询&#xff0c;提供了术前准备情况及术中…

Android Studio 下载安装教程

在我们下载前&#xff0c;先来了解一下Android的4大组件&#xff1a; 1.活动 2.服务&#xff1a;类似线程&#xff0c;听歌时跳转发信息&#xff0c;后台进行播放音乐&#xff0c;前台交互&#xff0c;后台运行任务 3.广播接收者&#xff1a;【例1】感知充电线充电进度&#xf…

【Spring Boot统一功能处理】统一异常处理,统一的返回格式,@ControllerAdvice简单分析,即将走进SSM项目的大门! ! !

前言: 大家好,我是良辰丫,在上一篇文章中我们已经学习了一些统一功能处理的相关知识,今天我们继续深入学习这些知识,主要学习统一异常处理,统一的返回格式,ControllerAdvice简单分析.&#x1f48c;&#x1f48c;&#x1f48c; &#x1f9d1;个人主页&#xff1a;良辰针不戳 &am…

邀请功能的实现分析

邀请功能 功能分析 场景&#xff1a;项目中出现用户邀请其他用户加入群组的功能 需求&#xff1a;用户点击生成邀请链接可以生成一个url&#xff0c;将这个url分享给其他用户&#xff0c;其他用户点击后对用户登录状态进行校验&#xff0c;校验通过即可加入群组&#xff0c;…

【dubbo triple provider 底层流转】

一、maven依赖 <dependency><groupId>io.netty</groupId><artifactId>netty-codec-http2</artifactId><version>4.1.90.Final</version> </dependency><dependency><groupId>org.apache.dubbo</groupId>&l…

vue3 父子组件传值 记录

最近这个组件之间传值用的较多&#xff0c;我这该死的记性&#xff0c;总给忘记写法&#xff0c;特此记录下 第一种 父传子 补充&#xff1a;LeftView.vue 是父组件&#xff1b; Video.vue 是子组件 第二种 子传父 Video.vue 子组件 第一步 引入&#xff1a; import { de…

Linux搭建Discuz论坛

环境&#xff1a;redhat 9 mysql 8 Discuz 3.5 题目要求&#xff1a;在 bbs.example.com 主机上创建 Discuz 论坛&#xff0c;数据库服务器使用 db.example.com 主机的 bbs 数据库实例&#xff0c;该实例由 MySQL数据库软件提供服务。 题目要求没有说是在一台虚拟机…

PostgreSQL学习笔记

目录 一、PostgreSQL安装 1、下载 2、安装 二、PostgreSQL操作 1、数据库操作 2、表操作 3、数据操作 一、PostgreSQL安装 本章节以windows系统安装为例&#xff0c;讲解PostgreSQL 15.0的安装过程。 1、下载 访问PostgreSQL官方网站&#xff0c;下载对应的安装包&am…

Qt/C++编写超精美自定义控件(历时9年更新迭代/超202个控件/祖传原创)

一、前言 无论是哪一门开发框架&#xff0c;如果涉及到UI这块&#xff0c;肯定需要用到自定义控件&#xff0c;越复杂功能越多的项目&#xff0c;自定义控件的数量就越多&#xff0c;最开始的时候可能每个自定义控件都针对特定的应用场景&#xff0c;甚至里面带了特定的场景的…

多元回归预测 | Matlab基于麻雀算法(SSA)优化混合核极限学习机HKELM回归预测, SSA-HKELM数据回归预测,多变量输入模型

文章目录 效果一览文章概述部分源码参考资料效果一览 文章概述 多元回归预测 | Matlab基于麻雀算法(SSA)优化混合核极限学习机HKELM回归预测, SSA-HKELM数据回归预测,多变量输入模型 评价指标包括:MAE、RMSE和R2等,代码质量极高,方便学习和替换数据。要求2018版本及以上。 …

Idea中使用Git详细教学

目录 一、配置 Git 二、创建项目远程仓库 三、初始化本地仓库 方法一&#xff1a; 方法二&#xff1a; 四、连接远程仓库 五、提交与拉取到本地仓库 六、推送到远程仓库 七、克隆远程仓库到本地 方法一&#xff1a; 方法二&#xff1a; 八、Git分支操作 一、配置 G…

GAMES101笔记 Lecture07 Shading1(Illumination, Shading and Graphics Pipeline)

目录 Visibility / Occlusion(可见性 or 遮挡)Painters Algorithm(画家算法)Z-Buffer(深度缓冲算法) Shading(着色)A Simple Shading Model(Blinn-Phong Reflectance Model)一个简单的着色模型&#xff1a;Blinn-Phong反射模型Diffuse Reflection(漫反射) 参考资源 Visibility …