登录页面B站修改(Vue)

<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!!!!

效果图

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值