14 简约登录页

news2024/9/22 19:21:27

效果演示

14-简约登录页.gif

实现了一个简单的登录表单的样式,包括背景颜色、边框、字体颜色、字体大小、字体粗细、输入框样式、提交按钮样式等。当用户在输入框中输入内容时,输入框下方的提示文字会动态地变化,以提示用户输入正确的信息。当用户点击提交按钮时,会触发一个事件,例如提交表单数据到服务器。

Code

<div class="form">
    <div class="title">Welcome</div>
    <div class="subtitle">Let's create your account!</div>

    <div class="input-container ic1">
        <input placeholder="" type="text" class="input" id="firstname">
        <div class="cut"></div>
        <label class="iLabel" for="firstname">First name</label>
    </div>

    <div class="input-container ic2">
        <input placeholder="" type="text" class="input" id="lastname">
        <div class="cut"></div>
        <label class="iLabel" for="lastname">Last name</label>
    </div>
    <div class="input-container ic2">
        <input placeholder="" type="text" class="input" id="email">
        <div class="cut cut-short"></div>
        <label class="iLabel" for="email">Email</label>
    </div>
    <button class="submit" type="text">submit</button>
</div>
body {
    height: 100vh;
    display: flex;
    justify-content: center;
    align-items: center;
    background-color: #e8e8e8;
}

.form {
    background-color: #15172b;
    border-radius: 20px;
    box-sizing: border-box;
    height: 500px;
    padding: 20px;
    width: 320px;
}

.title {
    color: #eee;
    font-family: sans-serif;
    font-size: 36px;
    font-weight: 600;
    margin-top: 30px;
}

.subtitle {
    color: #eee;
    font-family: sans-serif;
    font-size: 16px;
    font-weight: 600;
    margin-top: 10px;
}

.input-container {
    height: 50px;
    position: relative;
    width: 100%;
}

.ic1 {
    margin-top: 40px;
}

.ic2 {
    margin-top: 30px;
}

.input {
    background-color: #303245;
    border-radius: 12px;
    border: 0;
    box-sizing: border-box;
    color: #eee;
    font-size: 18px;
    height: 100%;
    outline: 0;
    padding: 4px 20px 0;
    width: 100%;
}

.cut {
    background-color: #15172b;
    border-radius: 10px;
    height: 20px;
    left: 20px;
    position: absolute;
    top: -20px;
    transform: translateY(0);
    transition: transform 200ms;
    width: 76px;
}

.cut-short {
    width: 50px;
}

.iLabel {
    color: #65657b;
    font-family: sans-serif;
    left: 20px;
    line-height: 14px;
    pointer-events: none;
    position: absolute;
    transform-origin: 0 50%;
    transition: transform 200ms, color 200ms;
    top: 20px;
}

.input:focus~.cut {
    transform: translateY(8px);
}

.input:focus~.iLabel {
    transform: translateY(-30px) translateX(10px) scale(0.75);
}

.input:not(:focus)~.iLabel {
    color: #808097;
}

.input:focus~.iLabel {
    color: #dc2f55;
}

.submit {
    background-color: #08d;
    border-radius: 12px;
    border: 0;
    box-sizing: border-box;
    color: #eee;
    cursor: pointer;
    font-size: 18px;
    height: 50px;
    margin-top: 38px;
    text-align: center;
    width: 100%;
}

.submit:active {
    background-color: #06b;
}

实现思路拆分

body {
  height: 100vh; /* 设置整个页面的高度为视口高度 */
  display: flex; /* 设置元素的显示方式为flex布局 */
  justify-content: center; /* 设置主轴上的对齐方式为居中对齐 */
  align-items: center; /* 设置交叉轴上的对齐方式为居中对齐 */
  background-color: #e8e8e8; /* 设置背景颜色为灰色 */
}

这段代码设置了整个页面的样式,包括高度、显示方式、对齐方式和背景颜色。

.form {
  background-color: #15172b; /* 设置背景颜色为深蓝色 */
  border-radius: 20px; /* 设置边框圆角为20像素 */
  box-sizing: border-box; /* 设置盒模型为border-box */
  height: 500px; /* 设置表单高度为500像素 */
  padding: 20px; /* 设置内边距为20像素 */
  width: 320px; /* 设置表单宽度为320像素 */
}

这段代码设置了表单的样式,包括背景颜色、边框圆角、盒模型、高度、内边距和宽度。

.title {
  color: #eee; /* 设置字体颜色为白色 */
  font-family: sans-serif; /* 设置字体为sans-serif字体 */
  font-size: 36px; /* 设置字体大小为36像素 */
  font-weight: 600; /* 设置字体粗细为600 */
  margin-top: 30px; /* 设置上边距为30像素 */
}

这段代码设置了标题的样式,包括字体颜色、字体、字体大小、字体粗细和上边距。

.subtitle {
  color: #eee; /* 设置字体颜色为白色 */
  font-family: sans-serif; /* 设置字体为sans-serif字体 */
  font-size: 16px; /* 设置字体大小为16像素 */
  font-weight: 600; /* 设置字体粗细为600 */
  margin-top: 10px; /* 设置上边距为10像素 */
}

这段代码设置了副标题的样式,包括字体颜色、字体、字体大小、字体粗细和上边距。

.input-container {
  height: 50px; /* 设置输入框高度为50像素 */
  position: relative; /* 设置输入框的定位方式为相对定位 */
  width: 100%; /* 设置输入框的宽度为100% */
}

这段代码设置了输入框容器的样式,包括高度、定位方式和宽度。

.ic1 {
  margin-top: 40px; /* 设置输入框容器的上边距为40像素 */
}

.ic2 {
  margin-top: 30px; /* 设置输入框容器的上边距为30像素 */
}

这段代码分别设置了两个输入框容器的上边距。

.input {
  background-color: #303245; /* 设置输入框的背景颜色为深灰色 */
  border-radius: 12px; /* 设置输入框的边框圆角为12像素 */
  border: 0; /* 设置输入框的边框为无边框 */
  box-sizing: border-box; /* 设置盒模型为border-box */
  color: #eee; /* 设置输入框的字体颜色为白色 */
  font-size: 18px; /* 设置输入框的字体大小为18像素 */
  height: 100%; /* 设置输入框的高度为100% */
  outline: 0; /* 设置输入框的轮廓为无轮廓 */
  padding: 4px 20px 0; /* 设置输入框的内边距为上下各2像素,左右各20像素 */
  width: 100%; /* 设置输入框的宽度为100% */
}

这段代码设置了输入框的样式,包括背景颜色、边框圆角、边框、盒模型、字体颜色、字体大小、高度、轮廓、内边距和宽度。

.cut {
  background-color: #15172b; /* 设置提示文字的背景颜色为深蓝色 */
  border-radius: 10px; /* 设置提示文字的边框圆角为10像素 */
  height: 20px; /* 设置提示文字的高度为20像素 */
  left: 20px; /* 设置提示文字距离输入框左侧的距离为20像素 */
  position: absolute; /* 设置提示文字的定位方式为绝对定位 */
  top: -20px; /* 设置提示文字距离输入框上方的距离为-20像素 */
  transform: translateY(0); /* 设置提示文字的垂直方向的缩放比例为1 */
  transition: transform 200ms; /* 设置提示文字的过渡效果 */
  width: 76px; /* 设置提示文字的宽度为76像素 */
}

这段代码设置了提示文字的样式,包括背景颜色、边框圆角、高度、左侧距离、定位方式、垂直方向的缩放比例、过渡效果和宽度。

.cut-short {
  width: 50px; /* 设置提示文字的宽度为50像素 */
}

这段代码设置了提示文字的宽度为50像素。

.iLabel {
  color: #65657b; /* 设置提示文字的字体颜色为深灰色 */
  font-family: sans-serif; /* 设置提示文字的字体为sans-serif字体 */
  left: 20px; /* 设置提示文字距离输入框左侧的距离为20像素 */
  line-height: 14px; /* 设置提示文字的行高为14像素 */
  pointer-events: none; /* 设置提示文字不可被点击 */
  position: absolute; /* 设置提示文字的定位方式为绝对定位 */
  transform-origin: 0 50%; /* 设置提示文字的缩放中心为水平方向的中心点 */
  transition: transform 200ms, color 200ms; /* 设置提示文字的过渡效果 */
  top: 20px; /* 设置提示文字距离输入框上方的距离为20像素 */
}

这段代码设置了提示文字的样式,包括字体颜色、字体、左侧距离、行高、可点击性、定位方式、缩放中心、过渡效果和上方距离。

.input:focus~.cut {
  transform: translateY(8px); /* 当输入框获得焦点时,将提示文字向下移动8像素 */
}

这段代码设置了当输入框获得焦点时,提示文字向下移动8像素的样式。

.input:focus~.iLabel {
  transform: translateY(-30px) translateX(10px) scale(0.75); /* 当输入框获得焦点时,将提示文字向上移动30像素,向右移动10像素,缩小0.75倍 */
}

这段代码设置了当输入框获得焦点时,提示文字向上移动30像素,向右移动10像素,缩小0.75倍的样式。

.input:not(:focus)~.iLabel {
  color: #808097; /* 当输入框没有获得焦点时,将提示文字颜色设置为深灰色 */
}

这段代码设置了当输入框没有获得焦点时,提示文字颜色设置为深灰色的样式。

.input:focus~.iLabel {
  color: #dc2f55; /* 当输入框获得焦点时,将提示文字颜色设置为红色 */
}

这段代码设置了当输入框获得焦点时,提示文字颜色设置为红色的样式。

.submit {
  background-color: #08d; /* 设置提交按钮的背景颜色为深红色 */
  border-radius: 12px; /* 设置提交按钮的边框圆角为12像素 */
  border: 0; /* 设置提交按钮的边框为无边框 */
  box-sizing: border-box; /* 设置盒模型为border-box */
  color: #eee; /* 设置提交按钮的字体颜色为白色 */
  cursor: pointer; /* 设置提交按钮的鼠标指针为指针 */
  font-size: 18px; /* 设置提交按钮的字体大小为18像素 */
  height: 50px; /* 设置提交按钮的高度为50像素 */
  margin-top: 38px; /* 设置提交按钮距离表单底部的距离为38像素 */
  text-align: center; /* 设置提交按钮的文本对齐方式为居中对齐 */
  width: 100%; /* 设置提交按钮的宽度为100% */
}

这段代码设置了提交按钮的样式,包括背景颜色、边框圆角、边框、盒模型、字体颜色、鼠标指针、字体大小、高度、距离表单底部的距离、文本对齐方式和宽度。

.submit:active {
  background-color: #06b; /* 当提交按钮被激活时,将背景颜色设置为深绿色 */
}

这段代码设置了当提交按钮被激活时,将背景颜色设置为深绿色的样式。

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

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

相关文章

广播及代码实现

广播&#xff08;Broadcast&#xff09;是一种网络通信方式&#xff0c;它允许一台设备向网络中的所有其他设备发送消息。广播通常用于在网络上传递一些信息&#xff0c;让所有设备都能接收并处理。在广播中&#xff0c;通信的目标是整个网络而不是特定的单个设备。 向子网中…

电风扇目标检测数据集VOC格式1100张

电风扇的全方位介绍 一、功能特性 电风扇作为一种晋及化的家用电器&#xff0c;其主要功能是利用电机驱动扇叶旋转&#xff0c;从而产生风力&#xff0c;用干调节室内空气流通&#xff0c;达至降温、通风和改善室内环境的目的。此外&#xff0c;现代电风扇还具备定时、遥控、…

踩坑记录-安装nuxt3报错:Error: Failed to download template from registry: fetch failed;

报错复现 安装nuxt3报错&#xff1a;Error: Failed to download template from registry: fetch failednpx nuxi init nuxt-demo 初始化nuxt 项目 报错 Error: Failed to download template from registry: fetch faile 解决方法 配置hosts Mac电脑&#xff1a;/etc/hostswin电…

vue本地打包预览

1、项目打包 npm run build2、安装serve npm install -g serve3、在项目的 dist 文件运行命令行 serve 4、运行如下在浏览器打开即可

游戏用代理IP怎么检查是否有效?哪些因素会影响代理IP的质量?

随着网络游戏的普及&#xff0c;越来越多的玩家选择使用代理IP来提升游戏体验。然而&#xff0c;在使用代理IP的过程中&#xff0c;玩家们可能会遇到一些问题&#xff0c;其中最关键的就是如何检查代理IP是否有效以及哪些因素会影响代理IP的质量。本文将详细介绍这些问题&#…

R306指纹识别模块功能实现示例

1 基本通信流程 1.1 UART 命令包的处理过程 1.2 UART 数据包的发送过程 UART 传输数据包前&#xff0c;首先要接收到传输数据包的指令包&#xff0c;做好传输准备后发送成功应答包&#xff0c;最后才开始传输数据包。数据包主要包括&#xff1a;包头、设备地址、包标识、包长…

2024年【浙江省安全员-C证】模拟考试及浙江省安全员-C证证考试

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 浙江省安全员-C证模拟考试是安全生产模拟考试一点通生成的&#xff0c;浙江省安全员-C证证模拟考试题库是根据浙江省安全员-C证最新版教材汇编出浙江省安全员-C证仿真模拟考试。2024年【浙江省安全员-C证】模拟考试及…

Jenkins持续集成(上篇)

&#xff08;一&#xff09;持续集成与 Jenkins 介绍 持续集成 持续集成&#xff08;Continuous integration&#xff0c;简称 CI&#xff09;&#xff0c;随着近几年的发展&#xff0c;持续集成在项目中得到了广泛的推广和应用。本章将带领读者一起了解持续集成工具 Jenkins…

jdk和IDEA教育版下载和安装详解

前言 研究生专业是通信系统,为了寻找实习于是在研二时期学习java。但是在学习java的过程中没有进行系统总结,很多知识点或者一些细节已经忘记。由于工作找的是某行软件中心的软件开发。准备在毕业前对java知识进行系统性学习。本专栏将从零基础开始,从最简单的jdk和IDEA下载…

阿赵UE学习笔记——6、免费资源获取

阿赵UE学习笔记目录 大家好&#xff0c;我是阿赵。   接下来准备要往UE引擎里面放美术资源了。美术资源可以自己做&#xff0c;不过也有一些免费的资源可以供我们使用的&#xff0c;这里介绍一些获得免费美术资源的方法。 一、Quixel 1、Quixel网站下载 Quixel资源库&#…

高效管理版本控制,Cornerstone 4 for Mac助您成为SVN专家

在软件开发和团队合作中&#xff0c;版本控制是一个至关重要的环节。为了帮助开发者更加高效地管理和控制代码版本&#xff0c;Cornerstone 4 for Mac应运而生。作为一款功能强大的SVN&#xff08;Subversion&#xff09;管理工具&#xff0c;Cornerstone 4 for Mac为Mac用户提…

动手学深度学习一:环境安装与数据学习

2024&#xff0c;重新开始深度学习。 第一步&#xff1a;李沐动手学深度学习 课程网址&#xff1a;https://courses.d2l.ai/zh-v2/ 包含教材和视频网址链接 Jupyter notebook安装 目前在本地先使用cpu版本pytorch&#xff0c;我的本地已经安装好conda&#xff0c;跟着教材创建…

什么是自动化测试?为啥要学自动化测试?

什么是自动化测试&#xff0c;接着对常用的自动化测试框架进行了对比分析&#xff0c;最后&#xff0c;介绍了如果将自动化测试框架Cypress运用在项目中。 一、自动化测试概述 为了保障软件质量&#xff0c;并减少重复性的测试工作&#xff0c;自动化测试已经被广泛运用。在开…

【C++ Primer Plus学习记录】switch语句

假设要创建一个屏幕菜单&#xff0c;要求用户从5个选项中选择一个&#xff0c;例如&#xff0c;便宜、适中、昂贵、奢侈、过度。虽然可以扩展if else if else序列来处理这5种情况&#xff0c;但是C的switch语句能够更容易地从大型列表中进行选择。 下面是switch语句的通用格式…

清风数学建模-灰色预测

内容&#xff1a;灰色预测 概念&#xff1a;灰色预测是对原始数据进行生成处理来寻找系统变动的规律&#xff0c;并生成有较强规律的数据序列&#xff0c;然后建立相应的微分方程模型&#xff0c;从而预测事物未来发展趋势:如图随机性被削弱&#xff0c;变的有规律。 原理介绍…

[C#]C# OpenVINO部署yolov8实例分割模型

【官方框架地址】 https://github.com/ultralytics/ultralytics.git 【算法介绍】 YOLOv8 抛弃了前几代模型的 Anchor-Base。 YOLO 是一种基于图像全局信息进行预测的目标检测系统。自 2015 年 Joseph Redmon、Ali Farhadi 等人提出初代模型以来&#xff0c;领域内的研究者们…

后缀自动机超详细

后缀自动机 1.关于 e n d p o s endpos endpos 理解含义 假设字符串s是字符串S的一个子串&#xff0c;则 e n d p o s ( s ) endpos(s) endpos(s)表示s在S中的所有结束位置&#xff0c;如在字符串 a b c a b c a b abcabcab abcabcab中&#xff0c; e n d p o s ( a b ) 2 …

进程的基础认识

一、进程的概念 进程是指 可执行程序 内核数据结构&#xff08;内核为了管理进程而创建的数据结构&#xff09;。 二、进程的管理 进程是靠PCB(process control block [进程控制块])管理起来的&#xff0c;在linux下PCB叫 task_struct 当一个可执行程序从磁盘加载进内存&…

分割数组的最大差值 - 华为OD统一考试

分割数组的最大差值 - 华为OD统一考试 OD统一考试 分值: 100分 题解: Java / Python / C++ 题目描述 给定一个由若干整数组成的数组nums ,可以在数组内的任意位置进行分割,将该数组分割成两个非空子数组(即左数组和右数组),分别对子数组求和得到两个值.计算这两个值的差值…

lv14 字符设备驱动基础框架解析 4

一、字符设备驱动框架解析 设备的操作函数如果比喻是桩的话&#xff08;性质类似于设备操作函数的函数&#xff0c;在一些场合被称为桩函数&#xff09;&#xff0c;则&#xff1a; 驱动实现设备操作函数 ----------- 做桩 insmod调用的init函数主要作用 --------- 钉桩 rm…