HTML & CSS 魔法秀:打造翻转卡片登录注册页面

这段 HTML 和 CSS 代码创建了一个具有翻转卡片效果的登录和注册页面。下面是对重点标签和 CSS 样式的解释和总结:

一键复制

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">
    <title>前端Hardy</title>
    <style>
        @import url('https://fonts.googleapis.com/css?family=Montserrat:400,700|Roboto|Raleway:700');
        :root {
            --default-font: 'Roboto';
        }

        html,
        body {
            margin: 0;
            padding: 0;
        }

        body {
            font-family: var(--default-font);
            background: #444;
        }

        header {
            width: 100vw;
            height: 5vh;
        }

        .box {
            display: flex;
            align-items: center;
            justify-content: center;
            height: 100vh;
        }

        a {
            text-decoration: none;
            color: #222;
            transition: color 200ms ease-out;
        }

        .container {
            width: 640px;
            height: 480px;
            margin: auto;
            display: flex;
        }

        .panel,
        .face,
        form {
            display: flex;
            flex-direction: column;
            justify-content: center;
            align-items: center;
        }

        .face,
        .panel {
            height: 100%;
            width: 100%;
            border-radius: 8px;
        }

        .card {
            position: relative;
            width: 50%;
            height: 100%;
            transition: transform 500ms ease-in-out;
            transform-style: preserve-3d;
        }

        .card.flip {
            transform: rotateY(180deg);
        }

        .face {
            position: absolute;
            background: #EEE;
            text-align: center;
            backface-visibility: hidden;
        }

        .card-back {
            transform: rotatey(180deg);
        }


        .panel {
            color: whitesmoke;
            background: #222;
            letter-spacing: 0.03em;
        }

        .panelspan {
            margin: 5px 25px;
            font-size: 15px;
        }

        .panelbtn {
            margin-top: 20px;
            background: #222;
            border: 1px solid whitesmoke;
        }


        .formspan {
            font-size: 14px;
            margin: 5px;
        }

        .forgot {
            margin: 8px;
        }

        .formbtn {
            color: #222;
        }

        #forgotpassword {
            font-size: 15px;
            margin: 8px;
        }

        input {
            display: block;
            margin: 6px;
            padding: 8px 10px;
            width: 110%;
            background: #DDD;
            border: 1.5px solid #DDD;
            border-radius: 6px;
            transition: border 250ms ease-out;
        }

        input:hover,
        input:focus {
            outline: none;
            border: 1.5px solid black;
        }

        ::placeholder {
            letter-spacing: 0.02em;
            color: rgba(70, 70, 70, 1);
        }

        button {
            cursor: pointer;
            width: 140px;
            padding: 10px;
            margin: 5px;
            color: whitesmoke;
            background: #DDD;
            border: none;
            border-radius: 25px;
            font-family: 'Raleway';
            letter-spacing: 0.02em;
            text-transform: uppercase;
            transition: color 200ms ease-out, background 200ms ease-out;
        }

        button:hover,
        button:focus {
            outline: none;
        }

        button:hover,
        button:active {
            background: #222;
            color: whitesmoke;
        }

        h2 {
            font-family: 'Montserrat';
            font-weight: bold;
            font-size: 1.7em;
        }


        .social-container {
            display: flex;
            flex-direction: row;
            justify-content: center;
            align-items: center;
        }

        .social-container a {
            width: 25px;
            height: 25px;
            margin: 5px;
            padding: 10px;
            color: #222;
            background: #DDD;
            border-radius: 25px;

            display: flex;
            justify-content: center;
            align-items: center;
            transition: border 200ms ease-out, background 200ms ease-out, color 200ms ease-out;
        }

        .social-container a:hover {
            border-color: black;
            background: #222;
            color: whitesmoke;
        }
    </style>
</head>

<body>

    <head>
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.8.1/css/all.css"
            integrity="sha384-50oBUHEmvpQ+1lW4y57PTFmhCaXp0ML5d60M1M7uH2+nqUivzIebhndOJK28anvf" crossorigin="anonymous">
    </head>

    <body>
        <section class="box">
            <div class="container">
                <div class="card left">
                    <div class="face card-front">
                        <div class="signin-form">
                            <form action="javascript:void(0);">
                                <h2>Sign in</h2>
                                <div class="social-container">
                                    <a href="javascript:void(0);" class="social" id="fb"><i
                                            class="fab fa-facebook-f"></i></a>
                                    <a href="javascript:void(0);" class="social" id="gp"><i
                                            class="fab fa-google-plus-g"></i></a>
                                    <a href="javascript:void(0);" class="social" id="lin"><i
                                            class="fab fa-linkedin-in"></i></a>
                                </div>
                                <span class="formspan">or use your registered account</span>
                                <input type="email" placeholder="Email" />
                                <input type="password" placeholder="Password" />
                                <span class="olspan forgot"><a href="javascript:void(0);">Forgot your
                                        password?</a></span>
                                <button class="formbtn">Sign in</button>
                            </form>
                        </div>
                    </div>
                    <div class="face card-back">
                        <div class="panel">
                            <h2>Welcome back!</h2>
                            <span class="panelspan">To keep connected with us please login with your personal
                                info</span>
                            <button class="panelbtn signInBtn">Sign In</button>
                        </div>
                    </div>
                </div>
                <div class="card right">
                    <div class="face card-front">
                        <div class="panel">
                            <h2>Hello, Friend!</h2>
                            <span class="panelspan">Enter your personal details and start journey with us</span>
                            <button class="panelbtn signUpBtn">Sign Up</button>
                        </div>
                    </div>
                    <div class="face card-back">
                        <div class="signup-form">
                            <form action="javascript:void(0);">
                                <h2>Create Account</h2>
                                <div class="social-container">
                                    <a href="javascript:void(0);" class="social" id="fb"><i
                                            class="fab fa-facebook-f"></i></a>
                                    <a href="javascript:void(0);" class="social" id="gp"><i
                                            class="fab fa-google-plus-g"></i></a>
                                    <a href="javascript:void(0);" class="social" id="lin"><i
                                            class="fab fa-linkedin-in"></i></a>
                                </div>
                                <span class="formspan">or use your email for registration</span>
                                <input type="email" placeholder="Email" />
                                <input type="name" placeholder="Username" />
                                <input type="password" placeholder="Password" />
                                <button class="formbtn">Sign up</button>
                            </form>
                        </div>
                    </div>
                </div>
            </div>
        </section>
        <script>
            var left = document.querySelector('.left');
            var right = document.querySelector('.right');
            var signUp = document.querySelector('.signUpBtn');
            var signIn = document.querySelector('.signInBtn');
            signUp.addEventListener('click', function () {
                left.classList.add('flip');
                right.classList.add('flip');
            });
            signIn.addEventListener('click', function () {
                left.classList.remove('flip');
                right.classList.remove('flip');
            });
        </script>
    </body>
</body>
</html>
  • box:作为整个页面的容器,居中显示。
  • container:包含两个card元素,分别代表登录和注册的卡片。
  • 两个face,分别代表卡片的正面和背面。
  • 登录卡片的正面包含一个登录表单,背面包含欢迎信息。
  • 注册卡片的正面包含注册信息,背面包含一个注册表单。
  • input标签用于输入电子邮件、密码、用户名等。
  • button标签用于提交表单和触发翻转效果。
  • .card:设置为相对定位,宽度为容器的50%,高度100%。
  • .face:绝对定位,覆盖整个卡片,背景色为#EEE。
  • .card.flip:使用transform属性实现翻转效果。
  • .panel、.face、form:使用Flexbox布局,居中对齐。
  • input、button:设置输入框和按钮的样式,包括边框、背景色、圆角等。
  • ::placeholder:设置占位符文本的样式。
  • .social-container:使用Flexbox布局社交登录按钮。
  • .social-container a:设置社交登录按钮的样式,包括颜色、背景、圆角等。
  • a、button:设置链接和按钮的悬停和焦点状态的样式变化。
  • 使用transition属性为颜色和变换添加过渡效果。
  • 通过监听.signUpBtn和.signInBtn按钮的点击事件,实现卡片的翻转效果。
相关推荐
ssshooter6 小时前
看完就懂 useSyncExternalStore
前端·javascript·react.js
Live000007 小时前
在鸿蒙中使用 Repeat 渲染嵌套列表,修改内层列表的一个元素,页面不会更新
前端·javascript·react native
柳杉7 小时前
使用Ai从零开发智慧水利态势感知大屏(开源)
前端·javascript·数据可视化
球球pick小樱花8 小时前
游戏官网前端工具库:海内外案例解析
前端·javascript·css
喝水的长颈鹿8 小时前
【大白话前端 02】网页从解析到绘制的全流程
前端·javascript
用户14536981458788 小时前
VersionCheck.js - 让前端版本更新变得简单优雅
前端·javascript
codingWhat8 小时前
整理「祖传」代码,就是在开发脚手架?
前端·javascript·node.js
码路飞8 小时前
写了个 AI 聊天页面,被 5 种流式格式折腾了一整天 😭
javascript·python
Lee川8 小时前
优雅进化的JavaScript:从ES6+新特性看现代前端开发范式
javascript·面试
颜酱9 小时前
单调队列:滑动窗口极值问题的最优解(通用模板版)
javascript·后端·算法