H5+css3+js搭建带验证码的登录页面

下面是“H5+css3+js搭建带验证码的登录页面”的完整攻略:

1. 准备工作

首先我们需要准备一下开发环境,需要安装Node.js、npm、git等软件。然后需要在本地创建一个项目文件夹,并在该文件夹内创建一个index.html文件和一个style.css文件,以及一个index.js文件用于编写JavaScript代码。

2. 搭建页面框架

在index.html文件中,我们需要构建整个登录页面的框架结构,一般分为头部、主体和底部三个部分。头部可以放置网站logo,主体部分放置输入用户名和密码的表单以及验证码等,底部可以放置注册链接和其他信息。

示例1:下面是一个简单的HTML结构示例

<!DOCTYPE html>
<html lang="zh-cn">

<head>
    <meta charset="utf-8">
    <title>登录页面</title>
    <link rel="stylesheet" href="style.css">
    <script src="index.js"></script>
</head>

<body>
    <header>
        <h1>网站logo</h1>
    </header>
    <main>
        <form>
            <label for="username">用户名:</label>
            <input type="text" id="username" name="username" autocomplete="off">
            <br>
            <label for="password">密 码:</label>
            <input type="password" id="password" name="password" autocomplete="off">
            <br>
            <label for="verifycode">验证码:</label>
            <input type="text" id="verifycode" name="verifycode" autocomplete="off" size="8">
            <img src="" id="verifycodeImg" onclick="this.src = this.src + '?' + Math.random()">
            <br>
            <input type="button" id="submitBtn" value="登录">
        </form>
    </main>
    <footer>
        <a href="#">注册</a>
    </footer>
</body>

</html>

3. 样式设计

在style.css文件中,我们需要美化整个登录页面的样式,包括字体、颜色、背景等方面。其中验证码图片的样式需要设置成“display:inline-block”,才能和验证码文本框排列在同一行。

示例2:下面是一个简单的CSS样式示例

* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

body {
    background-color: #f1f1f1;
    font-size: 16px;
}

header {
    text-align: center;
    padding: 20px;
}

h1 {
    font-size: 36px;
}

form {
    margin: 0 auto;
    padding: 20px;
    background-color: #fff;
    border-radius: 10px;
    box-shadow: 0px 0px 10px #bbb;
    text-align: center;
}

label {
    display: inline-block;
    width: 80px;
    text-align: right;
    margin-right: 10px;
}

input[type="text"],
input[type="password"] {
    box-sizing: border-box;
    padding: 5px;
    width: 240px;
    border-radius: 5px;
    border: 1px solid #ccc;
}

#verifycode {
    width: 60px;
}

#verifycodeImg {
    display: inline-block;
    vertical-align: middle;
    cursor: pointer;
}

#submitBtn {
    margin-top: 20px;
    padding: 10px;
    width: 100px;
    border-radius: 5px;
    border: none;
    background-color: #3f51b5;
    color: #fff;
    font-size: 16px;
    cursor: pointer;
    transition: background-color 0.3s ease;
}

#submitBtn:hover {
    background-color: #1a237e;
}

4. JavaScript编程

在index.js文件中,我们需要编写JavaScript代码来实现验证码的生成和表单的提交等功能。生成验证码图片需要通过后端生成,前端只需要通过Ajax请求获取验证码图片的base64编码,然后设置img标签src属性即可。表单的提交需要添加一些验证功能,例如用户名和密码不能为空,验证码文本框的值必须和后端生成的验证码一致等。

示例3:下面是一个简单的JavaScript代码示例

// 获取DOM元素
var verifycodeImg = document.getElementById('verifycodeImg');
var submitBtn = document.getElementById('submitBtn');

// 给验证码图片添加点击事件
verifycodeImg.onclick = function() {
    this.src = '/api/verifycode?' + Math.random();
};

// 给登录按钮添加点击事件
submitBtn.onclick = function() {
    var username = document.getElementById('username').value.trim();
    var password = document.getElementById('password').value.trim();
    var verifycode = document.getElementById('verifycode').value.trim();
    if (!username) {
        alert('用户名不能为空!');
        return;
    }
    if (!password) {
        alert('密码不能为空!');
        return;
    }
    if (!verifycode) {
        alert('验证码不能为空!');
        return;
    }
    // 发送Ajax请求
    var xhr = new XMLHttpRequest();
    xhr.onreadystatechange = function() {
        if (xhr.readyState == 4) {
            if (xhr.status == 200) {
                var response = JSON.parse(xhr.responseText);
                if (response.code == 0) {
                    alert('登录成功!');
                } else {
                    alert('登录失败:' + response.msg);
                }
            } else {
                alert('服务器发生错误!');
            }
        }
    };
    xhr.open('POST', '/api/login', true);
    xhr.setRequestHeader('Content-Type', 'application/json');
    xhr.send(JSON.stringify({ username: username, password: password, verifycode: verifycode }));
};

5. 后端开发

最后我们需要在后端编写API接口,提供验证码图片生成、用户登录验证等功能。这里不同的技术栈会有不同的实现方式,例如Node.js可以使用Express框架、SpringBoot可以使用SpringMVC框架等。

示例4:下面是一个简单的Node.js API接口示例

var express = require('express');
var app = express();

// 生成验证码图片
app.use('/api/verifycode', function(req, res) {
    var captcha = require('trek-captcha');
    captcha().then(function(info) {
        res.type('svg');
        res.send(info.buffer);
    }).catch(function() {
        res.status(500).end();
    });
});

// 用户登录验证
app.use(express.json());
app.use('/api/login', function(req, res) {
    var username = req.body.username;
    var password = req.body.password;
    var verifycode = req.body.verifycode;
    // 省略数据库查询代码
    if (req.session.captcha.toUpperCase() != verifycode.toUpperCase()) {
        res.json({ code: 1, msg: '验证码错误!' });
    } else if (password != user.password) {
        res.json({ code: 1, msg: '密码错误!' });
    } else {
        req.session.user = user.username;
        res.json({ code: 0, msg: '登录成功!' });
    }
});

app.listen(8080, function() {
    console.log('Server started on port 8080');
});

以上就是完整的“H5+css3+js搭建带验证码的登录页面”的攻略了,希望能对你有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:H5+css3+js搭建带验证码的登录页面 - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • css对于字体和背景等属性的控制

    那么让我详细讲解一下如何使用CSS控制字体和背景等属性: 字体属性控制 要使用CSS控制字体属性,可以使用font-family、font-size、font-weight等属性,具体如下: font-family font-family属性可以设置字体的类型,一般情况下建议使用通用字体系列,以保证在各种设备上都能正确渲染,常用的通用字体系列包括:”sans…

    css 2023年6月9日
    00
  • base64图片在各种浏览器的兼容性处理

    base64图片是通过将图片数据转换成base64编码字符串的方式,来实现在网页上展示图片的技术。但是由于不同浏览器的实现方式和支持程度不同,可能导致在某些浏览器中无法正常地显示base64图片,并且这也会影响网页的兼容性和用户体验。 针对这个问题,我们可以采用如下策略来处理base64图片的兼容性问题: 1. 使用CSS sprite技术 CSS Spri…

    css 2023年6月13日
    00
  • 详解Vue.js3.0 组件是如何渲染为DOM的

    下面就来详细讲解一下Vue.js3.0 组件是如何渲染为DOM的攻略。 组件渲染说明 在 Vue.js 中,组件是一个独立的单元,可以复用和拆分,使得我们的代码更加模块化和易于维护。Vue.js3.0 的组件渲染过程主要包含以下几个步骤: 组件的准备阶段:Vue.js会读取组件模板中的标签和属性,解析出组件的结构和属性配置; 组件的实例化阶段:Vue.js …

    css 2023年6月10日
    00
  • XML入门教程:XML语法-XML/XSLT

    XML入门教程:XML语法-XML/XSLT XML(Extensible Markup Language)是一种标记语言,用于存储和传输数据。它被设计用来传输和存储数据,最常用于Web服务和Web应用程序。它的语法比HTML更严格,更灵活,并支持自定义标签。 XML语法 XML的语法很简单,每个标记都必须有一个开放和关闭标记,并且可以嵌套其他标记。下面是一…

    css 2023年6月9日
    00
  • css background 背景图的设置方法

    下面是关于CSS背景图设置方法的攻略: 1. 使用background-image属性 在CSS中,我们可以使用background-image属性来设置背景图片。这个属性可以接收一个URL值,用于指定背景图片的路径。下面是一个例子: body { background-image: url("path/to/image.jpg"); }…

    css 2023年6月9日
    00
  • css 定位应用实例

    下面是关于“CSS定位应用实例”的完整攻略。 概述 CSS定位是指,使用CSS样式表中的定位属性来控制HTML元素相对于其父元素的位置。常见的定位属性有:position、top、bottom、left、right等。在Web开发中,定位应用十分普遍,特别是在响应式设计中,通过使用CSS定位可以实现具有特定尺寸、位置和排列的页面元素。下面,我们将讨论CSS定…

    css 2023年6月9日
    00
  • CSS中的inherit使用技巧小结

    现在就来为大家详细讲解一下“CSS中的inherit使用技巧小结”。 inherit的作用和含义 在CSS中,inherit是一个非常有用的属性值,它可以让某个属性的值继承父元素的相应属性值。具体来说,inherit的作用和含义如下: 让特定元素的某个 CSS 属性继承其父元素的相应属性值。 只要把属性值设置为 inherit,就可以继承父元素的属性值,而不…

    css 2023年6月9日
    00
  • webpack4 CSS Tree Shaking的使用

    下面是webpack4的CSS tree shaking的使用攻略。 什么是CSS tree shaking CSS tree shaking是一项优化技术,通过去除没有使用到的CSS代码,可以显著减小CSS的文件大小。在webpack4中,CSS tree shaking是通过PurgeCSS实现的,PurgeCSS是一个可以检查CSS中未使用样式的工具。…

    css 2023年6月9日
    00
合作推广
合作推广
分享本页
返回顶部