通用登录
parent
d9335da393
commit
e695d422ac
@ -0,0 +1,248 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Document</title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<div class="login">
|
||||
|
||||
<div class="login-frame">
|
||||
<div class="login-form">
|
||||
<div>
|
||||
<input required />
|
||||
<label>账号</label>
|
||||
</div>
|
||||
<div>
|
||||
<input required type="password" />
|
||||
<label>密码</label>
|
||||
</div>
|
||||
<div class="valicode">
|
||||
<input required />
|
||||
<label>验证码</label>
|
||||
<div><img src="http://placehold.jp/16/999999/000000/100x33.png?text=%E9%AA%8C%E8%AF%81%E7%A0%81"
|
||||
title="点击更换验证码" /></div>
|
||||
</div>
|
||||
<div class="login-btn" onclick="this.classList.toggle('loging');"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<svg class="wave" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
viewBox="0 24 150 28" preserveAspectRatio="none">
|
||||
<defs>
|
||||
<path id="gentle-wave" d="M-160
|
||||
44c30 0
|
||||
58-18 88-18s
|
||||
58 18 88 18
|
||||
58-18 88-18
|
||||
58 18 88 18
|
||||
v44h-352z"></path>
|
||||
</defs>
|
||||
<g class="parallax">
|
||||
<use xlink:href="#gentle-wave" x="50" y="6" fill="#ffffff"></use>
|
||||
<use xlink:href="#gentle-wave" x="50" y="3" fill="#ffffff66"></use>
|
||||
<use xlink:href="#gentle-wave" x="50" y="0" fill="#ffffffaa"></use>
|
||||
</g>
|
||||
</svg>
|
||||
<div>Copyright © 2023 湖南XXXXXXX有限公司 All Rights Reserved.</div>
|
||||
</div>
|
||||
<style>
|
||||
.login {
|
||||
--bg1: #295a90;
|
||||
--bg2: #3893b0;
|
||||
--size: 16px;
|
||||
font-size: var(--size);
|
||||
width: 100vw;
|
||||
height: 100vh;
|
||||
background-image: linear-gradient(120deg, var(--bg1), var(--bg2));
|
||||
position: fixed;
|
||||
left: 0;
|
||||
top: 0;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
|
||||
.login-frame {
|
||||
width: 18em;
|
||||
border-radius: .5em;
|
||||
box-sizing: content-box;
|
||||
background-color: #FCFCFC;
|
||||
padding: 1em 2em;
|
||||
margin-bottom: 20vh;
|
||||
box-shadow: 0 0 2em #0005;
|
||||
|
||||
.login-form {
|
||||
display: block;
|
||||
line-height: 1;
|
||||
|
||||
&>div.login-btn {
|
||||
cursor: pointer;
|
||||
border-radius: 2em;
|
||||
background-color: var(--bg1);
|
||||
margin: 1.5em 0;
|
||||
height: 2.2em;
|
||||
text-align: center;
|
||||
color: #FFF;
|
||||
font-size: 1.2em;
|
||||
line-height: 2.2em;
|
||||
font-weight: bold;
|
||||
|
||||
&::after {
|
||||
content: "登 录";
|
||||
}
|
||||
|
||||
&::before {
|
||||
content: "";
|
||||
}
|
||||
}
|
||||
|
||||
&>div.loging {
|
||||
opacity: .8;
|
||||
cursor: wait;
|
||||
|
||||
&::after {
|
||||
content: "登录中...";
|
||||
}
|
||||
|
||||
&::before {
|
||||
content: "";
|
||||
display: inline-block;
|
||||
border: .2em solid #FFF;
|
||||
border-left-color: #0000;
|
||||
width: 1em;
|
||||
height: 1em;
|
||||
vertical-align: middle;
|
||||
border-radius: 1em;
|
||||
box-sizing: border-box;
|
||||
margin-right: .5em;
|
||||
animation: login-loading 1s infinite linear;
|
||||
}
|
||||
}
|
||||
|
||||
&>div:not(.login-btn) {
|
||||
position: relative;
|
||||
border-radius: 2em;
|
||||
border: solid 1px #ddd;
|
||||
margin: 1.5em 0;
|
||||
|
||||
&>label {
|
||||
position: absolute;
|
||||
color: var(--bg1);
|
||||
opacity: .8;
|
||||
left: 1em;
|
||||
top: .5em;
|
||||
transition: all .5s;
|
||||
transform: scale(.9);
|
||||
}
|
||||
|
||||
&>input {
|
||||
width: 100%;
|
||||
border: none;
|
||||
outline: none;
|
||||
background-color: #0000;
|
||||
font-size: 1em;
|
||||
padding: .5em 1em;
|
||||
color: var(--bg1);
|
||||
|
||||
&:focus~label,
|
||||
&:valid~label {
|
||||
opacity: 1;
|
||||
top: -1.1em;
|
||||
transform: scale(.8);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&>div.valicode {
|
||||
display: grid;
|
||||
grid-template-columns: 1fr 1fr;
|
||||
gap: .5em;
|
||||
|
||||
&>div {
|
||||
overflow: hidden;
|
||||
border-top-right-radius: 2em;
|
||||
border-bottom-right-radius: 2em;
|
||||
}
|
||||
|
||||
& img {
|
||||
display: block;
|
||||
height: 2.1em;
|
||||
width: 100%;
|
||||
cursor: pointer;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
.wave {
|
||||
width: 100%;
|
||||
height: 10vh;
|
||||
position: absolute;
|
||||
bottom: 2em;
|
||||
left: 0;
|
||||
}
|
||||
|
||||
&>:last-child {
|
||||
width: 100%;
|
||||
height: calc(2 * var(--size));
|
||||
background-color: #FFF;
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
color: var(--bg1);
|
||||
font-size: .8em;
|
||||
line-height: 2;
|
||||
display: flex;
|
||||
align-items: flex-end;
|
||||
justify-content: center;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
.parallax>use:nth-child(1) {
|
||||
animation-delay: -2s;
|
||||
animation-duration: 13s;
|
||||
}
|
||||
|
||||
.parallax>use:nth-child(2) {
|
||||
animation-delay: -4s;
|
||||
animation-duration: 23s;
|
||||
}
|
||||
|
||||
.parallax>use {
|
||||
animation: move-forever 12s linear infinite;
|
||||
}
|
||||
|
||||
@keyframes move-forever {
|
||||
0% {
|
||||
transform: translate(-90px, 0%);
|
||||
}
|
||||
|
||||
100% {
|
||||
transform: translate(85px, 0%);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@keyframes login-loading {
|
||||
0% {
|
||||
transform: rotate(0);
|
||||
}
|
||||
|
||||
100% {
|
||||
transform: rotate(360deg);
|
||||
}
|
||||
|
||||
}
|
||||
</style>
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
||||
Loading…
Reference in New Issue