<template>
<div class="All-View">
<div class="shell">
<div class="container a-container" id="a-container" ref="AContainer">
<el-form action="" method="" class="form" id="a-form">
<h2 class="form_title title">创建账号</h2>
<div class="form_icons">
<i class="iconfont icon-QQ">
<img src="../assets/img/qq.png">
</i>
<i class="iconfont icon-weixin">
<img src="../assets/img/wx.png">
</i>
<i class="iconfont icon-bilibili-line">
<img src="../assets/img/dh.png">
</i>
</div>
<span class="form_span">选择注册方式活电子邮箱注册</span>
<input type="text" class="form_input" placeholder="Name" v-model="data.info.name">
<input type="text" class="form_input" placeholder="Email" v-model="data.info.email">
<input class="form_input" placeholder="Password" type="password" v-model="data.info.passWord">
<button class="form_button button submit" @click="ToggleFunction('enroll')">SIGN UP</button>
</el-form>
</div>
<div class="container b-container" id="b-container" ref="BContainer">
<form action="" method="" class="form" id="b-form">
<h2 class="form_title title">登入账号</h2>
<div class="form_icons">
<i class="iconfont icon-QQ">
<img src="../assets/img/qq.png">
</i>
<i class="iconfont icon-weixin">
<img src="../assets/img/wx.png">
</i>
<i class="iconfont icon-bilibili-line">
<img src="../assets/img/dh.png">
</i>
</div>
<span class="form_span">选择登录方式活电子邮箱登录</span>
<input type="text" class="form_input" placeholder="Email" v-model="data.info.name">
<input class="form_input" placeholder="Password" type="password" v-model="data.info.passWord">
<a class="form_link">忘记密码?</a>
<button class="form_button button submit" @click="ToggleFunction('login')">SIGN IN</button>
</form>
</div>
<div class="switch" id="switch-cnt" ref="SwitchCnt">
<div class="switch_circle" ref="SwiCir1"></div>
<div class="switch_circle switch_circle-t" ref="SwiCir2"></div>
<div class="switch_container" id="switch-c1" ref="SwitchC1">
<h2 class="switch_title title" style="letter-spacing: 0;">Welcome Back!</h2>
<p class="switch_description description">已经有账号了嘛,去登入账号来进入奇妙世界吧!!!</p>
<button class="switch_button button switch-btn" ref="SwitchBtn1" @click="RegisterTheFunction">SIGN IN</button>
</div>
<div class="switch_container is-hidden" id="switch-c2" ref="SwitchC2">
<h2 class="switch_title title" style="letter-spacing: 0;">Hello Friend!</h2>
<p class="switch_description description">去注册一个账号,成为尊贵的粉丝会员,让我们踏入奇妙的旅途!</p>
<button class="switch_button button switch-btn" ref="SwitchBtn2" @click="RegisterTheFunction">SIGN UP</button>
</div>
</div>
</div>
</div>
</template>
<script setup>
import {onMounted, ref, reactive, getCurrentInstance} from "vue";
import {debounce} from "../tool/antiVibrationThrottling.js";
//1
let switchCtn = document.querySelector("#switch-cnt");
const SwitchCnt=ref(null);
//1
let switchC1 = document.querySelector("#switch-c1");
const SwitchC1=ref(null);
//1
let switchC2 = document.querySelector("#switch-c2");
const SwitchC2=ref(null);
//1
let switchCircle = document.querySelectorAll(".switch_circle");
const SwiCir1=ref(null);
const SwiCir2=ref(null);
//1
let switchBtn = document.querySelectorAll(".switch-btn");
const SwitchBtn1=ref(null);
const SwitchBtn2=ref(null);
//1
let aContainer = document.querySelector("#a-container");
const AContainer=ref(null);
//1
let bContainer = document.querySelector("#b-container");
const BContainer=ref(null);
//1
let allButtons = document.querySelectorAll(".submit");
let getButtons = (e) => e.preventDefault()
let changeForm = (e) => {}
const data=reactive({
info:{
name:null,
passWord:null,
email:null
},
globalProperties:getCurrentInstance().appContext.config.globalProperties,
})
/**
* 注册函数
* */
function RegisterTheFunction(){
console.log(SwitchCnt);
setTimeout(()=>{
SwitchCnt.value.classList.add('is-gx');
},1500)
SwitchCnt.value.classList.toggle("is-txr");
SwiCir1.value.classList.toggle('is-txr');
SwiCir2.value.classList.toggle("is-txr");
SwitchC1.value.classList.toggle("is-hidden");
SwitchC2.value.classList.toggle("is-hidden");
AContainer.value.classList.toggle("is-txl");
BContainer.value.classList.toggle("is-txl");
BContainer.value.classList.toggle("is-z");
}
/**
* 登录函数-防抖处理
* */
const ToggleFunction=debounce((text)=>{
//登录
if (text==='login'){
//注册
}else if (text==='enroll'){
}
console.log(123,text)
},2000)
onMounted(()=>{
// 点击切换
let shell = (e) => {
console.log('2222')
for (var i = 0; i < allButtons.length; i++)
allButtons[i].addEventListener("click", getButtons);
for (var i = 0; i < switchBtn.length; i++)
switchBtn[i].addEventListener("click", changeForm)
}
window.addEventListener("load", shell);
})
</script>
<style scoped >
*{
/*字体无法选中*/
user-select: none;
}
body{
width: 100%;
height: 100vh;
display: flex;
justify-content: center;
align-items: center;
font-size: 12px;
background-color: #ecf0f3;
color: #a0a5a8;
}
.form_icons{
display: flex;
}
.All-View{
width: 100%;
min-height: 100vh;
display: flex;
align-items: center;
}
.shell{
margin: 0 auto;
position: relative;
width: 1000px;
min-width: 1000px;
min-height: 600px;
height: 600px;
padding: 25px;
background-color: #ecf0f3;
box-shadow: 10px 10px 10px #d1d9e6,-10px -10px 10px #f9f9f9;
border-radius: 12px;
overflow: hidden;
}
/*设置响应式*/
@media (max-width: 1200px) {
.shell{
transform: scale(0.7);
}
}
@media (max-width: 100px) {
.shell{
transform: scale(0.6);
}
}
@media (max-width: 800px) {
.shell{
transform: scale(0.5);
}
}
@media (max-width: 600px) {
.shell{
transform: scale(0.4);
}
}
.container{
display: flex;
justify-content: center;
align-items: center;
position: absolute;
top: 0;
width: 600px;
height: 100%;
padding: 25px;
background-color: #ecf0f3;
transition: 1.25s;
}
.form{
display: flex;
justify-content: center;
align-items: center;
flex-direction: column;
width: 100%;
height: 100%;
}
.iconfont{
display: flex;
justify-content: center;
align-items: center;
width: 40px;
height: 40px;
margin: 0 5px;
padding: 4px;
overflow: hidden;
/*border: rgba(0,0,0,0.5) 2px solid;*/
border-radius: 50%;
/*font-size: 25px;*/
/*opacity:透明度*/
opacity: 0.5;
}
/*img{*/
/* width: 100%;*/
/* height: 100%;*/
/*}*/
.iconfont:hover{
opacity: 1;
transition: 0.125s;
cursor: pointer;
}
.form_input{
width: 350px;
height: 40px;
margin: 4px 0;
padding-left: 25px;
font-size: 25px;
/*letter-spacing:表示字母之间的间距为*/
letter-spacing: 0.15px;
border: none;
outline: none;
background-color: #ecf0f3;
transition: 0.25s ease;
border-radius: 8px;
box-shadow: inset 2px 2px 4px #d1d9e6,inset -2px -2px 4px #f9f9f9;
}
.form_input:focus{
box-shadow: inset 4px 4px 4px #d1d9e6,inset -4px -4px 4px #f9f9f9;
}
.form_span{
margin-top: 30px;
margin-bottom: 12px;
}
.form_link{
color: #181818;
font-size: 15px;
margin-top: 25px;
border-bottom: 1px solid #a0a5a8;
line-height: 2;
}
.title{
font-size: 34px;
font-weight: 700;
line-height: 3;
color: #181818;
letter-spacing: 10px;
}
.description{
font-size: 14px;
letter-spacing: 0.25px;
text-align: center;
line-height: 1.6;
}
.button{
width: 180px;
height: 50px;
border-radius: 25px;
margin-top: 50px;
font-weight: 700;
font-size: 14px ;
letter-spacing: 1.15px;
background-color: #4b70E2;
color: #f9f9f9;
box-shadow: 8px 8px 16px #d1d9e6,-8px -8px 16px #f9f9f9;
border: none;
outline: none;
}
.a-container{
z-index: 100;
left: calc(100% - 600px);
}
.b-container{
z-index: 0;
left: calc(100% - 600px);
}
.switch{
display: flex;
justify-content: center;
align-items: center;
position: absolute;
top: 0;
left: 0;
height: 100%;
width: 400px;
padding: 50px;
z-index: 200;
transition: 1.25s;
background-color: #ecf0f3;
overflow: hidden;
box-shadow: 4px 4px 10px #d1d9e6,-4px -4px 10px #d1d9e6;
}
.switch_circle{
position: absolute;
width: 500px;
height: 500px;
border-radius: 50%;
background-color: #ecf0f3;
box-shadow: inset 8px 8px 12px #b8bec7,inset -8px -8px 12px #ffffff;
bottom: -60%;
left: -60%;
transition: 1.25s;
}
.switch_circle-t{
top: -30%;
left: 60%;
width: 300px;
height: 300px;
}
.switch_container{
display: flex;justify-content: center;align-items: center;
flex-direction: column;
position: absolute;
width: 400px;
padding: 50px 55px;
transition: 1.25s;
}
.switch_button{
cursor: pointer;
}
.switch_button:hover,
.submit:hover{
box-shadow: 6px 6px 10px #d1d9e6,-6px -6px 10px #f9f9f9;
transform: scale(0.985);
transition: 0.25s;
}
.switch_button:active,
.switch_button:focus{
box-shadow: 2px 2px 6px #d1d9e6,-2px -2px 6px #f9f9f9;
transition: 0.25s;
}
.is-txr {
left: calc(100% - 400px);
transition: 1.25s;
transform-origin: left;
}
.is-txl {
left: 0;
transition: 1.25s;
transform-origin: right;
}
.is-z {
z-index: 200;
transition: 1.25s;
}
.is-hidden {
visibility: hidden;
opacity: 0;
position: absolute;
transition: 1.25s;
}
.is-gx {
animation: is-gx 1.25s;
}
@keyframes is-gx {
0%,
10%,
100% {
width: 400px;
}
30%,
50% {
width: 500px;
}
}
</style>
Vue版本b站原生HTML!!!!
效果图