vue實(shí)現(xiàn)分割驗(yàn)證碼效果
本文實(shí)例為大家分享了vue實(shí)現(xiàn)分割驗(yàn)證碼效果的具體代碼,供大家參考,具體內(nèi)容如下
注:該代碼存在問(wèn)題,因?yàn)槲襪axlength =4 ,input 的寬度跟屏幕同寬,所以當(dāng)我input 里面的length == 4 的時(shí)候,我的光標(biāo)會(huì)超出屏幕,所以我在length == 4 的時(shí)候做了一個(gè)把光標(biāo)放到第三個(gè)的處理,這種雖用戶體驗(yàn)不好,也解了length==4的時(shí)候整個(gè)布局亂了的燃眉之急
上UI 圖
上代碼:
vue
<template> ? <div> ? ? <v-main class="bgi"> ? ? ? <v-container class="verify"> ? ? ? ? <v-icon @click="verifyShow = false" color="#000">mdi-close</v-icon> ? ? ? ? <div> ? ? ? ? ? <p class="verifyTitle">輸入驗(yàn)證碼</p> ? ? ? ? ? <p class="verifyTitle1" v-show="verifyStatus == 1"> ? ? ? ? ? ? 驗(yàn)證碼已發(fā)送至 <span> {{ "+" + area + phone }}</span> ? ? ? ? ? </p> ? ? ? ? ? <p class="verifyTitle2" v-show="verifyStatus == 3"> ? ? ? ? ? ? 驗(yàn)證碼不正確,請(qǐng)重新輸入 ? ? ? ? ? </p> ? ? ? ? ? <div class="verifyInputBox"> ? ? ? ? ? ? <div class="verifyInputBg verifyInputBg1"></div> ? ? ? ? ? ? <div class="verifyInputBg verifyInputBg2"></div> ? ? ? ? ? ? <div class="verifyInputBg verifyInputBg3"></div> ? ? ? ? ? ? <div class="verifyInputBg verifyInputBg4"></div> ? ? ? ? ? ? <input ? ? ? ? ? ? ? ref="verifyInput" ? ? ? ? ? ? ? type="text" ? ? ? ? ? ? ? class="verifyInput" ? ? ? ? ? ? ? maxlength="4" ? ? ? ? ? ? ? v-model="verifyInput" ? ? ? ? ? ? /> ? ? ? ? ? </div> ? ? ? ? ? <v-btn ? ? ? ? ? ? :disabled="restTimeShow" ? ? ? ? ? ? outlined ? ? ? ? ? ? tile ? ? ? ? ? ? class="nextBtn" ? ? ? ? ? ? @click="verifyConfirm" ? ? ? ? ? > ? ? ? ? ? ? 確定 ? ? ? ? ? </v-btn> ? ? ? ? ? <p class="restTime" v-show="restTimeShow"> ? ? ? ? ? ? 重新獲取(<span>{{ restTime }}</span ? ? ? ? ? ? >s) ? ? ? ? ? </p> ? ? ? ? </div> ? ? ? </v-container> ? ? </v-main> ? </div> </template>
css
<style lang="scss" scoped> .bgi { ? width: 100vw; ? height: 100vh; ? background: url("~@/assets/imgs/banner.png"); ? background-size: 100% 100%; ? background-repeat: no-repeat; ? p { ? ? margin-bottom: 0; ? } ? .verify { ? ? width: 100%; ? ? height: 100%; ? ? position: relative; ? ? color: #000; ? ? background: #fff; ? ? .verifyTitle { ? ? ? margin-left: 2rem; ? ? ? margin-top: 3rem; ? ? ? font-size: 1.4rem; ? ? } ? ? .verifyTitle1 { ? ? ? margin-left: 2rem; ? ? ? margin-top: 0.6rem; ? ? ? font-size: 0.8125rem; ? ? ? span { ? ? ? ? color: #bfbfbf; ? ? ? } ? ? } ? ? .verifyTitle2 { ? ? ? margin-left: 2rem; ? ? ? margin-top: 0.6rem; ? ? ? font-size: 0.8125rem; ? ? ? color: #f53f3f; ? ? } ? ? input::-webkit-input-placeholder { ? ? ? color: #000; ? ? } ? ? .verifyInputBox { ? ? ? width: 20rem; ? ? ? margin: 3rem auto 0; ? ? ? position: relative; ? ? ? height: 4rem; ? ? ? z-index: 1; ? ? ? .verifyInputBg { ? ? ? ? position: absolute; ? ? ? ? z-index: 2; ? ? ? ? height: 4rem; ? ? ? ? width: 4rem; ? ? ? ? border-radius: 0.2rem; ? ? ? ? background: rgba($color: #000, $alpha: 0.1); ? ? ? } ? ? ? .verifyInputBg2 { ? ? ? ? left: 5.33rem; ? ? ? } ? ? ? .verifyInputBg3 { ? ? ? ? left: 10.66rem; ? ? ? } ? ? ? .verifyInputBg4 { ? ? ? ? left: 16rem; ? ? ? } ? ? ? .verifyInput { ? ? ? ? height: 4rem; ? ? ? ? line-height: 4rem; ? ? ? ? width: 100%; ? ? ? ? letter-spacing: 4.53rem; ? ? ? ? padding-left: 1.5rem; ? ? ? ? font-size: 1.4rem; ? ? ? ? font-weight: 700; ? ? ? ? position: absolute; ? ? ? ? z-index: 3; ? ? ? } ? ? } ? ? .restTime { ? ? ? margin-top: 1rem; ? ? ? color: #bfbfbf; ? ? ? font-size: 0.8125rem; ? ? ? text-align: center; ? ? } ? } ? .nextBtn { ? ? margin-top: 2rem; ? ? margin-left: 2rem; ? ? width: calc(100% - 4rem); ? ? height: 3rem !important; ? ? background: #ff962b; ? ? border-radius: 0.3125rem; ? ? font-size: 1rem; ? ? color: #ffffff !important; ? ? border: none; ? } ? .nextBtn:disabled { ? ? background: #d2d2d2; ? ? color: #ffffff !important; ? } } </style>
script
<script> export default { ? name: "Login", ? data() { ? ? return { ? ? ? area: "86", ? ? ? phone: "", ? ? ? verifyInput: "", ? ? ? verifyStatus: "1", // 1 ?-- 驗(yàn)證碼發(fā)送至 ?|| ?2 --正在驗(yàn)證驗(yàn)證碼 ?|| 3 -- 驗(yàn)證碼錯(cuò)誤 ? ? ? restTimer: null, ? ? ? restTime: 60, ? ? ? restTimeShow: false, ? ? }; ? }, ? watch: { ? ? verifyInput(newVal) { ? ? ? if (newVal.length == 4) { ? ? ? ? this.$nextTick(() => { ? ? ? ? ? let verifyInput = this.$refs.verifyInput; ? ? ? ? ? verifyInput.setSelectionRange(3,3); ? ? ? ? }); ? ? ? ? this.verifyConfirm(); ? ? ? } ? ? }, ? }, ? methods: { ? ? verifyConfirm() { ? ? ? this.restTimeShow = true; ? ? ? this.verifyStatus = 2; ? ? ? this.restTimeFun(); ? ? }, ? ? restTimeFun() { ? ? ? if (!this.restTimer) { ? ? ? ? this.restTime = 60; ? ? ? ? this.restTimer = setInterval(() => { ? ? ? ? ? if (this.restTime > 0) { ? ? ? ? ? ? this.restTime--; ? ? ? ? ? } else { ? ? ? ? ? ? this.restTimeShow = false; ? ? ? ? ? ? clearInterval(this.restTimer); ? ? ? ? ? ? this.restTimer = null; ? ? ? ? ? } ? ? ? ? }, 1000); ? ? ? } ? ? }, ? }, }; </script>
效果圖:
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
關(guān)于移動(dòng)端與大屏幕自適應(yīng)適配方案
這篇文章主要介紹了關(guān)于移動(dòng)端與大屏幕自適應(yīng)適配方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-10-10Vue實(shí)現(xiàn)簡(jiǎn)單選項(xiàng)卡效果
這篇文章主要為大家詳細(xì)介紹了Vue實(shí)現(xiàn)簡(jiǎn)單選項(xiàng)卡效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03vue之a(chǎn)-table中實(shí)現(xiàn)清空選中的數(shù)據(jù)
今天小編就為大家分享一篇vue之a(chǎn)-table中實(shí)現(xiàn)清空選中的數(shù)據(jù),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-11-11electron?vue?模仿qq登錄界面功能實(shí)現(xiàn)
這篇文章主要介紹了electron?vue?模仿qq登錄界面,首先使用vuecli創(chuàng)建vue項(xiàng)目,安裝electron,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-08-08vue如何監(jiān)聽(tīng)元素橫向滾動(dòng)到最右側(cè)
這篇文章主要介紹了vue如何監(jiān)聽(tīng)元素橫向滾動(dòng)到最右側(cè)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-10-10vue點(diǎn)擊單張圖片放大實(shí)現(xiàn)步驟(純js)
這篇文章主要給大家介紹了關(guān)于vue點(diǎn)擊單張圖片放大實(shí)現(xiàn)的相關(guān)資料,在vue項(xiàng)目中實(shí)現(xiàn)點(diǎn)擊圖片放大功能相信對(duì)大家來(lái)說(shuō)都不陌生,文中給出了詳細(xì)的js示例代碼,需要的朋友可以參考下2023-07-07vue中關(guān)于template報(bào)錯(cuò)等問(wèn)題的解決
這篇文章主要介紹了vue中關(guān)于template報(bào)錯(cuò)等問(wèn)題的解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-04-04Vue實(shí)現(xiàn)登錄保存token并校驗(yàn)實(shí)現(xiàn)保存登錄狀態(tài)的操作代碼
這篇文章主要介紹了Vue實(shí)現(xiàn)登錄保存token并校驗(yàn)實(shí)現(xiàn)保存登錄狀態(tài),本文通過(guò)示例代碼給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧2024-02-02