前端小案例 | 一个带切换的登录注册界面(静态)

文章目录

  • 📚HTML
  • 📚CSS
  • 📚JS

在这里插入图片描述

📚HTML

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>一个登录注册界面</title><link rel="stylesheet" href="./style.css">
</head>
<body><div class="container"><!-- 登录 --><div class="login-box"><div class="apple-btn login-apple"><li class="red-btn"></li><li class="yellow-btn"></li><li class="green-btn"></li></div><div class="title">Login</div><div class="input"><input type="text" id="login-user" placeholder="Input your username"></div><div class="input"><input type="password" id="login-password" placeholder="Input your password"></div><div class="btn login-btn"><span>登录</span></div><div class="change-box login-change"><div class="change-btn toSign"><span>去注册</span></div></div></div><!-- 注册 --><div class="sign-box"><div class="apple-btn sign-apple"><li class="red-btn"></li><li class="yellow-btn"></li><li class="green-btn"></li></div><div class="title">Sign</div><div class="input"><input type="text" id="sign-user" placeholder="Have A Good Name?"></div><div class="input"><input type="password" id="sign-password" placeholder="Keep Secret"></div><div class="btn sign-btn"><span>注册</span></div><div class="change-box sign-change"><div class="change-btn toLogin"><span>去登陆</span></div></div></div></div><script src="./script.js"></script>
</body>
</html>

📚CSS

* {padding: 0px;margin: 0px;
}html, body {height: 100%;width: 100%;background-image: linear-gradient(120deg, #A59ACA, #F7CDBC);overflow: hidden;
}.container {position: absolute;height: 350px;width: 600px;background-color: rgba(255, 255, 255, .9);/* 先通过 top: 50%; left: 50%; 将元素的左上角移到其容器的中心 *//* 然后再通过 translate(-50%, -50%) 向左和向上移动元素的一半宽度和一半高度 *//* 以此达到完全居中的效果,这里先-30%,之后搭配.container-show借助js有个载入的效果 */top: 50%;left: 50%;transform: translate(-50%, -30%);/* 设置圆角半径为10px,实现圆角效果 */border-radius: 10px;box-shadow: 0px 0px 10px rgba(17, 39, 59, 0.8);border: 1px solid rgba(17, 39, 59, 1);overflow: hidden;/* 设置盒模型为border-box,以确保元素的宽度和高度包括边框和内边距 */box-sizing: border-box;/* 设置初始不透明度为0,即完全透明 */opacity: 0;/* 设置过渡效果的持续时间为1秒 */transition: 1s;
}/* 搭配js实现载入效果 */
.container-show {transform: translate(-50%,-50%) ;opacity: 1;
}/* -----------start登录和注册的通用部分------------ */
/* 标题 */
.title {margin-top: 10px;position: relative;height: 40px;width: 100%;font-size: 30px;display: flex;justify-content: center;align-items: center;/* 文本转换为大写 */text-transform: uppercase;font-weight: 500;letter-spacing: 3px;transition: .4s;
}
/* 输入框部分 */
.input {width: 400px;height: 45px;position: relative;margin: 40px auto;
}
/* 输入框 */
input {position: relative;width: 100%;height: 100%;border: none;outline: none;padding-left: 15px;font-size: 16px;/* 背景颜色为具有40%不透明度的白色 */background-color: rgba(255, 255, 255, 0.4);/* 设置圆角为45像素,以实现圆形输入框效果 */border-radius: 45px;/* 过渡效果持续时间为0.4秒 */transition: .4s;
}
/* 按钮 */
.btn {height: 50px;width: 160px;position: relative;margin: -10px auto;background-color: rgba(0, 0, 0, 0.1);border-radius: 20px;color: rgba(255, 255, 255, .4);display: flex;justify-content: center;align-items: center;cursor: pointer;transition: .4s;
}
/* 注册登录切换按钮 */
.change-box {position: absolute;/* 刚开始隐藏 */height: 0px;width: 100%;/* 使用多边形裁剪路径,实现特殊形状 */clip-path: polygon(100% 50%, 50% 100%, 100% 100%);bottom: 0px;transition: .4s;
}
.change-btn {position: absolute;bottom: 30px;right: 40px;font-size: 20px;/* 初始状态下隐藏按钮 */display: none;font-weight: 500;
}
.change-btn:hover {/* 鼠标悬停时添加文本阴影效果,增加立体感 */text-shadow: 0px 0px 3px rgba(200, 200, 200, .8);cursor: pointer;
}/* 鼠标进入container整体的那个给切换按钮让位置的效果 */
.container:hover .title {/* 标题变小 */font-size: 20px;
}
.container:hover input {/* 上移 */transform: translate(0, -30%);
}
.container:hover .btn {/* 上移且变小 */height: 30px;width: 90px;transform: translate(0,-30%);font-size: 12px;
}
.container:hover .change-box {/* 出现 */height: 200px;
}
.container:hover .change-btn {/* 出现 */display: block;
}
/* -----------finish登录和注册的通用部分------------ *//* -----------------start登录部分----------------- */
.login-box {position: absolute;height: 100%;width: 100%;background-color: rgba(17, 39, 59, 0.8);transition: .4s;z-index: 1;/* 元素的左上角作为变换的锚点。这样可以实现从左上角开始的动画效果。 */transform-origin: 0 100%;
}
/* 登录标题加阴影 */
.login-box .title {color: white;text-shadow: 0px 0px 7px rgba(255, 255, 255, .9);
}
/* input输入状态阴影 */
.login-box input:focus {box-shadow: 0 0 10px rgba(1,1,1, .8);
}
.login-box input {/* 将光标的颜色设置为白色 */caret-color: white;color: rgba(255, 255, 255, 0.8);
}
.login-btn:hover {color: white;background-color: #57606f;box-shadow: rgba(0, 0, 0, 0.1);text-shadow: 0px 0px 2px rgba(0, 0, 0, 0.1);
}
.login-change {background-color: rgba(255, 255, 255, .8);
}
/* -----------------finish登录部分----------------- *//* ------------------start注册部分----------------- */
.sign-box {position: absolute;height: 100%;width: 100%;background-color: rgba(255, 255, 255, .8);transform-origin: 0 100%;/* 在元素上应用一个旋转变换,使其顺时针旋转90度 */transform: rotate(90deg);transition: .4s;z-index: 1;
}
.sign-box  .title {text-shadow: 0 0 10px rgba(200, 200, 200, .8);font-weight: 500;
}
.sign-box input {box-shadow: 0 0 3px black;
}
.sign-box .btn {color: black;background-color: #e1dddf;transition:.5s;
}
.sign-box .btn:hover {color: white;background-color: #4781C3;
}
.sign-change {background-color: rgba(17, 39, 59, 0.8);
}
.toLogin {color: white;
}
/* ------------------finish注册部分----------------- *//* ------------------start那三个小圆点----------------- */
.apple-btn {position: absolute;height: 15px;width: 65px;top: 3px;}
.apple-btn li{list-style: none;position: relative;height: 15px;width: 15px;border-radius: 15px;opacity: 0;
}.login-apple li{left: 5px;float: left;
}.sign-apple li {right: 5px;float: right;
}.sign-apple {right: 5px;
}li:nth-child(2) {margin: 0px 2px
}.red-btn {background-color: #F03752;transition: .3s;transform: translate(0, -50%);
}.yellow-btn {background-color: #F3993A;/* transition-delay: .2s; */transition: .6s;transform: translate(0, -50%);
}.green-btn {background-color: #108B96;transition: .9s;transform: translate(0, -50%);
}.container:hover .red-btn {opacity: 1;transform: translate(0,0);
}
.container:hover .yellow-btn {opacity: 1;transform: translate(0,0);
}
.container:hover .green-btn {opacity: 1;transform: translate(0,0);
}
/* ------------------finish那三个小圆点----------------- *//* 结合js的切换效果——旋转 */
.animate_login {/* 元素逆时针旋转90度 */transform: rotate(-90deg);
}
.animate_sign {/* 将元素恢复到初始状态 */transform: rotate(0deg) !important;
}

📚JS

// 根据选择器获取元素
const getSelector = ele => {return typeof ele === "string" ? document.querySelector(ele) : "";
}// 登录注册载入
const containerShow = () => {var show = getSelector(".container")show.className += " container-show"
}window.onload = containerShow;// 登录注册页切换
((window, document) => {// 登录 -> 注册let toSignBtn = getSelector(".toSign"),toLoginBtn = getSelector(".toLogin")loginBox = getSelector(".login-box"),signBox = getSelector(".sign-box");toSignBtn.onclick = () => {loginBox.className += ' animate_login';signBox.className += ' animate_sign';}toLoginBtn.onclick = () => {loginBox.classList.remove("animate_login");signBox.classList.remove("animate_sign");}})(window, document);

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

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

相关文章

紫光同创FPGA实现UDP协议栈网络视频传输,基于YT8511和RTL8211,提供4套PDS工程源码和技术支持

目录 1、前言免责声明 2、相关方案推荐我这里已有的以太网方案紫光同创FPGA精简版UDP方案紫光同创FPGA带ping功能UDP方案 3、设计思路框架OV7725摄像头配置及采集OV5640摄像头配置及采集UDP发送控制视频数据组包数据缓冲FIFOUDP协议栈详解RGMII转GMII动态ARPUDP协议IP地址、端口…

【深度学习 | Transformer】释放注意力的力量:探索深度学习中的 变形金刚,一文带你读通各个模块 —— Positional Encoding(一)

&#x1f935;‍♂️ 个人主页: AI_magician &#x1f4e1;主页地址&#xff1a; 作者简介&#xff1a;CSDN内容合伙人&#xff0c;全栈领域优质创作者。 &#x1f468;‍&#x1f4bb;景愿&#xff1a;旨在于能和更多的热爱计算机的伙伴一起成长&#xff01;&#xff01;&…

kettle应用-从数据库抽取数据到excel

本文介绍使用kettle从postgresql数据库中抽取数据到excel中。 首先&#xff0c;启动kettle 如果kettle部署在windows系统&#xff0c;双击运行spoon.bat或者在命令行运行spoon.bat 如果kettle部署在linux系统&#xff0c;需要执行如下命令启动 chmod x spoon.sh nohup ./sp…

视频监控系统/安防视频平台EasyCVR广场视频细节优化

安防视频监控系统/视频云存储/安防监控EasyCVR视频汇聚平台基于云边端智能协同&#xff0c;支持海量视频的轻量化接入与汇聚、转码与处理、全网智能分发、视频集中存储等。安防视频汇聚平台EasyCVR拓展性强&#xff0c;视频能力丰富&#xff0c;可实现视频监控直播、视频轮播、…

华为9.20笔试 复现

第一题 丢失报文的位置 思路&#xff1a;从数组最小索引开始遍历 #include <iostream> #include <vector> using namespace std; // 求最小索引值 int getMinIdx(vector<int> &arr) {int minidx 0;for (int i 0; i < arr.size(); i){if (arr[i] …

spring boot Rabbit高级教程

消息可靠性 生产者重试机制 首先第一种情况&#xff0c;就是生产者发送消息时&#xff0c;出现了网络故障&#xff0c;导致与MQ的连接中断。 为了解决这个问题&#xff0c;SpringAMQP提供的消息发送时的重试机制。即&#xff1a;当RabbitTemplate与MQ连接超时后&#xff0c;…

【git】500 Whoops, something went wrong on our end.

在访问公的的git 时出现了500错误提示. 500 Whoops, something went wrong on our end. 哎呀&#xff0c;我们这边出了问题。 TMD 出了什么问题了&#xff1f;&#xff1f;&#xff1f;一脸懵逼。 登录git 服务器。 查看git的状态。 命令&#xff1a; gitlab-ctl statu…

互联网Java工程师面试题·Java 总结篇·第一弹

目录 1、面向对象的特征有哪些方面&#xff1f; 2、访问修饰符 public,private,protected,以及不写&#xff08;默认&#xff09;时的区别&#xff1f; 3、String 是最基本的数据类型吗&#xff1f; 4、float f3.4;是否正确&#xff1f; 5、short s1 1; s1 s1 1;有错吗…

华为OD机考算法题:开心消消乐

题目部分 题目开心消消乐难度易题目说明给定一个 N 行 M 列的二维矩阵&#xff0c;矩阵中每个位置的数字取值为 0 或 1&#xff0c;矩阵示例如&#xff1a; 1 1 0 0 0 0 0 1 0 0 1 1 1 1 1 1 现需要将矩阵中所有的 1 进行反转为 0&#xff0c;规则如下&#xff1a; 1) 当点击一…

动态规划算法(3)--0-1背包、石子合并、数字三角形

目录 一、0-1背包 1、概述 2、暴力枚举法 3、动态规划 二、石子合并问题 1、概述 2、动态规划 3、环形石子怎么办&#xff1f; 三、数字三角形问题 1、概述 2、递归 3、线性规划 四、租用游艇问题 一、0-1背包 1、概述 0-1背包&#xff1a;给定多种物品和一个固定…

ChatGPT,AIGC 数据库应用 Mysql 常见优化30例

使用ChatGPT,AIGC总结出Mysql的常见优化30例。 1. 建立合适的索引:在Mysql中,索引是重要的优化手段,可以提高查询效率。确保表的索引充分利用,可以减少查询所需的时间。如:create index idx_name on table_name(column_name); 2. 避免使用select * :尽可能指定要返回的…

HTML笔记

注释标签&#xff1a;<!-- --> 标题标签&#xff1a;&#xff08;作用范围依次递减&#xff09; <h1></h1> <h2></h2> <h3></h3> <h4></h4> <h5></h5> <h6></h6> 段落标签&#xff1a;<p&g…

抖音开放平台第三方代小程序开发,授权事件、消息与事件通知总结

大家好&#xff0c;我是小悟 关于抖音开放平台第三方代小程序开发的两个事件接收推送通知&#xff0c;是开放平台代小程序实现业务的重要功能。 授权事件推送和消息与事件推送类型都以Event的值判断。 授权事件推送通知 授权事件推送包括&#xff1a;推送票据、授权成功、授…

智能油烟机 优化烹饪体验

如果说空调是夏天最伟大的发明&#xff0c;那么油烟机则是健康厨房的伟大推进者。随着科技的发展&#xff0c;智能化的油烟机逐渐走进了人们的日常生活。每当我们在爆炒、油炸食物的时候&#xff0c;油烟总能呛得人眼睛痛、鼻子难受&#xff0c;传统的油烟机面前我们还需要手动…

vue3后台管理框架之路由配置

pnpm install vue-router 在src新建文件夹views和router 1.1基本 路由配置 :hash 路由模式 // 对外配置路由 import Login from @/views/login/index.vue import Home from @/views/home/index.vue import Error from @/views/404/index.vue export cons

JavaScript基础知识13——运算符:一元运算符,二元运算符

哈喽&#xff0c;大家好&#xff0c;我是雷工。 JavaScript的运算符可以根据所需表达式的个数&#xff0c;分为一元运算符、二元运算符、三元运算符。 一、一元运算符 1、一元运算符&#xff1a;只需要一个表达式就可以运算的运算符。 示例&#xff1a;正负号 一元运算符有两…

英语——歌曲篇——All Out Of Love

All Out Of Love [Air Supply失落的爱] 歌词 I’m lying alone with my head on the phone Thinking of you till it hurts I know you hurt too but what else can we do Tormented and torn apart I wish I could carry your smile in my heart For times when my life se…

自动驾驶学习笔记(五)——绕行距离调试

#Apollo开发者# 学习课程的传送门如下&#xff0c;当您也准备学习自动驾驶时&#xff0c;可以和我一同前往&#xff1a; 《自动驾驶新人之旅》免费课程—> 传送门 《2023星火培训【感知专项营】》免费课程—>传送门 文章目录 前言 调试内容 打开在线编辑器 打开pl…

基础算法:二分查找

目录 1. 二分查找2. 补充&#xff1a;二进制运算2.1 十进制与二进制的相互转换2.1.1 十进制转二进制2.1.2 二进制转十进制 2.2 机器数 真值2.3 原码 补码 反码2.4 二进制的加减乘除2.5 移位运算 1. 二分查找 思想&#xff1a; 有序数组&#xff0c;从中找值 实现&#xff1a;…

IDEA报Error:java:无效的源发行版13解决方式

出现问题原因&#xff1a;原本项目是spingboot2.0版本开发的&#xff0c;IDEA启动正常&#xff0c;后期新项目使用spingboot3.0&#xff0c;通过原来的IDEA版本及JDK1.8启动报上述错误&#xff0c;以下为版本文件 解决方式&#xff1a; 项目背景&#xff1a;项目已经上线&…