vue3获取验证码+背景切换

需要安装element-plus组件库

用户获取验证码后按钮会被禁用,等待10秒后重新获取验证码

验证码

元素布局template部分

javascript 复制代码
<template>
    <div>
        <el-button type="success" round :disabled="isSend" @click="countDown">
            {{ codeName }}
        </el-button>
    </div>
</template>

script功能部分

javascript 复制代码
<script setup>
import { ref, reactive, watch } from 'vue';
import { ElMessage } from 'element-plus'

const isSend = ref(false); // 禁用
const codeName = ref("发送验证码");
const totalTime = 10; // 10秒倒计时
let timer = null; // 定时器
const code = ref() // 验证码存放处
const col = ref("") // 背景颜色rgb()

const countDown = () => {
    if (isSend.value) return;
    isSend.value = true;
    codeName.value = `${totalTime}s后重新发送`;

    // 生成随机验证码
    const len = 6;
    const codeList = [];
    const chars = "ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz0123456789";
    const charsLen = chars.length;
    for (let i = 0; i < len; i++) {
        codeList.push(chars.charAt(Math.floor(Math.random() * charsLen)));
    }
    code.value = codeList.join("")
    console.log(codeList.join(""));

    ElMessage({
        message: '验证码提示---' + code.value,
        type: 'success',
    })
    
    // 倒计时
    let currentTime = totalTime;
    timer = setInterval(() => {
        currentTime--;
        codeName.value = `${currentTime}s后重新发送`;
        if (currentTime < 1) {
            clearInterval(timer);
            codeName.value = "重新发送验证码";
            isSend.value = false;
        }
    }, 1000);
};
</script>
  

样式这里没有

随机背景颜色

template部分

javascript 复制代码
<template>
    <div>
        <div class="box">
            <h2>随机切换背景</h2>
        </div>
    </div>
</template>

script部分

javascript 复制代码
<script setup>
// 生成一个随机的颜色
const randomColor = () => {
    const r = Math.floor(Math.random() * (255 - 0) + 0);
    const g = Math.floor(Math.random() * (255 - 0) + 0);
    const b = Math.floor(Math.random() * (255 - 0) + 0);
    return "rgb(" + r + "," + g + "," + b + ")"
}

const changecolor = () => {
    const box = document.querySelector('.box')
    const color = randomColor()
    box.style.backgroundColor = color
}
</script>

style部分

javascript 复制代码
<style scoped>
.box {
    height: 100px;
    width: 200px;
    background-color: bisque;
    text-align: center;
    line-height: 100px;
}
</style>

完整代码:希望能帮助到你

javascript 复制代码
<template>
    <div>
        <el-button type="success" round :disabled="isSend" @click="countDown">
            {{ codeName }}
        </el-button>
        <div class="box">
            <h2>随机切换背景</h2>
        </div>
    </div>
</template>
  
<script setup>
import { ref, reactive, watch } from 'vue';
import { ElMessage } from 'element-plus'

const isSend = ref(false); // 禁用
const codeName = ref("发送验证码");
const totalTime = 10; // 10秒倒计时
let timer = null; // 定时器
const code = ref() // 验证码存放处
const col = ref("") // 背景颜色rgb()

const countDown = () => {
    if (isSend.value) return;
    isSend.value = true;
    codeName.value = `${totalTime}s后重新发送`;

    // 生成随机验证码
    const len = 6;
    const codeList = [];
    const chars = "ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz0123456789";
    const charsLen = chars.length;
    for (let i = 0; i < len; i++) {
        codeList.push(chars.charAt(Math.floor(Math.random() * charsLen)));
    }
    code.value = codeList.join("")
    console.log(codeList.join(""));

    ElMessage({
        message: '验证码提示---' + code.value,
        type: 'success',
    })

    ElMessage({
        message: '背景颜色提示---' + randomColor(),
        type: 'success',
    })

    changecolor()
    // 倒计时
    let currentTime = totalTime;
    timer = setInterval(() => {
        currentTime--;
        codeName.value = `${currentTime}s后重新发送`;
        if (currentTime < 1) {
            clearInterval(timer);
            codeName.value = "重新发送验证码";
            isSend.value = false;
        }
    }, 1000);
};

// 生成一个随机的颜色
const randomColor = () => {
    const r = Math.floor(Math.random() * (255 - 0) + 0);
    const g = Math.floor(Math.random() * (255 - 0) + 0);
    const b = Math.floor(Math.random() * (255 - 0) + 0);
    return "rgb(" + r + "," + g + "," + b + ")"
}

const changecolor = () => {
    const box = document.querySelector('.box')
    const color = randomColor()
    box.style.backgroundColor = color
}

</script>
  
<style scoped>
.box {
    height: 100px;
    width: 200px;
    background-color: bisque;
    text-align: center;
    line-height: 100px;
}
</style>
  

效果展示:

练习验证码实现

相关推荐
Apifox21 分钟前
Apifox 11 月更新|AI 生成测试用例能力持续升级、JSON Body 自动补全、支持为响应组件添加描述和 Header
前端·后端·测试
木易士心21 分钟前
深入剖析:按下 F5 后,浏览器前端究竟发生了什么?
前端·javascript
在掘金8011023 分钟前
vue3中使用medium-zoom
前端·vue.js
xump1 小时前
如何在DevTools选中调试一个实时交互才能显示的元素样式
前端·javascript·css
折翅嘀皇虫1 小时前
fastdds.type_propagation 详解
java·服务器·前端
Front_Yue1 小时前
深入探究跨域请求及其解决方案
前端·javascript
wordbaby1 小时前
React Native 进阶实战:基于 Server-Driven UI 的动态表单架构设计
前端·react native·react.js
抱琴_1 小时前
【Vue3】我用 Vue 封装了个 ECharts Hooks,同事看了直接拿去复用
前端·vue.js
风止何安啊1 小时前
JS 里的 “变量租房记”:闭包是咋把变量 “扣” 下来的?
前端·javascript·node.js
老华带你飞1 小时前
社区养老保障|智慧养老|基于springboot+小程序社区养老保障系统设计与实现(源码+数据库+文档)
java·数据库·vue.js·spring boot·小程序·毕设·社区养老保障