1.这是我见过最好看的登录界面了

2.点击输入文本,Username会上移,下面有一道线划过,登录按钮被覆盖后颜色会划过。内含js代码

3.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">
    <script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script>
</head>
<body>
    
    <form action="index.html" class="login-form">
        <h1>Login</h1>

        <div class="txtb">
            <input type="text">
            <span data-placeholder="Username"></span>
        </div>

        <div class="txtb">
            <input type="password">
            <span data-placeholder="password"></span>
        </div>

        <input type="submit" class="logbtn" value="Login">

        <div class="bottom-text">
            Don't have account? <a href="#">Sign up </a>
        </div>
    </form>

    <script type="text/javascript">
        $(".txtb input").on("focus",function(){
            $(this).addClass("focus");
        });
        
        $(".txtb input").on("blur",function(){
            if($(this).val()=="")
                $(this).removeClass("focus");
        });
    </script>


</body>
</html>

4.CSS代码

*{
    /* 外边距 */
    margin: 0;
    /* 内边距 */
    padding: 0;
    /* 文本没有线 */
    text-decoration: none;
    /* 字体家族 */
    font-family: montserrat;
    /* border-box 告诉浏览器去理解你设置的边框和内边距的值是包含在width内的 */
    box-sizing: border-box;
}
body{
    /* 调整背景颜色 */
    min-height: 100vh;
    background-image: linear-gradient(120deg,#3498db,#8e44ad);

}

.login-form{
    width: 360px;
    background: #f1f1f1;
    height: 580px;
    /* 高度内边距为80,左右边距为40 */
    padding: 80px 40px;
    /* 定义圆角 */
    border-radius: 10px;
    position: absolute;
    /* 以下三个是居中 */
    left: 50%;
    top: 50%;
    transform: translate(-50%,-50%);
}

.login-form h1{
    text-align: center;
    /* 下外边距 */
    margin-bottom: 60px;
}

.txtb{
    border-bottom: 2px solid #adadad;
    position: relative;
    /* 上下外边距为30,左右为0 */
    margin: 30px 0;
}

.txtb input{
    font-size: 15px;
    color: #333;
    border: none;
    width: 100%;
    outline: none;
    background: none;
    /* 上下内边距为0,左右为5 */
    padding: 0 5px;
    height: 40px;
}

.txtb span::before{
    content: attr(data-placeholder);
    position: absolute;
    top: 50%;
    left: 5px;
    color: #adadad;
    /* Username上升50% */
    transform: translateY(-50%);
    /* 设置元素的堆叠顺序 */
    z-index: -1;
    transition: .5s;
}

.txtb span::after{
    /* 每一个网页元素都有一个display属性,div元素,它的默认display属性值为“block”,
    成为“块级”元素(block-level);而span元素的默认display属性值为“inline”,称为“行内”元素。
    块状元素会单独占据一样,其他元素跟他在同一行的会回被迫换行,挤到下答一行那里去 */
    display: block;
    content: '';
    position: absolute;
    width: 0%;
    height: 2px;
    background: linear-gradient(120deg,#3498db,#8e44ad);
    transition: .5s;
}

.focus + span::before{
    top: -5px;
}

.focus + span::after{
    width: 100%;
}

.logbtn{
    display: block;
    width: 100%;
    height: 50px;
    border: none;
    background: linear-gradient(120deg,#3498db,#8e44ad,#3498db);
    background-size: 200%;
    color: #fff;
    outline: none;
    /* 鼠标放上面会变成小手 */
    cursor: pointer;
    transition: .5s;
}

.logbtn:hover{
    background-position: right;
}

.bottom-text{
    margin-top: 60px;
    text-align: center;
    font-size: 13px;
}