vue?實(shí)現(xiàn)滑動(dòng)塊解鎖示例詳解
引言
從0開(kāi)始,寫(xiě)一個(gè)登錄滑動(dòng)解鎖的功能。
首先,新創(chuàng)建一個(gè) vue 項(xiàng)目。 或者在已有的項(xiàng)目寫(xiě)也可以。 將無(wú)用的代碼刪一下。
下載需要用到的組件庫(kù)
1、下載 element-ui。
yarn add element-ui -S or npm i element-ui -S
2、 在main.js 中引入。
import Vue from 'vue' import App from './App.vue' import router from './router' import store from './store' + import ElementUI from 'element-ui' + import 'element-ui/lib/theme-chalk/index.css' Vue.config.productionTip = false + Vue.use(ElementUI) new Vue({ router, store, + el: '#app', render: h => h(App) }).$mount('#app')
3、測(cè)試是否下載成功。
<template> <div class="about"> + <el-button type="primary">主要按鈕</el-button> <h1>This is an about page</h1> </div> </template>
書(shū)寫(xiě)登錄頁(yè)面
頁(yè)面可以正常展示按鈕,說(shuō)明下載成功??梢蚤_(kāi)始寫(xiě)代碼了。
寫(xiě)一個(gè)簡(jiǎn)單的登錄頁(yè)面。
Login.vue
template 結(jié)構(gòu):
<template> <div class="login-container"> <div class="login-header"> <h1>xxx系統(tǒng)</h1> </div> <div class="login-body"> <div class="login-form-container"> <el-form ref="loginFormRef" class="form-style" :label-position="`right`" :model="loginFormData" status-icon > <el-form-item name="username" prop="username" > <el-input v-model="loginFormData.username" placeholder="請(qǐng)輸入用戶名" prefix-icon="el-icon-user" clearable /> </el-form-item> <el-form-item class="el-item-style" name="password" prop="password" > <!-- 密碼框 --> <el-input prefix-icon="el-icon-lock" v-model="loginFormData.password" :type="`${hasOpenEye? 'text':'password'}`" placeholder="請(qǐng)輸入密碼"> <i slot="suffix" :class="[hasOpenEye ? 'el-icon-unlock' : 'el-icon-lock']" style="font-size: 14px; cursor: pointer" @click="hasOpenEye = !hasOpenEye"/> </el-input> </el-form-item> <el-form-item class="el-item-style"> <el-button :loading="false" style=" width: 100%; height: 46px; line-height: 15px; font-size: 23px; " type="primary" @click="login" >登錄</el-button> </el-form-item> </el-form> </div> </div> </div> </template>
script 邏輯:
<script> export default { // 登錄表單數(shù)據(jù) data () { return { loginFormData: { username: "123232", password: "21232" }, hasOpenEye : false, // 是否顯示密碼 } }, components: {}, methods: { login () {}, }, } </script>
style 樣式:
<style lang="less" scoped> .login-container { position: relative; height: 100%; width: 100%; display: flex; user-select: none; flex-direction: column; .login-header { display: flex; align-items: center; padding-left: 50px; cursor: pointer; } .login-footer { display: flex; justify-content: center; align-items: center; color: #322b34; font-size: 12px; } .login-header, .login-footer { height: 10%; } .login-body { background-position: center center; background-repeat: no-repeat; background-size: 100% auto; flex: 1 1; display: flex; justify-content: center; align-items: center; cursor: pointer; user-select: none; .login-form-container { width: 30%; border: 1px solid mix(pink, #000, 80); box-shadow: 0 0.5em 1em rgba(0, 0, 0, 0.3); background: linear-gradient( to bottom, rgba(255, 255, 255, 0.3), rgba(0, 0, 0, 0.3) ); padding: 20px 30px; border-radius: 5px; } } } </style>
登錄頁(yè)面效果展示:
寫(xiě)滑動(dòng)解鎖組件
1、下載安裝包:
vue-monoplasty-slide-verify
2、導(dǎo)入到 main.js 中
import SlideVerify from 'vue-monoplasty-slide-verify'; Vue.use(SlideVerify);
3、新建一個(gè)文件component / verify.vue
template 模板:
<template> <div> <!-- title="滑塊驗(yàn)證碼" --> <el-dialog :visible.sync="dialogVisible" :before-close="dialogBeforeClose" :close-on-click-modal="false" > <div class="flex"> <slide-verify ref="slideblock" :w="fullWidth" :h="fullHeight" :accuracy="accuracy" :slider-text="text" :imgs="imgList" @again="onAgain" @fulfilled="onFulfilled" @success="onSuccess" @fail="onFail" @refresh="onRefresh" /> </div> </el-dialog> </div> </template>
script 代碼:
<script> export default { name: 'verify', data() { return { dialogVisible: false, fullWidth: 450, fullHeight: 304, msg: '', text: '請(qǐng)向右滑動(dòng)滑塊完成驗(yàn)證', // 精確度小,可允許的誤差范圍??;為1時(shí),則表示滑塊要與凹槽完全重疊,才能驗(yàn)證成功。默認(rèn)值為5 accuracy: 3, imgList: [ // 圖片的路徑: require('../assets/3.jpg') ] } }, mounted() {}, methods: { dialogBeforeClose() { this.dialogVisible = false }, onSuccess() { console.log('驗(yàn)證通過(guò)') this.msg = 'login success' this.dialogVisible = false this.$emit('verifySuccess') this.$message.success("驗(yàn)證成功") this.$router.push('/a') }, onFail() { console.log('驗(yàn)證不通過(guò)') this.msg = '驗(yàn)證不通過(guò)' this.$message.error('驗(yàn)證失敗') }, onRefresh() { console.log('點(diǎn)擊了刷新小圖標(biāo)') this.msg = '' }, onFulfilled() { console.log('刷新成功啦!') }, onAgain() { console.log('檢測(cè)到非人為操作的哦!') this.msg = 'try again' // 刷新 this.$refs.slideblock.reset() }, handleClick() { // 父組件直接可以調(diào)用刷新方法 this.$refs.slideblock.reset() console.log(23333); } } } </script>
style 樣式:
<style lang="less" scoped> .flex{ display: flex; align-items: center; justify-content: center; } /deep/ .el-dialog { width: 500px; border-radius: 16px; margin: auto; } /deep/ .el-dialog__header { display: none; } /deep/ .slide-verify-slider { border-radius: 33px; } /deep/ .slide-verify-slider-mask { border-radius: 33px 0 0 33px; } </style>
將滑動(dòng)組件運(yùn)用到我們的 Login 組件中:
import verify from "../components/verify.vue"; export default { components: { verify }, }
<template> <el-form> ...... </el-form> + <verify ref="verify"></verify> </template>
補(bǔ)充邏輯代碼
login () { this.$refs.verify.dialogVisible = true },
最終效果:
完成。
以上就是vue 實(shí)現(xiàn)滑動(dòng)塊解鎖示例詳解的詳細(xì)內(nèi)容,更多關(guān)于vue 滑動(dòng)塊解鎖的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
import.meta.glob() 如何導(dǎo)入多個(gè)目錄下的資源(最新推薦)
import.meta.glob() 其實(shí)不僅能接收一個(gè)字符串,還可以接收一個(gè)字符串?dāng)?shù)組,就是匹配多個(gè)位置,本文給大家介紹import.meta.glob() 如何導(dǎo)入多個(gè)目錄下的資源,感興趣的朋友一起看看吧2023-11-11elementui時(shí)間/日期選擇器選擇禁用當(dāng)前之前(之后)時(shí)間代碼實(shí)例
當(dāng)我們?cè)谶M(jìn)行網(wǎng)頁(yè)開(kāi)發(fā)時(shí),通常需要用到一些日期組件來(lái)方便用戶選擇時(shí)間,其中element日期組件是一個(gè)非常好用的工具,這篇文章主要給大家介紹了關(guān)于elementui時(shí)間/日期選擇器選擇禁用當(dāng)前之前(之后)時(shí)間的相關(guān)資料,需要的朋友可以參考下2024-02-02Vue之解決Echarts組件使用ID不能復(fù)用的問(wèn)題
這篇文章主要介紹了Vue之解決Echarts組件使用ID不能復(fù)用的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-03-03vue實(shí)踐---根據(jù)不同環(huán)境,自動(dòng)轉(zhuǎn)換請(qǐng)求的url地址操作
這篇文章主要介紹了vue實(shí)踐---根據(jù)不同環(huán)境,自動(dòng)轉(zhuǎn)換請(qǐng)求的url地址操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-09-09vue3+vite:src使用require動(dòng)態(tài)導(dǎo)入圖片報(bào)錯(cuò)的最新解決方法
這篇文章主要介紹了vue3+vite:src使用require動(dòng)態(tài)導(dǎo)入圖片報(bào)錯(cuò)和解決方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-04-04vue項(xiàng)目中如何調(diào)用多個(gè)不同的ip接口
這篇文章主要介紹了vue項(xiàng)目中如何調(diào)用多個(gè)不同的ip接口,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-08-08對(duì)vue事件的延遲執(zhí)行實(shí)例講解
今天小編就為大家分享一篇對(duì)vue事件的延遲執(zhí)行實(shí)例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-08-08