<!DOCTYPE html>
<html lang="zh-CN">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>用户登录</title><style>* {margin: 0;padding: 0;box-sizing: border-box;font-family: 'Arial', sans-serif;}body {background-color: #f0f2f5;display: flex;justify-content: center;align-items: center;min-height: 100vh;}.login-container {background-color: white;padding: 2rem 3rem;border-radius: 8px;box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);width: 100%;max-width: 400px;}h1 {text-align: center;color: #1a73e8;margin-bottom: 2rem;font-size: 24px;}.form-group {margin-bottom: 1.5rem;}label {display: block;margin-bottom: 0.5rem;color: #5f6368;font-size: 14px;}input {width: 100%;padding: 12px;border: 1px solid #dadce0;border-radius: 4px;font-size: 16px;}input:focus {outline: none;border-color: #1a73e8;box-shadow: 0 0 0 2px rgba(26, 115, 232, 0.2);}button {width: 100%;padding: 12px;background-color: #1a73e8;color: white;border: none;border-radius: 4px;font-size: 16px;font-weight: 500;cursor: pointer;transition: background-color 0.2s;}button:hover {background-color: #1557b0;}.error-message {color: #d93025;font-size: 13px;margin-top: 5px;display: none;}</style>
</head>
<body><div class="login-container"><h1>账户登录</h1><form id="loginForm"><div class="form-group"><label for="username">用户名</label><input type="text" id="username" name="username" required><div class="error-message" id="usernameError">请输入用户名</div></div><div class="form-group"><label for="password">密码</label><input type="password" id="password" name="password" required><div class="error-message" id="passwordError">请输入密码</div></div><button type="submit">登录</button></form></div><script>document.getElementById('loginForm').addEventListener('submit', function(e) {e.preventDefault();let isValid = true;const username = document.getElementById('username').value.trim();const password = document.getElementById('password').value.trim();const usernameError = document.getElementById('usernameError');const passwordError = document.getElementById('passwordError');// 重置错误消息usernameError.style.display = 'none';passwordError.style.display = 'none';// 验证用户名if (!username) {usernameError.textContent = '请输入用户名';usernameError.style.display = 'block';isValid = false;}// 验证密码if (!password) {passwordError.textContent = '请输入密码';passwordError.style.display = 'block';isValid = false;} else if (password.length < 6) {passwordError.textContent = '密码长度不能少于6个字符';passwordError.style.display = 'block';isValid = false;}// 如果验证通过,可以在这里添加登录逻辑if (isValid) {alert('登录成功!\n用户名: ' + username);// 实际应用中,这里会发送登录请求到服务器// fetch('/api/login', { method: 'POST', body: JSON.stringify({username, password}) })}});</script>
</body>
</html>

代码标签的作用

  1. <!DOCTYPE html
    声明文档类型为 HTML5,告诉浏览器告诉浏览器使用 HTML5 标准解析页面。

  2. <html>
    HTML 文档的根标签,所有其他标签都嵌套在其中。lang="zh-CN"属性指定页面主要语言为简体中文,有助于搜索引擎和辅助工具理解内容。

  3. <head>
    包含页面的元数据(不直接显示在页面上的信息),如字符集、标题、样式等。

  4. <meta>

    • charset="UTF-8":指定页面字符编码为 UTF-8,支持中文等多语言显示。
    • name="viewport" content="width=device-width, initial-scale=1.0":设置响应式视图,确保页面在移动设备上正确缩放。
  5. <title>
    定义页面标题,显示在浏览器标签页上,也用于搜索引擎索引。

  6. <style>
    包含 CSS 样式代码,用于控制页面元素的布局和外观(如颜色、大小、间距等)。

  7. <body>
    包含页面的所有可见内容,如文本、图片、表单等。

  8. <div>
    通用容器标签,用于分组其他元素,便于通过 CSS 统一样式或通过 JavaScript 操作。例如.login-container用于包裹整个登录表单。

  9. <h1>
    一级标题标签,用于显示页面的主要标题(此处为 “账户登录”),具有语义化含义,也影响搜索引擎排名。

  10. <form>
    表单标签,用于创建用户输入表单。id="loginForm"用于通过 JavaScript 获取表单并绑定提交事件。

  11. <label>
    为表单元素定义标签,点击标签会聚焦到对应的输入框(通过for属性与输入框的id关联),提升用户体验。

  12. <input>
    输入框标签,用于收集用户输入:

    • type="text":文本输入框(用户名)。
    • type="password":密码输入框(输入内容会被隐藏)。
    • required:指定该字段为必填项,浏览器会自动验证。
  13. <button>
    按钮标签,type="submit"表示点击后提交表单。

  14. <script>
    包含 JavaScript 代码,用于实现交互逻辑(如表单验证、提交处理等)。

 该页面由三部分组成:

  • HTML:构建页面的基本结构和内容
  • CSS:负责页面的样式和布局设计
  • JavaScript:实现表单验证和提交逻辑

 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><!-- 引入CSS样式 -->
</head>
<body><!-- 登录表单容器 --><div class="login-container"><h1>账户登录</h1><form id="loginForm"><!-- 用户名输入区域 --><div class="form-group"><label for="username">用户名</label><input type="text" id="username" name="username" required><div class="error-message" id="usernameError">请输入用户名</div></div><!-- 密码输入区域 --><div class="form-group"><label for="password">密码</label><input type="password" id="password" name="password" required><div class="error-message" id="passwordError">请输入密码</div></div><button type="submit">登录</button></form></div><!-- 引入JavaScript脚本 -->
</body>
</html>
  • 使用<form>标签创建了一个登录表单,ID 为loginForm
  • 包含两个输入字段:用户名(text类型)和密码(password类型)
  • 每个输入字段都有对应的错误提示区域(error-message类)
  • 使用required属性进行基本的表单验证

 CSS 部分

基础样式重置

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

页面布局

body {background-color: #f0f2f5;display: flex;justify-content: center;align-items: center;min-height: 100vh;
}

登录容器样式

.login-container {background-color: white;padding: 2rem 3rem;border-radius: 8px;box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);width: 100%;max-width: 400px;
}

 JavaScript 部分

document.getElementById('loginForm').addEventListener('submit', function(e) {e.preventDefault(); // 阻止表单默认提交行为let isValid = true;// 获取表单值和错误消息元素const username = document.getElementById('username').value.trim();const password = document.getElementById('password').value.trim();const usernameError = document.getElementById('usernameError');const passwordError = document.getElementById('passwordError');// 重置错误消息usernameError.style.display = 'none';passwordError.style.display = 'none';// 验证用户名if (!username) {usernameError.textContent = '请输入用户名';usernameError.style.display = 'block';isValid = false;}// 验证密码if (!password) {passwordError.textContent = '请输入密码';passwordError.style.display = 'block';isValid = false;} else if (password.length < 6) {passwordError.textContent = '密码长度不能少于6个字符';passwordError.style.display = 'block';isValid = false;}// 如果验证通过,执行登录逻辑if (isValid) {alert('登录成功!\n用户名: ' + username);// 实际应用中,这里会发送登录请求到服务器// fetch('/api/login', { method: 'POST', body: JSON.stringify({username, password}) })}
});

验证逻辑说明:

  • 阻止表单默认提交行为,使用自定义验证
  • 检查用户名是否为空
  • 检查密码是否为空以及长度是否不少于 6 个字符
  • 验证失败时显示相应的错误消息
  • 验证通过时弹出登录成功提示(实际应用中会发送登录请求到服务器)

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/90126.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/90126.shtml
英文地址,请注明出处:http://en.pswp.cn/web/90126.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CSS中用display实现元素的显示/隐藏切换

** 通过display中的none和block ** 在前端开发中&#xff0c;display: none 和 display: block 是两种常用的 CSS 显示模式&#xff0c;核心区别在于&#xff1a;是否在页面中保留元素的占位空间 1. 核心区别属性display: nonedisplay: block占位空间元素完全从渲染树中移除&am…

因果图方法设计测试用例的价值与使用范围

一、因果图方法的核心原理 因果图方法通过分析软件规格说明中的输入条件&#xff08;因&#xff09;和输出结果&#xff08;果&#xff09;之间的逻辑关系&#xff0c;利用图形化方式将这些关系清晰展现。它使用特定的符号表示因果关系&#xff08;如恒等、非、或、与&#xff…

智慧农服数字化平台-数字科技赋能农业,开启智慧三农新篇章

智慧农服数字化平台数字科技赋能农业&#xff0c;开启智慧三农新篇章平台概览在乡村振兴和农业现代化的时代背景下&#xff0c;我们推出了创新的农业服务数字化平台——一个专为农业生产者打造的综合性SaaS服务平台。平台以"科技助农、数据兴农"为使命&#xff0c;通…

在线教育培训课程视频如何防下载、防盗录?

在数字化学习日益普及的今天&#xff0c;高质量的在线课程已成为教育机构、知识付费平台和讲师的核心竞争力。如何在不影响学员正常学习体验的前提下&#xff0c;有效防止课程视频被恶意盗取&#xff1f;今天介绍在线教育课程防下载、防盗录的10种视频加密方法&#xff0c;看看…

图像分析学习笔记(2):图像处理基础

图像分析学习笔记&#xff1a;图像处理基础图像增强方法图像复原方法图像分割方法形态学处理图像增强方法 目的&#xff1a;改善视觉效果&#xff0c;例如增强对比度定义&#xff1a;为了改善视觉效果、便于人或计算机对图像的分析理解&#xff0c;针对图像的特点或存在的问题…

生存分析机器学习问题

研究目标&#xff1a; 开发一个机器学习模型&#xff0c;用于个性化预测XXX的总体生存期。 模型输入&#xff1a;结合生存时间、治疗方案、人口统计学特征和实验室测试结果等多种特征。 模型输出&#xff1a;预测二元结果&#xff08;活着 vs. 死亡&#xff09;。 应用场景&…

【华为机试】547. 省份数量

文章目录547. 省份数量描述示例 1示例 2提示解题思路核心分析问题转化算法选择策略1. 深度优先搜索 (DFS)2. 广度优先搜索 (BFS)3. 并查集 (Union-Find)算法实现详解方法一&#xff1a;深度优先搜索 (DFS)方法二&#xff1a;广度优先搜索 (BFS)方法三&#xff1a;并查集 (Union…

09_Spring Boot 整合 Freemarker 模板引擎的坑

09_Spring Boot 整合 Freemarker 模板引擎的坑 1.背景&#xff1a; springboot 版本&#xff1a;3.0.2 2. 引入依赖 在 pom.xml 中添加&#xff1a; <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web<…

十七、【Linux系统yum仓库管理】替换阿里源、搭建本地yum源

替换阿里源、搭建本地yum源本章学习目标内容简介阿里外网源核心功能本地yum核心功能操作演示替换阿里外网源备份原有yum源清理冲突配置下载阿里源配置文件添加EPEL扩展源清理缓存重建索引验证源状态测试安装软件使用镜像搭建本地仓库准备ISO镜像创建挂载点目录挂载iso文件验证挂…

家庭网络怎么进行公网IP获取,及内网端口映射外网访问配置,附无公网IP提供互联网连接方案

在家庭网络中&#xff0c;我们常常需要通过公网IP来访问内网中的设备&#xff0c;比如家庭NAS、Web服务器或监控摄像头。要实现这个目标&#xff0c;首先要确保你的网络具有一个可用的公网IP&#xff0c;然后通过路由器配置端口映射&#xff08;Port Forwarding&#xff09;。如…

(LeetCode 面试经典 150 题 ) 128. 最长连续序列 (哈希表)

题目&#xff1a;128. 最长连续序列 思路&#xff1a;哈希表&#xff0c;时间复杂度0(n)。 用集合set来实现哈希表的功能&#xff0c;记录所有出现的元素。然后遍历元素&#xff0c;细节看注释。 C版本&#xff1a; class Solution { public:int longestConsecutive(vector&…

Altera Quartus:BAT批处理实现一键sof文件转换为jic文件

sof文件是Quartus编译默认生成的程序文件&#xff0c;用于通过JTAG口下载到FPGA内部RAM&#xff0c;断电程序会丢失&#xff0c;jic文件是用于固化到外部Flash中的程序文件&#xff0c;断电程序不会丢失。本文介绍如何通过批处理文件实现sof到jic的一键自动化转换。 Quartus工程…

基于单片机婴儿床/婴儿摇篮/婴儿车设计/婴儿监护系统

传送门 &#x1f449;&#x1f449;&#x1f449;&#x1f449;其他作品题目速选一览表 &#x1f449;&#x1f449;&#x1f449;&#x1f449;其他作品题目功能速览 概述 本设计实现了一种基于单片机的多功能智能婴儿监护系统&#xff0c;集成于婴儿床、摇篮或婴儿车中…

Typora + 七牛云图床终极配置教程

本文是一份超详细的 Typora 七牛云图床配置指南&#xff0c;旨在帮助你实现图片“即插即用”的顺滑写作体验。我们将一步步完成所有配置&#xff0c;并特别针对配置过程中最常见的三个错误&#xff1a;ENOTFOUND (找不到服务器)、401 (无权访问) 和 Document not found (文件不…

高性能熔断限流实现:Spring Cloud Gateway 在电商系统的实战优化

一、为什么需要高性能熔断限流&#xff1f; 在电商系统中&#xff0c;尤其是大促期间&#xff0c;系统面临的流量可能是平时的数十倍甚至上百倍。 这样的场景下&#xff0c;熔断限流不再是可选功能&#xff0c;而是保障系统稳定的生命线。传统方案的问题&#xff1a; 限流精度不…

计算机网络1.1:计算机网络在信息时代的作用

计算机网络已由一种通信基础设施发展成为一种重要的信息服务基础设施。计算机网络已经像水、电、煤气这些基础设施一样&#xff0c;成为我们生活中不可或缺的一部分。

Component cannot be used as a JSX component

今天在使用 React Ts&#xff0c;使用 react-icons 这个库的时候&#xff0c;遇到了这个问题&#xff1a;原因用一句话概括就是 Ts 的版本太低了&#xff01; 我的 package.json&#xff1a; {"name": "frontend","version": "0.1.0"…

Centos安装最新docker以及ubuntu安装docker

Centos安装最新版本docker1.更新阿里源,更新之前先做备份mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup更新阿里源wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo2.运行 yum makecache 生成缓存…

网络基础15-16:MSTP +VRRP综合实验

MSTP 、VRRP综合实验&#xff0c;MSTP涵盖根桥选举、边缘端口、BPDU 保护、根保护、TC 保护 等功能验证。一、实验拓扑与设备规划核心层&#xff1a;LSW1&#xff08;VLAN10 根桥、VLAN20 备份根&#xff09;、LSW2&#xff08;VLAN20 根桥、VLAN10 备份根&#xff09;。接入层…

nvm安装详细教程、镜像、环境变量(安装node.js,npm,nvm)

一、什么是nodejs、nvm、npm 1、node.js 角色&#xff1a;JavaScript 的运行时环境&#xff08;runtime&#xff09;。 作用&#xff1a;让 JavaScript 脱离浏览器&#xff0c;直接在服务器或本地运行&#xff08;比如用 node app.js 执行代码&#xff09;。 包含&#xff1…