vue實現(xiàn)登錄頁背景粒子特效
本文實例為大家分享了vue實現(xiàn)登錄頁背景粒子特效的具體代碼,供大家參考,具體內容如下
上圖中的點和線,是由Vue-Particles生成的,不僅自己動,還可以與用戶的鼠標互動。例子的樣式有點丑,大家湊合看一下吧。
1. 使用教程
1.1 安裝
npm install vue-particles --save-dev
1.2 引入 main.js 文件
import Vue from 'vue' import VueParticles from 'vue-particles' Vue.use(VueParticles)
1.3 使用
<template> ? ? <div id="app"> ?? ??? ?<vue-particles ?? ??? ? ? ? ? ? class="login-background" ?? ??? ? ? ? ? ? color="#97D0F2" ?? ??? ? ? ? ? ? :particleOpacity="0.7" ?? ??? ? ? ? ? ? :particlesNumber="50" ?? ??? ? ? ? ? ? shapeType="circle" ?? ??? ? ? ? ? ? :particleSize="4" ?? ??? ? ? ? ? ? linesColor="#97D0F2" ?? ??? ? ? ? ? ? :linesWidth="1" ?? ??? ? ? ? ? ? :lineLinked="true" ?? ??? ? ? ? ? ? :lineOpacity="0.4" ?? ??? ? ? ? ? ? :linesDistance="150" ?? ??? ? ? ? ? ? :moveSpeed="3" ?? ??? ? ? ? ? ? :hoverEffect="true" ?? ??? ? ? ? ? ? hoverMode="grab" ?? ??? ? ? ? ? ? :clickEffect="true" ?? ??? ? ? ? ? ? clickMode="push"> ?? ??? ? </vue-particles> ? ? </div> ?</template>
1.4 參數(shù)解釋
- color: String類型。默認’#dedede’。粒子顏色。
- particleOpacity: Number類型。默認0.7。粒子透明度。
- particlesNumber: Number類型。默認80。粒子數(shù)量。
- shapeType: String類型。默認’circle’??捎玫牧W油庥^類型有:“circle”,“edge”,“triangle”,“polygon”,“star”。
- particleSize: Number類型。默認80。單個粒子大小。
- linesColor: String類型。默認’#dedede’。線條顏色。
- linesWidth: Number類型。默認1。線條寬度。
- lineLinked: 布爾類型。默認true。連接線是否可用。
- lineOpacity: Number類型。默認0.4。線條透明度。
- linesDistance: Number類型。默認150。線條距離。
- moveSpeed: Number類型。默認3。粒子運動速度。
- hoverEffect: 布爾類型。默認true。是否有hover特效。
- hoverMode: String類型。默認true??捎玫膆over模式有: “grab”, “repulse”, “bubble”。
- clickEffect: 布爾類型。默認true。是否有click特效。
- clickMode: String類型。默認true??捎玫腸lick模式有: “push”, “remove”, “repulse”, “bubble”。
1.5 注意
這里附上登錄頁完整代碼,大家按需索取。
背景鋪滿屏幕需要設置 寬高100%。
<template> ? ? <div> ? ? ? ? <!-- #707070 --> ? ? ? ? <vue-particles ? ? ? ? ? ? ? ? class="login-background" ? ? ? ? ? ? ? ? color="#97D0F2" ? ? ? ? ? ? ? ? :particleOpacity="0.7" ? ? ? ? ? ? ? ? :particlesNumber="50" ? ? ? ? ? ? ? ? shapeType="circle" ? ? ? ? ? ? ? ? :particleSize="4" ? ? ? ? ? ? ? ? linesColor="#97D0F2" ? ? ? ? ? ? ? ? :linesWidth="1" ? ? ? ? ? ? ? ? :lineLinked="true" ? ? ? ? ? ? ? ? :lineOpacity="0.4" ? ? ? ? ? ? ? ? :linesDistance="150" ? ? ? ? ? ? ? ? :moveSpeed="3" ? ? ? ? ? ? ? ? :hoverEffect="true" ? ? ? ? ? ? ? ? hoverMode="grab" ? ? ? ? ? ? ? ? :clickEffect="true" ? ? ? ? ? ? ? ? clickMode="push"> ? ? ? ? </vue-particles> ? ? ? ? <div class="login-other"> ? ? ? ? ? ? <el-form :rules="rules" ref="loginForm" :model="loginForm" class="loginContainer"> ? ? ? ? ? ? ? ? <H3 class="loginTitle">人事管理系統(tǒng)</H3> ? ? ? ? ? ? ? ? <el-form-item prop="username"> ? ? ? ? ? ? ? ? ? ? <el-input prefix-icon="el-icon-user-solid" size="normal" type="text" v-model="loginForm.username" ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? auto-complete="off" ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? placeholder="請輸入用戶名"></el-input> ? ? ? ? ? ? ? ? </el-form-item> ? ? ? ? ? ? ? ? <el-form-item prop="password"> ? ? ? ? ? ? ? ? ? ? <el-input prefix-icon="el-icon-lock" size="normal" type="password" v-model="loginForm.password" ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? auto-complete="off" ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? placeholder="請輸入密碼"></el-input> ? ? ? ? ? ? ? ? </el-form-item> ? ? ? ? ? ? ? ? <el-form-item prop="code"> ? ? ? ? ? ? ? ? ? ? <div style="display: flex;justify-content: space-between"> ? ? ? ? ? ? ? ? ? ? ? ? <el-input prefix-icon="el-icon-circle-check" style="width: 230px" size="normal" type="text" ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? v-model="loginForm.code" auto-complete="off" ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? placeholder="請輸入驗證碼" @keydown.enter.native="submitLogin"> ? ? ? ? ? ? ? ? ? ? ? ? </el-input> ? ? ? ? ? ? ? ? ? ? ? ? <img :src="vcUrl" @click="updateVerifyCode"> ? ? ? ? ? ? ? ? ? ? </div> ? ? ? ? ? ? ? ? </el-form-item> ? ? ? ? ? ? ? ? <el-checkbox size="normal" class="loginRemember" v-model="checked">記住密碼</el-checkbox> ? ? ? ? ? ? ? ? <el-button size="normal" type="primary" style="width: 100%;" @click="submitLogin">登錄</el-button> ? ? ? ? ? ? </el-form> ? ? ? ? </div> ? ? </div> </template> <script> ? ? export default { ? ? ? ? name: "Login", ? ? ? ? data() { ? ? ? ? ? ? return { ? ? ? ? ? ? ? ? imgSrc: require('@/assets/logo.png'), ? ? ? ? ? ? ? ? vcUrl: '/vhr/verifyCode?time=' + new Date(), ? ? ? ? ? ? ? ? loginForm: { ? ? ? ? ? ? ? ? ? ? username: 'admin', ? ? ? ? ? ? ? ? ? ? password: '123', ? ? ? ? ? ? ? ? ? ? code: '' ? ? ? ? ? ? ? ? }, ? ? ? ? ? ? ? ? checked: true, ? ? ? ? ? ? ? ? rules: { ? ? ? ? ? ? ? ? ? ? username: [{required: true, message: '請輸入用戶名', trigger: 'blur'}], ? ? ? ? ? ? ? ? ? ? password: [{required: true, message: '請輸入密碼', trigger: 'blur'}], ? ? ? ? ? ? ? ? ? ? code: [{required: true, message: '請輸入驗證碼', trigger: 'blur'}] ? ? ? ? ? ? ? ? } ? ? ? ? ? ? } ? ? ? ? }, ? ? ? ? methods: { ? ? ? ? ? ? //點擊圖片更新驗證碼 ? ? ? ? ? ? updateVerifyCode() { ? ? ? ? ? ? ? ? this.vcUrl = '/vhr/verifyCode?time=' + new Date(); ? ? ? ? ? ? }, ? ? ? ? ? ? submitLogin() { ? ? ? ? ? ? ? ? this.$refs.loginForm.validate((valid) => { ? ? ? ? ? ? ? ? ? ? if (valid) { ? ? ? ? ? ? ? ? ? ? ? ? //alert('submit!'); ? ? ? ? ? ? ? ? ? ? ? ? this.postKeyValueRequest('/doLogin', this.loginForm).then(resp => { ? ? ? ? ? ? ? ? ? ? ? ? ? ? if (resp) { ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? // 保存登錄信息到sessionStorage,關閉頁面信息會清除 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? window.sessionStorage.setItem("user", JSON.stringify(resp.obj)); ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? // 重定向路徑 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? let path = this.$route.query.redirect; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? this.$router.replace((path == '/' || path == undefined) ? '/home' : path); ? ? ? ? ? ? ? ? ? ? ? ? ? ? } else { ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? this.vcUrl = '/vhr/verifyCode?time=' + new Date(); ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? this.loginForm.code = ""; ? ? ? ? ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? ? ? ? ? }) ? ? ? ? ? ? ? ? ? ? } else { ? ? ? ? ? ? ? ? ? ? ? ? this.$message.error('登錄失敗,請重新登錄。'); ? ? ? ? ? ? ? ? ? ? ? ? return false; ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? }); ? ? ? ? ? ? } ? ? ? ? } ? ? } </script> <style> ? ? .login-background { ? ? ? ? background: linear-gradient(-180deg, #dcf2e6 0%, #ffffff 100%); ? ? ? ? width: 100%; ? ? ? ? height: 100%; /**寬高100%是為了圖片鋪滿屏幕 */ ? ? ? ? z-index: -1; ? ? ? ? position: absolute; ? ? } ? ? .login-other { ? ? ? ? z-index: 1; ? ? ? ? margin: 180px 0 0 calc(calc(100vw - 410px) / 2); ? ? ? ? position: absolute; ? ? } ? ? .loginContainer { ? ? ? ? border-radius: 15px; ? ? ? ? background-clip: padding-box; ? ? ? ? width: 350px; ? ? ? ? padding: 15px 35px 15px 35px; ? ? ? ? background: #fefefe; ? ? ? ? border: 1px solid #eaeaea; ? ? ? ? box-shadow: 0 0 25px #cac6c6; ? ? } ? ? .loginTitle { ? ? ? ? margin: 15px auto 20px auto; ? ? ? ? text-align: center; ? ? ? ? color: #707070; ? ? } ? ? .loginRemember { ? ? ? ? text-align: left; ? ? ? ? margin: 0 0 15px 0; ? ? } </style>
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
解決element DateTimePicker+vue彈出框只顯示小時
這篇文章主要介紹了解決element DateTimePicker+vue彈出框只顯示小時,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-03-03v-slot和slot、slot-scope之間相互替換實例
這篇文章主要介紹了v-slot和slot、slot-scope之間相互替換實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-09-09vue 解決setTimeOut和setInterval函數(shù)無效報錯的問題
這篇文章主要介紹了vue 解決setTimeOut和setInterval函數(shù)無效報錯的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-07-07vant picker+popup 自定義三級聯(lián)動案例
這篇文章主要介紹了vant picker+popup 自定義三級聯(lián)動案例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-11-11