前端登录后台页面实现

69 阅读3分钟

前端登录后台页面实现

下面是一个使用HTML5、JS和CSS实现的前端登录页面,按照要求将文件分开存放。

文件结构

project/
├── index.html       # HTML文件
├── css/
│   └── style.css    # CSS样式文件
└── js/
    └── script.js    # JavaScript文件

1. HTML文件 (index.html)

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>后台管理系统 - 登录</title>
    <link rel="stylesheet" href="css/style.css">
</head>
<body>
    <div class="login-container">
        <div class="login-header">
            <h1>后台管理系统</h1>
        </div>
        <form id="loginForm" class="login-form">
            <div class="form-group">
                <label for="username">用户名</label>
                <input type="text" id="username" name="username" required placeholder="请输入用户名">
            </div>
            <div class="form-group">
                <label for="password">密码</label>
                <input type="password" id="password" name="password" required placeholder="请输入密码">
            </div>
            <div class="form-actions">
                <button type="submit" class="login-btn">登录</button>
            </div>
            <div id="error-message" class="error-message"></div>
        </form>
    </div>

    <script src="js/script.js"></script>
</body>
</html>

2. CSS文件 (css/style.css)

* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
    font-family: 'Arial', sans-serif;
}

body {
    background-color: #f5f5f5;
    display: flex;
    justify-content: center;
    align-items: center;
    height: 100vh;
    background-image: linear-gradient(120deg, #a1c4fd 0%, #c2e9fb 100%);
}

.login-container {
    background-color: white;
    border-radius: 8px;
    box-shadow: 0 4px 20px rgba(0, 0, 0, 0.1);
    width: 400px;
    padding: 40px;
    animation: fadeIn 0.5s ease-in-out;
}

.login-header {
    text-align: center;
    margin-bottom: 30px;
}

.login-header h1 {
    color: #333;
    font-size: 24px;
    font-weight: 600;
}

.login-form .form-group {
    margin-bottom: 20px;
}

.login-form label {
    display: block;
    margin-bottom: 8px;
    color: #555;
    font-size: 14px;
    font-weight: 500;
}

.login-form input {
    width: 100%;
    padding: 12px 15px;
    border: 1px solid #ddd;
    border-radius: 4px;
    font-size: 14px;
    transition: border-color 0.3s;
}

.login-form input:focus {
    border-color: #4a90e2;
    outline: none;
    box-shadow: 0 0 0 2px rgba(74, 144, 226, 0.2);
}

.login-btn {
    width: 100%;
    padding: 12px;
    background-color: #4a90e2;
    color: white;
    border: none;
    border-radius: 4px;
    font-size: 16px;
    font-weight: 500;
    cursor: pointer;
    transition: background-color 0.3s;
}

.login-btn:hover {
    background-color: #3a7bc8;
}

.error-message {
    color: #e74c3c;
    font-size: 14px;
    margin-top: 15px;
    text-align: center;
    min-height: 20px;
}

@keyframes fadeIn {
    from {
        opacity: 0;
        transform: translateY(-20px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

3. JavaScript文件 (js/script.js)

document.addEventListener('DOMContentLoaded', function() {
    const loginForm = document.getElementById('loginForm');
    const errorMessage = document.getElementById('error-message');

    loginForm.addEventListener('submit', function(e) {
        e.preventDefault();
        
        // 获取表单数据
        const username = document.getElementById('username').value.trim();
        const password = document.getElementById('password').value.trim();
        
        // 简单验证
        if (!username || !password) {
            showError('请输入用户名和密码');
            return;
        }
        
        // 模拟登录请求
        simulateLogin(username, password);
    });

    function simulateLogin(username, password) {
        // 显示加载状态
        const loginBtn = document.querySelector('.login-btn');
        loginBtn.textContent = '登录中...';
        loginBtn.disabled = true;
        
        // 模拟API请求延迟
        setTimeout(() => {
            // 这里应该是实际的API调用
            // 示例中使用硬编码的验证
            if (username === 'admin' && password === '123456') {
                // 登录成功
                loginSuccess();
            } else {
                // 登录失败
                showError('用户名或密码错误');
                loginBtn.textContent = '登录';
                loginBtn.disabled = false;
            }
        }, 1000);
    }

    function loginSuccess() {
        errorMessage.textContent = '';
        errorMessage.style.color = '#2ecc71';
        errorMessage.textContent = '登录成功! 正在跳转...';
        
        // 模拟跳转到后台页面
        setTimeout(() => {
            // 实际项目中这里应该是跳转到后台首页
            alert('登录成功,将跳转到后台页面');
            // window.location.href = 'dashboard.html';
        }, 1500);
    }

    function showError(message) {
        errorMessage.textContent = message;
        errorMessage.style.color = '#e74c3c';
    }
});

功能说明

  1. HTML部分:

    • 创建了一个简洁的登录表单,包含用户名和密码输入框
    • 引入了外部的CSS和JS文件
  2. CSS部分:

    • 设计了现代化的登录界面
    • 包含动画效果和响应式设计
    • 使用了渐变色背景和卡片式布局
  3. JavaScript部分:

    • 实现了表单提交验证
    • 模拟了登录API请求
    • 处理了成功和失败的登录场景
    • 提供了用户反馈(错误消息)

扩展建议

  1. 在实际项目中,你需要将模拟登录替换为真实的API调用
  2. 可以添加"记住我"功能
  3. 可以增加密码显示/隐藏切换按钮
  4. 可以添加表单输入的进一步验证
  5. 可以考虑添加第三方登录方式(如Google、微信等)

这个实现遵循了现代前端开发的最佳实践,将结构(HTML)、表现(CSS)和行为(JavaScript)完全分离。 更多代币系列文章详情:baijiahao.baidu.com/s?id=183050…