HTML+CSS 3D旋转登录表单

效果演示

24-3D旋转登录表单.png

实现了一个具有3D旋转效果的登录框,背景为太空图片,登录框位于太空中心,可以通过输入用户名和密码进行登录。登录框使用了CSS3的3D变换和动画效果,使其具有立体感和动态效果。同时,登录框的样式也经过精心设计,使用了半透明的背景、模糊效果、阴影等元素,使其看起来更加美观和现代化。

Code

HTML
<!DOCTYPE html>
<html lang="en"><head><meta http-equiv="content-type" content="text/html; charset=utf-8"><meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no"><title>3D旋转登录表单</title><link rel="stylesheet" href="./24-3D旋转登录表单.css">
</head><body><div class="container"><div class="wrap"><div class="wall wall-top"></div><div class="wall wall-bottom"></div><div class="wall wall-left"></div><div class="wall wall-right"></div><div class="wall wall-back"></div></div><div class="form-box"><div class="tit">login</div><input type="text" placeholder="账号"><input type="password" placeholder="密码"><button>登录</button><span>没有账号?<a href="#">去注册</a></span></div></div>
</body></html>
CSS
* {margin: 0;padding: 0;
}body {height: 100vh;display: flex;justify-content: center;align-items: center;background-color: #000;overflow: hidden;
}.container {perspective: 5px;perspective-origin: 50% 50%;
}.wrap {position: absolute;width: 1000px;height: 1000px;left: -500px;top: -500px;transform-style: preserve-3d;animation: move 20s linear infinite;
}.wall {position: absolute;width: 100%;height: 100%;background: url("./images/space1.jpg") no-repeat;background-size: cover;
}.wall-top {transform: rotateX(90deg) translateZ(500px);
}.wall-bottom {transform: rotateX(-90deg) translateZ(500px);
}.wall-left {transform: rotateY(-90deg) translateZ(500px);
}.wall-right {transform: rotateY(90deg) translateZ(500px);
}.wall-back {transform: rotateX(180deg) translateZ(500px);
}.form-box {position: relative;background-color: rgba(255, 255, 255, 0.1);width: 400px;height: 550px;border-radius: 15px;border-top: 1px solid rgba(255, 255, 255, 0.5);border-left: 1px solid rgba(255, 255, 255, 0.5);display: flex;align-items: center;flex-direction: column;backdrop-filter: blur(20px);box-shadow: 0 20px 50px rgba(0, 0, 0, 0.5);
}.form-box .tit {color: #fff;font-size: 40px;font-weight: bold;text-transform: uppercase;letter-spacing: 10px;text-indent: 10px;margin: 95px auto 50px auto;
}.form-box input {width: 300px;height: 30px;background: transparent;text-indent: 8px;border: none;outline: none;border-bottom: 1px solid rgba(255, 255, 255, 0.8);color: #fff;margin: 15px auto;
}.form-box input::placeholder {color: rgba(255, 255, 255, 0.8);
}.form-box button {width: 300px;height: 40px;margin: 35px auto 40px auto;border: none;background: #00addd;color: #fff;border-radius: 8px;letter-spacing: 20px;text-indent: 20px;font-weight: bold;cursor: pointer;
}.form-box button:hover {background: #0098d4;
}.form-box span {font-size: 14px;color: #fff;
}.form-box a {color: #00addd;text-decoration: none;
}@keyframes move {0% {transform: rotate(0deg) translateZ(-500px);}100% {transform: rotate(90deg) translateZ(500px);}
}

实现思路拆分

* {margin: 0;padding: 0;
}

这段代码是将所有元素的外边距和内边距都设置为0,以便更好地控制页面布局。

body {height: 100vh;display: flex;justify-content: center;align-items: center;background-color: #000;overflow: hidden;
}

这段代码设置了body元素的样式,将其高度设置为100vh,即占据整个视口的高度。使用flex布局,将其子元素水平和垂直居中。设置背景颜色为黑色,同时隐藏溢出部分。

.container {perspective: 5px;perspective-origin: 50% 50%;
}

这段代码设置了一个容器元素,使用perspective属性设置了透视距离为5px,使得其子元素具有3D效果。perspective-origin属性设置了透视点的位置,这里设置为容器中心。

.wrap {position: absolute;width: 1000px;height: 1000px;left: -500px;top: -500px;transform-style: preserve-3d;animation: move 20s linear infinite;
}

这段代码设置了一个包裹元素,使用绝对定位,将其左上角定位到容器中心。设置了宽度和高度为1000px,使其能够完全覆盖整个容器。使用transform-style属性设置了子元素的变换方式为保留3D效果。使用animation属性设置了动画效果,调用了名为move的动画,持续时间为20秒,线性运动,无限循环。

.wall {position: absolute;width: 100%;height: 100%;background: url("../images/space1.jpg") no-repeat;background-size: cover;
}

这段代码设置了一个墙体元素,使用绝对定位,宽度和高度都为100%,使其完全覆盖包裹元素。使用background属性设置了背景图片为space1.jpg,使用no-repeat属性使其不重复,使用background-size属性设置了背景图片的大小为cover,使其完全覆盖墙体元素。

.wall-top {transform: rotateX(90deg) translateZ(500px);
}.wall-bottom {transform: rotateX(-90deg) translateZ(500px);
}.wall-left {transform: rotateY(-90deg) translateZ(500px);
}.wall-right {transform: rotateY(90deg) translateZ(500px);
}.wall-back {transform: rotateX(180deg) translateZ(500px);
}

这段代码设置了墙体元素的不同面,使用transform属性设置了旋转和平移变换,使其具有3D效果。其中,rotateX表示绕X轴旋转,rotateY表示绕Y轴旋转,translateZ表示沿Z轴平移。这些变换的参数可以根据需要进行调整,以达到最佳效果。

.form-box {position: relative;background-color: rgba(255, 255, 255, 0.1);width: 400px;height: 550px;border-radius: 15px;border-top: 1px solid rgba(255, 255, 255, 0.5);border-left: 1px solid rgba(255, 255, 255, 0.5);display: flex;align-items: center;flex-direction: column;backdrop-filter: blur(20px);box-shadow: 0 20px 50px rgba(0, 0, 0, 0.5);
}

这段代码设置了一个登录框元素,使用相对定位,使其相对于包裹元素进行定位。设置了背景颜色为半透明白色,宽度和高度分别为400px和550px,设置了圆角边框和边框阴影。使用flex布局,将其子元素垂直居中,并设置了主轴方向为垂直方向。使用backdrop-filter属性设置了模糊效果,使其看起来更加美观。

.form-box .tit {color: #fff;font-size: 40px;font-weight: bold;text-transform: uppercase;letter-spacing: 10px;text-indent: 10px;margin: 95px auto 50px auto;
}

这段代码设置了登录框中的标题元素,使用了选择器来选择.form-box元素下的.tit元素。设置了字体颜色为白色,字体大小为40px,字体加粗,文本转换为大写,字母间距为10px,首行缩进为10px,上下左右的外边距分别为95px、auto、50px、auto,使其居中并与其他元素有一定的间距。

.form-box input {width: 300px;height: 30px;background: transparent;text-indent: 8px;border: none;outline: none;border-bottom: 1px solid rgba(255, 255, 255, 0.8);color: #fff;margin: 15px auto;
}

这段代码设置了登录框中的输入框元素,设置了宽度和高度分别为300px和30px,背景为透明,文本缩进为8px,去掉了边框和外边距,设置了底部边框为白色半透明,字体颜色为白色,上下外边距为15px,左右外边距为auto,使其居中并与其他元素有一定的间距。

.form-box input::placeholder {color: rgba(255, 255, 255, 0.8);
}

这段代码设置了输入框的占位符文本的样式,设置了字体颜色为白色半透明,使其与输入框的背景颜色相似。

.form-box button {width: 300px;height: 40px;margin: 35px auto 40px auto;border: none;background: #00addd;color: #fff;border-radius: 8px;letter-spacing: 20px;text-indent: 20px;font-weight: bold;cursor: pointer;
}

这段代码设置了登录框中的提交按钮元素,设置了宽度和高度分别为300px和40px,上下外边距为35px和40px,左右外边距为auto,使其居中并与其他元素有一定的间距。去掉了边框,设置了背景颜色为蓝色,字体颜色为白色,设置了圆角边框和字母间距,使其看起来更加美观。设置了鼠标指针为手型,表示该元素可以被点击。

.form-box button:hover {background: #0098d4;
}

这段代码设置了按钮元素在鼠标悬停时的样式,将背景颜色改为深蓝色,使其看起来更加醒目。

.form-box span {font-size: 14px;color: #fff;
}

这段代码设置了登录框中的提示文本元素的样式,设置了字体大小为14px,字体颜色为白色。

.form-box a {color: #00addd;text-decoration: none;
}

这段代码设置了登录框中的链接元素的样式,设置了字体颜色为蓝色,去掉了下划线。

@keyframes move {0% {transform: rotate(0deg) translateZ(-500px);}100% {transform: rotate(90deg) translateZ(500px);}
}

这段代码定义了一个名为move的动画,使用了@keyframes规则。在0%时刻,设置了旋转角度为0度,沿Z轴平移-500px,使其位于包裹元素的后面。在100%时刻,设置了旋转角度为90度,沿Z轴平移500px,使其位于包裹元素的前面。这样就实现了一个不断旋转的3D效果。

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

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

相关文章

sql sever 存储过程不能请求https的解决方案

此错误的原因&#xff0c;通常是因为SQL Server默认不允许非加密的HTTP请求。为了解决这个问题&#xff0c;需要配置SQL Server允许非密码的https请求&#xff0c;或者使用密码的http请求。 下面是配置SQL Server允许非加密http请求 UsE [master] ;Go EXEC sp_configure Sh…

CSS中的长度单位及其使用场景

在CSS的世界里&#xff0c;长度单位是构建布局和样式的基础。它们帮助我们精确地控制元素的大小、间距和位置。本文将介绍CSS中常用的长度单位及其适用场景&#xff0c;帮助你在网页设计中做出更明智的决策。 绝对长度单位 绝对长度单位提供了固定的长度值&#xff0c;不受显…

【Linux】进程间通信_3

文章目录 七、进程间通信1. 进程间通信分类命名管道 未完待续 七、进程间通信 1. 进程间通信分类 命名管道 管道应用的一个限制就是只能在具有共同祖先&#xff08;具有亲缘关系&#xff09;的进程间通信。如果我们想在不相关的进程之间交换数据&#xff0c;可以使用FIFO文件…

详细分析Oracle中的tnsnames.ora基本知识 以及 PLSQL如何连接(附Demo)

目录 1. tnsnames.ora2. Demo3. 实战 1. tnsnames.ora Oracle 数据库网络配置文件&#xff0c;用于配置客户端与数据库服务器之间的连接 定义网络服务名称&#xff0c;客户端可以使用这些名称连接到数据库实例 基本的路径如下&#xff1a; Windows: ORACLE_HOME\network\ad…

MySQL 数据库安装全攻略

在本文中&#xff0c;将为您详细介绍 MySQL 数据库的两种安装方式&#xff1a;编译安装和二进制安装。无论您是新手还是有一定经验的开发者&#xff0c;相信这篇文章都能为您提供有价值的参考。 一、MySQL 的编译安装 &#xff08;一&#xff09;准备工作 首先&#xff0c;如…

QThread 与QObject::moveToThread利用Qt事件循环在子线程执行多个函数

1. QThread的两种用法 第一种用法就是继承QThread&#xff0c;然后覆写 virtual void run()&#xff0c; 这种用法的缺点是不能利用信号槽机制。 第二种用法就是创建一个线程&#xff0c;创建一个对象&#xff0c;再将对象moveToThread, 这种可以充分利用信号槽机制&#xff…

MySQL 支持的多种日期和时间类型

MySQL 支持的多种日期和时间类型 MySQL 支持多种日期和时间类型&#xff0c;包括&#xff1a; 1. DATE: 存储日期值&#xff08;年、月、日&#xff09;&#xff0c;格式为 YYYY-MM-DD&#xff0c;例如&#xff1a;2024-06-11。 2. TIME: 存储时间值&#xff08;小时、分钟、秒…

199.罗马数字转整数(力扣)

代码解决 class Solution { public:// 定义一个哈希表来存储罗马数字符号及其对应的整数值unordered_map<char, int> res {{I, 1},{V, 5},{X, 10},{L, 50},{C, 100},{D, 500},{M, 1000},};// 将罗马数字字符串转换为整数的函数int romanToInt(string s) {int num 0; …

ElasticSearch安装、配置详细步骤

一、环境及版本介绍 操作系统&#xff1a; Windows 10 软件版本&#xff1a; elasticsearch-7.17.22、kibana-7.17.22、IK-7.17.22 开发环境选择软件版本应提前考虑正式系统得环境&#xff0c;否则会产生软件与服务器环境不兼容得问题出现&#xff0c;ElasticSearch与环境支…

【机器学习300问】132、自注意力机制(Self-Attention)和传统注意力机制(Attention)的区别?

最近学习注意力机制的时候&#xff0c;发现相同的概念很多&#xff0c;有必要给这些概念做一下区分&#xff0c;不然后续的学习可能会混成一团。本文先区分一下自注意力机制和传统注意力机制。我会先直接给出它们之间有何区别的结论&#xff0c;然后通过一个例子来说明。 一、…

【C++题解】1711. 输出满足条件的整数1

问题&#xff1a;1711. 输出满足条件的整数1 类型&#xff1a;简单循环 题目描述&#xff1a; 有这样的两位数&#xff0c;其十位上的数字比个位上的数字要大&#xff0c;且十位和个位上的数字之和为偶数&#xff0c;请找出所有的满足条件的 2 位数。 输入&#xff1a; 无。…

Spring IOC 控制反转总结

Spring IOC 控制反转总结 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 在现代Java开发中&#xff0c;Spring框架已成为不可或缺的工具&#xff0c;其核心概…

想法是否可行(学习笔记)

切入时机 进入市场的切入时机是否成熟&#xff0c;现有的技术手段和基础设施是否能够满足需求&#xff0c;用户的使用习惯和心理认知是怎么样的&#xff1f; 运营推广 有哪些渠道进行运营推广&#xff0c;产品的本身是否足够好&#xff0c;是否有足够的留存&#xff0c;是否能…

前端算法--括号⽣成

题⽬描述 数字 n 代表⽣成括号的对数&#xff0c;请你设计⼀个函数&#xff0c;⽤于能够⽣成所有可能的并且 有效的 括号组合。 示例&#xff1a; 输⼊&#xff1a; n 3 输出&#xff1a; [ "((()))", "(()())", "(())()", "()(()…

Unity的Excel转表工具

该Excel工具主要由Python语言完成&#xff0c;版本为3.x 主要功能&#xff1a; 1.转换后的数据存储结构为二进制。 2.excel文件可以选择多种数据类型&#xff1a;int、float、string、一维&#xff08;int、float、string&#xff09;、二维int、Map&#xff08;int/int、in…

Hive基础知识(十九):Hive 自定义函数

1. 自定义函数 1&#xff09;Hive 自带了一些函数&#xff0c;比如&#xff1a;max/min 等&#xff0c;但是数量有限&#xff0c;自己可以通过自定义 UDF 来方便的扩展。 2&#xff09;当 Hive 提供的内置函数无法满足你的业务处理需要时&#xff0c;此时就可以考虑使用用户自…

xcode15 升级大坑

Q&#xff1a;iOS17 SDK 模拟器 7个多G,一直安装失败&#xff0c;都是网络中断&#xff0c;试了第六次竟然硬生生下载并安装成功。如果实在不成功尝试一下步骤&#xff1a; 1.直接在Apple官网找到你要下载的文件&#xff0c;https://developer.apple.com/download/all/ 2.下…

golang常用库之-godotenv库从.env文件读取配置数据

文章目录 golang常用库之-从.env文件读取配置数据godotenv库使用 golang常用库之-从.env文件读取配置数据 godotenv库从.env文件中读取配置&#xff0c; 然后存储到程序的环境变量中。在代码中可以使用读取非常方便。 godotenv库 官方&#xff1a;https://pkg.go.dev/github…

图的搜索。

用邻接表作为图的存储结构建立一个图&#xff0c;并对此图分别进行深度优先搜索和广度优先搜索遍历。 #include<stdio.h> #include<stdlib.h> #define MAX_VERTEM_NUM 10 #define INFINITY 32768 typedef enum{ DG,DN,UDG,UDN }graghKind; //digraph D…

【AI应用探讨】—小型神经网络应用场景

目录 1. 移动设备 2. 物联网设备 3. 无人驾驶 4. 可穿戴设备 5. 其他领域 1. 移动设备 a. 图像识别 用例&#xff1a;在智能手机和平板电脑上运行的实时图像识别应用&#xff0c;如人脸识别、物体识别等。优势&#xff1a;小型神经网络能够在这些设备上快速运行&#xff…