vue3页面内容切换(类似登录、注册内容切换)

一、内容描述

        页面有俩块内容,分别是验证码登录页面内容,账号密码登录页面内容。有俩种处理方式,一个是写俩个页面跳转使用,还有一种是一个页面俩个内容,切换的只是不同的内容,相同的内容保留。一般都是选择后者。

 二、基本思路

将标题以数组的方式循环渲染出来,这样我就可以拿到对应的index值,后面有用。

const loginitems = ref([{id: 1,text: "验证码",},{id: 2,text: "账号密码",},
]);
<divclass="login-item"v-for="(item, index) in loginitems":key="item.id":class="current === index ? 'move' : ''"@click="change(index)">{{ item.text }}</div>

用一个标识标记当前选中的是哪个,默认是第一个。

// 标识是哪个登录
const current = ref(0);

内容区域根据标识的值显示对应内容就行了!

选中样式使用动态绑定,判断当前的标记值current和index是否一样。 一样绑定上去,使用三元运算符判断就行了。

:class="current === index ? 'move' : ''"
.move {color: #f5b90f;padding-bottom: 5px;font-weight: 600;border-bottom: 2px solid #f5b90f;
}

点击某一项的时候,根据点击事件修改current的值。

// 切换验证码登录和账号密码登录
const change = (index) => {current.value = index;
};

不算很难,且容易理解!

三、完整示例代码

<template><!-- 登录页面 --><div class="container"><div class="main"><div class="head"><img src="../src/assets/static/image/demo.png" alt="" /><div class="title">智慧物业管理平台</div></div><!-- 登录内容区域 --><div class="login"><div class="login-options"><divclass="login-item"v-for="(item, index) in loginitems":key="item.id":class="current === index ? 'move' : ''"@click="change(index)">{{ item.text }}</div></div><div class="con"><div class="con-item" v-if="current == 0"><div class="input-items"><inputtype="text"v-model="phonevalue"placeholder="输入手机号"/></div><div class="input-items"><input type="text" v-model="codevalue" placeholder="输入验证码" /><div class="getcode" @click="getcode"><p v-if="isok == 1">获取验证码</p><p v-else>{{ countTime }}</p></div></div><div class="login-btn" @click="login">登录</div></div><div class="con-item" v-if="current == 1"><div class="input-items"><inputtype="text"v-model="phonevalue"placeholder="输入手机号"/></div><el-inputv-model="passwordinput"style="height: 41px; border: 0; outline: none"type="password"placeholder="输入密码"show-password/><div class="reset" @click="gotoforgetPassword">重置密码></div><div class="login-btn" @click="login">登录</div></div></div></div></div></div>
</template><script setup>
import { useRouter, useRoute } from "vue-router";
// 登录方式
const loginitems = ref([{id: 1,text: "验证码",},{id: 2,text: "账号密码",},
]);
const countTime = ref(60);
const isok = ref(1);
const phonevalue = ref("");
const codevalue = ref("");
const passwordinput = ref("");const router = useRouter();// 获取验证码倒计时
const getcode = () => {isok.value = 0;var Timer = setInterval(() => {countTime.value--;if (countTime.value <= 0) {clearInterval(Timer);isok.value = 1;countTime.value = 60;}}, 1000);
};
// 标识是哪个登录
const current = ref(0);// 切换验证码登录和账号密码登录
const change = (index) => {current.value = index;
};
// 忘记密码按钮
const gotoforgetPassword = () => {router.push({path: "/forgetPassword",});
};
// 登录进去首页
const login = () => {router.push({path: "/notice",});
};
</script><style scoped>
.container {display: flex;align-items: center;justify-content: center;height: 100vh;
}
.main {display: flex;align-items: center;flex-direction: column;
}
.head {display: flex;align-items: center;flex-direction: column;
}
.head .title {font-size: 22px;font-weight: 600;
}
.head img {width: 300px;height: 200px;
}
.move {color: #f5b90f;padding-bottom: 5px;font-weight: 600;border-bottom: 2px solid #f5b90f;
}
.login-options {margin: 20px 0 10px 0;display: flex;align-items: center;
}
.login {width: 300px;display: flex;flex-direction: column;
}
.login-item {box-sizing: border-box;padding-bottom: 5px;margin-right: 10px;
}
.input-items {display: flex;align-items: center;justify-content: space-between;background-color: #fff;border: 1px solid #ccc;border-radius: 5px;height: 40px;margin: 10px 0;
}
input {padding-left: 10px;outline: none;padding-right: 10px;border: 0;font-size: 14px;
}
.getcode {margin-right: 5px;
}
.con-item {position: relative;
}
.getcode p {width: 80px;height: 25px;text-align: center;background-color: #f5b90f;color: #fff;font-size: 12px;line-height: 25px;border-radius: 5px;cursor: pointer;
}
.login-btn {width: 100%;height: 30px;border-radius: 5px;text-align: center;line-height: 30px;color: #fff;margin: 45px 0;background-color: #f5b90f;cursor: pointer;
}
.reset {position: absolute;right: 0;color: #f5b90f;font-size: 12px;margin: 10px 0;
}
</style>

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

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

相关文章

通过人工智能增强的对话建立有意义的联系

人工智能如何重塑我们的交流&#xff1f;2024年最新对话AI趋势 在技术和人类互动比以往任何时候都更加复杂地交织在一起的时代&#xff0c;人工智能增强的对话已成为建立有意义的联系的关键要素。 这种转变不仅关乎效率&#xff0c;还关乎效率。 这是为了丰富沟通的结构。 在这…

12. Nginx进阶-Location

简介 Nginx的三大区块 在Nginx中主要配置包括三个区块&#xff0c;结构如下&#xff1a; http { #协议级别include /etc/nginx/mime.types;default_type application/octet-stream;log_format main $remote_addr - $remote_user [$time_local] "$r…

(十五)【Jmeter】取样器(Sampler)之HTTP请求

简述 操作路径如下: HTTP请求 (HTTP Sampler): 作用:模拟发送HTTP请求并获取响应。配置:设置URL、请求方法、请求参数等参数。使用场景:测试Web应用程序的HTTP接口性能。优点:支持多种HTTP方法和请求参数,适用于大多数Web应用程序测试。缺点:功能较为基础,对于复杂…

42、网络编程/多点通信和域套接字通信模型20240304

一、多点通信之广播的收发端实现 1.广播发送端代码&#xff1a; #include<myhead.h>int main(int argc, const char *argv[]) {int sfdsocket(AF_INET,SOCK_DGRAM,0);//创建套接字if(sfd-1){perror("socket,error");return -1;}int broadcast1;//设置套接字广…

opencv VideoCapture

videocapture顾名思义视频捕捉&#xff0c;主要是从视频文件、摄像头或网络摄像头获取视频流数据&#xff0c;并将其作为一系列帧进行处理。 我们这里主要实现了获取项目文件夹下的1.mp4视频文件&#xff0c;然后经过灰度变化、均值滤波、边缘检测然后将视频显示出来 #include…

ruoyi-vue-plus4.X版本实现内嵌swagger文档(简单解决方法)

1.在common模块中添加pom依赖 <dependency><groupId>org.webjars</groupId><artifactId>swagger-ui</artifactId><version>4.15.5</version></dependency>结果如下&#xff1a; 2.在ResourcesConfig配置类的addResourceHandl…

Git分支补充

我们在合并分支时并不总是一帆风顺&#xff0c;有些时候也会遇到“合并冲突”的问题。 下面我们来还原一下&#xff1a; 创建分支dev $ git checkout -b dev 切换到一个新分支 dev $ git branch * devmaster我们将 text.txt 内容改为 欢迎关注CSDNkeduo并将修改的内容提交到 d…

Linux-信号3_sigaction、volatile与SIGCHLD

文章目录 前言一、sigaction__sighandler_t sa_handler;__sigset_t sa_mask; 二、volatile关键字三、SIGCHLD方法一方法二 前言 本章内容主要对之前的内容做一些补充。 一、sigaction #include <signal.h> int sigaction(int signum, const struct sigaction *act,struc…

Prometheus结合Grafana监控MySQL,这篇不可不读!

&#x1f4e2;&#x1f4e2;&#x1f4e2;&#x1f4e3;&#x1f4e3;&#x1f4e3; 哈喽&#xff01;大家好&#xff0c;我是【IT邦德】&#xff0c;江湖人称jeames007&#xff0c;10余年DBA及大数据工作经验 一位上进心十足的【大数据领域博主】&#xff01;&#x1f61c;&am…

动态规划:LeetCode第10题 正则表达式匹配

题目&#xff1a; 给你一个字符串 s 和一个字符规律 p&#xff0c;请你来实现一个支持 . 和 * 的正则表达式匹配。 . 匹配任意单个字符* 匹配零个或多个前面的那一个元素 所谓匹配&#xff0c;是要涵盖 整个 字符串 s的&#xff0c;而不是部分字符串。 示例 1&#xff1a; …

软考57-上午题-【数据库】-数据库的控制功能

一、事务管理 1-1、事务的定义 事务是一个操作序列&#xff0c;这些操作&#xff0c;要么都做&#xff0c;要么都不做。 事务和程序是两个不同的概念&#xff0c;一般一个程序可以包含多个事务。 1-2、事务定义的语句 1、事务开始&#xff1a;BEGIN TRANSACTION 2、事务提…

【ES入门一:基础概念】

集群层面上的基础概念 集群 由多个es实例组成的叫做集群 节点 单个ES的服务实例叫做节点。每个实例都有自己的名字&#xff0c;就是在配置文件中配置的‘node.name’中的内容。为了标识每个节点&#xff0c;每个节点启动后都会分配一个UID&#xff0c;存储在data目录。每个…

线程的同步互斥机制3月4日

题目&#xff1a; 代码&#xff1a; #include <stdio.h> #include <pthread.h> #include <string.h> #include <semaphore.h> #include <unistd.h>sem_t sem1,sem2;void* callback1(void*arg) {while(1){if(sem_wait(&sem1)<0) //等待…

SwiftUI之CoreData详解(一)

coreData 是一种数据持久化的方案&#xff0c;是对SQLite的一种封装。一说到这种桌面化的数据库&#xff0c;我就无比的怀念Foxbase|Foxpro, 多好的数据库产品&#xff0c;被微软扼杀了&#xff0c;相当年教大学生妹子们国家二级数据库时都是手把手教的&#xff0c;呃~~~&#…

Java轻量延迟重试队列实现

背景 很多开放平台都使用Webhook的方式进行外部系统数据同步或者通知&#xff0c;对于Webhook请求的对外发送不进行重试显然有点说不过去。使用简单的while一个条件去重试N次好像达不到什么效果&#xff0c;只能是说有重试而已&#xff0c;而使用消息队列中间件好像依赖又太重…

【论文阅读】High-Resolution Image Synthesis with Latent Diffusion Model

High-Resolution Image Synthesis with Latent Diffusion Model 引用&#xff1a; Rombach R, Blattmann A, Lorenz D, et al. High-resolution image synthesis with latent diffusion models[C]//Proceedings of the IEEE/CVF conference on computer vision and pattern re…

SkyWalking链路追踪上下文TraceContext的追踪身份traceId生成的实现原理剖析

结论先行 SkyWalking 通过字节码增强技术实现&#xff0c;结合依赖注入和控制反转思想&#xff0c;以SkyWalking方式将追踪身份traceId编织到链路追踪上下文TraceContext中。 是不是很有趣&#xff0c;很有意思&#xff01;&#xff01;&#xff01; 实现原理剖析 TraceConte…

1.1_2 性能指标——速率、带宽、吞吐量

文章目录 1.1_2 性能指标——速率、带宽、吞吐量&#xff08;一&#xff09;速率&#xff08;二&#xff09;带宽&#xff08;三&#xff09;吞吐量 1.1_2 性能指标——速率、带宽、吞吐量 &#xff08;一&#xff09;速率 速率即数据率或称数据传输率或比特率。 速率就是“快…

Redis的设计与实现

Redis的设计与实现 数据结构和内部编码 type命令实际返回的就是当前键的数据结构类型&#xff0c;它们分别是&#xff1a;string(字符串)hash(哈希)、list(列表)、set(集合)、zset (有序集合)&#xff0c;但这些只是Redis对外的数据结构。 实际上每种数据结构都有自己底层的…

Docker Protainer可视化平台,忘记登录密码,重置密码。

由于好久没有登录portainer系统&#xff0c;导致忘记了登录密码&#xff0c;试了好多常用的密码都不对&#xff0c;无奈只能重置密码。 一、停止protainer 容器 查看容器ID和COMMAND 用于停止容器 docker ps -a停止容器 docker stop portainer二、查找volume data 宿主机所在…