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

文章目录

  • 📚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.rhkb.cn/news/159571.html

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

相关文章

HBase 表如何按照某表字段排序后顺序存储的方法?

首先需要明白HBase表的排序规则&#xff1a; &#xff08;1&#xff09;rowkey排序&#xff08;字典排序&#xff09;——升序 &#xff08;2&#xff09;Column排序&#xff08;字典排序&#xff09;——升序 &#xff08;3&#xff09;时间戳排序——降序 rowkey 字典序排序…

SpringMVC的拦截器(Interceptor)

拦截器简介 SpringMVC的拦截器Interceptor&#xff0c;主要是对Controller资源访问时进行拦截的基本操作的技术&#xff0c;当然拦截后可以进行权限控制&#xff0c;功能增强等都是可以的。拦截器类似于JavaWeb开发中的Filter&#xff0c;他们之间的区别如下图所示 Filter技术…

设计模式再探——适配器模式

目录 一、背景介绍二、思路&方案三、过程1.适配器模式简介2.适配器模式的类图3.适配器模式代码4.适配器模式&#xff0c;类适配器模式和对象的对比5.适配器模式终极奥秘 四、总结五、升华 一、背景介绍 最近公司在对业务模型做构建的时候&#xff0c;涉及到和三方系统的对…

学习嵌入式系统的推荐步骤:

学习嵌入式系统的推荐步骤&#xff1a; 00001. C语言&#xff1a;作为基础中的基础&#xff0c;选择一本常用的C语言教材&#xff0c;并注意通过实践编写习题、编译运行代码来加深理解。动手实践是非常重要的。 00002. 00003. 微机原理与接口技术&#xff1a;这本教材将…

Web攻防01-ASP应用相关漏洞-HTTP.SYSIIS短文件文件解析ACCESS注入

文章目录 ASP-默认安装-MDB数据库泄漏下载漏洞漏洞描述 ASP-中间件 HTTP.SYS&#xff08;CVE-2015-1635&#xff09;1、漏洞描述2、影响版本3、漏洞利用条件4、漏洞复现 ASP-中间件 IIS短文件漏洞1、漏洞描述2、漏洞成因:3、应用场景&#xff1a;4、利用工具&#xff1a;5、漏洞…

深入理解Scrapy

Scrapy是什么 An open source and collaborative framework for extracting the data you need from websites. In a fast, simple, yet extensible way. Scrapy是适用于Python的一个快速、简单、功能强大的web爬虫框架&#xff0c;通常用于抓取web站点并从页面中提取结构化的数…

嵌入式软硬分工与职业发展

嵌入式软硬分工与职业发展&#xff1a; 嵌入式系统分为软件和硬件两个方向。大公司通常明确员工从事嵌入式软件或硬件工作&#xff0c;分工合理利用经验解决问题。小公司可能综合工作&#xff0c;但长期不利深入学习和发展&#xff0c;对个人竞争力不利。嵌入式软件一般指底层…

Python学习基础笔记七十一——模块和库2

将模块放入包中 模块文件&#xff0c;功能分的比较清晰。文件与文件之间&#xff0c;是通过import这种调用关系。 当我们的项目模块文件特别多的时候&#xff0c;我们还需要将这些模块文件根据功能划分到不同的目录中。 这些放模块文件的目录&#xff0c;python把它们称之为p…

公司销售个人号如何管理?

微信管理系统可以帮助企业解决哪些问题呢&#xff1f; 一、解决聊天记录监管问题 1.聊天记录的保存&#xff0c;让公司的管理者可以随时查看公司任意销售与客户的聊天记录&#xff0c;不用一个一个员工逐一去看&#xff0c;方便管理&#xff1b; 2.敏感词监控&#xff0c;管理者…

git操作说明

SourceURL:file:///home/kingqi/桌面/git操作说明.doc 本地建立仓库 mkdir namebao cd namebao pwd git init 初始化 cd .git/ gedit config 本地存储 进入目录上传全部文件 git add . 提交 git commit -m “说明” 远程提交 复制gitee或者github仓库链接 可以直…

Eslint配置 Must use import to load ES Module(已解决)

最近在配置前端项目时&#xff0c;eslint经常会碰到各种报错&#xff08;灰常头疼~&#xff09; Syntax Error Error No ESLint configuration found.Syntax Error: Error: D:\dmq\dmq-ui.eslintrc.js: Environment key “es2021” is unknown at Array.forEach ()error in ./…

实验四:回溯算法的设计与分析

某不知名学校大二算法课实验报告 题目来自力扣 第一题&#xff1a;幂集 力扣题目链接&#xff1a;幂集 题目描述&#xff1a; 幂集。编写一种方法&#xff0c;返回某集合的所有子集。集合中不包含重复的元素。 说明&#xff1a;解集不能包含重复的子集。 示例: 输入&#xf…

问:TCP/IP协议栈在内核态的好还是用户态的好

“TCP/IP协议栈到底是内核态的好还是用户态的好&#xff1f;” 问题的根源在于&#xff0c;干嘛非要这么刻意地去区分什么内核态和用户态。 引子 为了不让本文成为干巴巴的说教&#xff0c;在文章开头&#xff0c;我以一个实例分析开始。 最近一段时间&#xff0c;我几乎每…

【基础篇】七、Flink核心概念

文章目录 1、并行度2、并行度的设置3、算子链4、禁用算子链5、任务槽6、任务槽和并行度的关系 1、并行度 要处理的数据量很多时&#xff0c;可以把一个算子的操作&#xff08;比如前面demo里的flatMap、sum&#xff09;&#xff0c;"复制"多份到多个节点&#xff0c…

phpcms_v9模板制作及二次开发常用代码

0:调用最新文章&#xff0c;带所在版块 {pc:get sql"SELECT a.title, a.catid, b.catid, b.catname, a.url as turl ,b.url as curl,a.id FROM v9_news a, v9_category b WHERE a.catid b.catid ORDER BY a.id DESC " num"15" cache"300"} {lo…

postman接口测试

HTTP的接口测试工具有很多&#xff0c;可以进行http请求的方式也有很多&#xff0c;但是可以直接拿来就用&#xff0c;而且功能还支持的不错的&#xff0c;我使用过的来讲&#xff0c;还是postman比较上手。 优点&#xff1a; 1、支持用例管理 2、支持get、post、文件上传、响…

计网面试复习自用

五层&#xff1a; 应用层&#xff1a;应用层是最高层&#xff0c;负责为用户提供网络服务和应用程序。在应用层&#xff0c;用户应用程序与网络进行交互&#xff0c;发送和接收数据。典型的应用层协议包括HTTP&#xff08;用于网页浏览&#xff09;、SMTP&#xff08;用于电子邮…

如何提高企业工作微信的管理效率?

微信作为一款拥有数亿用户的软件&#xff0c;其使用频率在全国范围内居高不下。随着企业的不断发展&#xff0c;微信在工作中的应用也变得越来越广泛。为了更好地服务客户并提升业务效益&#xff0c;企业通常会为新入职员工配置工作微信以便于业务沟通和客户服务。然而&#xf…

iCloud涨价不用慌!学会使用群晖生态将本地SSD“上云”

文章目录 前言本教程解决的问题是&#xff1a;按照本教程方法操作后&#xff0c;达到的效果是想使用群晖生态软件&#xff0c;就必须要在服务端安装群晖系统&#xff0c;具体如何安装群晖虚拟机请参考&#xff1a; 1. 安装并配置synology drive1.1 安装群辉drive套件1.2 在局域…

存在已打开的MicrosoftEdge浏览器,无法执行安装

存在问题&#xff1a;UiBot Creator 安装Chrome扩展时&#xff0c;存在已打开的MicrosoftEdge浏览器&#xff0c;无法执行安装。 解决办法&#xff1a; 打开MicrosoftEdge浏览器&#xff0c;然后在浏览器页面右上角打开“…”图标 第二步&#xff0c;打开“…”图标之后&…