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

文章目录

  • 📚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地址、端口…

postgresql|数据库|恢复备份的时候报错:pg_restore: implied data-only restore的处理方案

一&#xff0c; 前情回顾 某次在使用pg_dump命令逻辑备份出来的备份文件对指定的几个表恢复的时候&#xff0c;报错pg_restore: implied data-only restore 当然&#xff0c;遇到问题首先就是百度了&#xff0c;但好像没有什么明确的解决方案&#xff0c;具体的报错命令和…

SpringData MongoDB学习总结

目录 一、简介 二、搭建 三、操作 &#xff08;1&#xff09;、集合操作 &#xff08;2&#xff09;、文档操作 相关注解 POJO 添加文档 查询文档 更新文档 删除文档 聚合操作 一、简介 NoSql数据库 键值对key-value 存储redis用户缓存&#xff0c;用户信息回话&a…

【深度学习 | 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…

C#控制台程序读取输入按键非阻塞方式

参考内容&#xff1a; http://www.dutton.me.uk/2009-02-24/non-blocking-keyboard-input-in-c/ 相关代码&#xff1a; while (true) {if (Console.KeyAvailable){ConsoleKeyInfo key Console.ReadKey(true);switch (key.Key){case ConsoleKey.F1:Console.WriteLine("Y…

【计算机网络笔记】分组交换 vs 电路交换

系列文章目录 什么是计算机网络&#xff1f; 什么是网络协议&#xff1f; 计算机网络的结构 数据交换之电路交换 数据交换之报文交换和分组交换 系列文章目录 以一个具体的场景为例&#xff1a;N个用户共享这个1M bps链路。假设每一个用户活动时需要的链路带宽是100kb/s&#…

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

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

Maven 使用教程(二)

一、如何创建JAR并将其安装在本地存储库中&#xff1f; 制作JAR文件非常简单&#xff0c;可以通过执行以下命令来完成&#xff1a; mvn package现在可以查看${project.basedir}/target目录&#xff0c;您将看到生成的JAR文件。 现在&#xff0c;您需要将生成的工件&#xff0…

华为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) 当点击一…

java中char类型和byte类型的区别?

在Java中&#xff0c;char 类型和 byte 类型是两种不同的数据类型&#xff0c;以下是它们之间的主要区别&#xff1a; 表示范围&#xff1a;char 类型用于表示Unicode字符&#xff0c;它可以表示从U0000到UFFFF之间的字符。而 byte 类型是一个8位的有符号整数&#xff0c;可以表…

基于Spring Boot开发的汽车租赁管理系统

文章目录 项目介绍主要功能截图:后台前台部分代码展示设计总结项目获取方式🍅 作者主页:超级无敌暴龙战士塔塔开 🍅 简介:Java领域优质创作者🏆、 简历模板、学习资料、面试题库【关注我,都给你】 🍅文末获取源码联系🍅 项目介绍 基于Spring Boot开发的汽车租赁…

动态规划算法(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;推送票据、授权成功、授…