08-form-wave

 

 

 

 

 

html

复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" href="style.css">
    <title>Document</title>
</head>
<body>
    <div class="container">
        <h1>Please Login</h1>
        <form>
            <div class="form-control">
                <input type="text" required>
                <label>Email</label>
            </div>

            <div class="form-control">
                <input type="password" required>
                <label>Password</label>
            </div>

            <button class="btn">Login</button>
            <p class="text">Don't have an account?<a href="#">Register</a></p>
        </form>
    </div>


<script src="./script.js"></script>
</body>
</html>
复制代码

 

css

复制代码
@import url('https://fonts.googleapis.com/css?family=Muli&display=swap');

* {
  box-sizing: border-box;
}

body {
  background-color: steelblue;
  color: #fff;
  font-family: 'Muli', sans-serif;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  height: 100vh;
  overflow: hidden;
  margin: 0;
}

.container{
    background-color:rgba(0,0,0,0.4);
    padding: 20px 40px;
    border-radius: 5px;
}

.container h1{
    text-align: center;
    margin-bottom: 30px;
}

.container a{
    text-decoration: none;
    color: lightblue;
}

.btn{
    cursor: pointer;
    display: inline-block;
    width: 100%;
    background: lightblue;
    padding: 15px;
    font-family: inherit;
    font-size: 16px;
    border: 0;
    border-radius: 5px;
}

.btn:focus{
    outline: 0;
}

.btn:active{
    transform: scale(0.98);
}

.text{
    margin-top: 30px;
}

.form-control{
    position: relative;
    margin: 20px 0 40px;
}

.form-control input{
    background-color: transparent;
    border: 0;
    border-bottom: 2px #fff solid;
    display: block;
    width: 100%;
    padding: 15px 0;
    font-size: 18px;
    color: #fff;
}

.form-control input:focus,
.form-control input:valid{
    outline: 0;
    border-bottom-color:lightblue;
}

.form-control label{
    position: absolute;
    top: 15px;
    left: 0;
    pointer-events: none;
}

.form-control label span{
    display: inline-block;
    font-size: 18px;
    min-width: 5px;
    transition: 0.3s cubic-bezier(0.68,-0.55,0.265,1.55);
}

.form-control input:focus + label span,
.form-control input:valid + label span{
    color: lightblue;
    transform: translateY(-30px);
}
复制代码

 

 

javascript

const labels =document.querySelectorAll('.form-control label')

labels.forEach(label=>{
    label.innerHTML = label.innerText
    .split('')
    .map((letter,idx)=>`<span style="transition-delay:${idx * 50}ms">${letter}</span>`)
    .join('')
})

 

posted @   漫漫长路</>  阅读(19)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示