联系表单原型
你将构建什么
一个联系表单原型:包含姓名输入框、邮箱输入框、留言文本域、提交按钮,用 label 关联控件,用 required 和 type 属性做基础验证。表单不需要真正提交,只是前端原型。
学习目标
- 用 form 和 input 系列标签搭建表单结构
- 用 label 的 for 属性关联输入控件,提升无障碍体验
- 用 required、type、placeholder 等属性做基础验证和提示
- 用 CSS 让表单排版整洁美观
前置要求
- 了解 HTML 基本标签
- 了解 CSS 基础样式
- 已完成前三个 Web 项目或具备同等基础
步骤
- 1
搭建表单结构
创建 index.html,用 <form> 包裹整个表单。里面放姓名输入框、邮箱输入框和留言文本域。每个控件都用 <label> 关联。
代码<form> <label for="name">姓名</label> <input type="text" id="name" name="name" required /> <label for="email">邮箱</label> <input type="email" id="email" name="email" required /> <label for="message">留言</label> <textarea id="message" name="message" rows="5" required></textarea> <button type="submit">发送</button> </form>预期结果
页面显示一个包含三个字段和提交按钮的表单。
提示
label 的 for 值必须和 input 的 id 一致,点击 label 就能聚焦对应输入框。
- 2
添加验证属性和提示
给姓名加 minlength 限制最少 2 个字符,邮箱用 type=email 让浏览器验证格式,留言加 placeholder 给出填写提示。
代码<input type="text" id="name" name="name" required minlength="2" placeholder="请输入你的名字" /> <input type="email" id="email" name="email" required placeholder="例如:[email protected]" /> <textarea id="message" name="message" rows="5" required placeholder="想说点什么?"></textarea>预期结果
输入框有了占位提示,提交空表单时浏览器会提示必填。
提示
HTML5 原生验证不需要 JavaScript,type=email 会自动检查邮箱格式。
- 3
用 CSS 美化表单
让 label 和控件纵向排列,输入框占满宽度,加合适的内边距和边框。提交按钮用主色背景、白色文字。
代码form { max-width: 480px; margin: 2rem auto; } label { display: block; margin-top: 1rem; font-weight: 600; } input, textarea { width: 100%; padding: 0.5rem; margin-top: 0.25rem; border: 1px solid #cbd5e1; border-radius: 4px; } button { margin-top: 1rem; padding: 0.5rem 1.5rem; background: #2563eb; color: white; border: none; border-radius: 4px; cursor: pointer; }预期结果
表单排版整洁,输入框等宽,按钮有蓝色主题色。
提示
max-width + margin: auto 是居中限宽容器的经典写法。
- 4
测试表单验证
在浏览器里测试:留空提交(应提示必填)、输入短于 2 个字符的姓名(应提示太短)、输入格式错误的邮箱(应提示格式不对)。确认原生验证正常工作。
预期结果
各种非法输入都会被浏览器拦截并给出提示,合法输入能正常提交。
提示
虽然表单不会真正提交数据,但你可以用 onsubmit 事件阻止默认行为来测试。
自己动手试试
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8" />
<title>联系表单</title>
</head>
<body>
<form>
<!-- TODO: 姓名、邮箱、留言、提交按钮 -->
</form>
</body>
</html><!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8" />
<title>联系表单</title>
<style>
form {
max-width: 480px;
margin: 2rem auto;
}
label {
display: block;
margin-top: 1rem;
font-weight: 600;
}
input, textarea {
width: 100%;
padding: 0.5rem;
margin-top: 0.25rem;
border: 1px solid #cbd5e1;
border-radius: 4px;
}
button {
margin-top: 1rem;
padding: 0.5rem 1.5rem;
background: #2563eb;
color: white;
border: none;
border-radius: 4px;
cursor: pointer;
}
</style>
</head>
<body>
<form>
<label for="name">姓名</label>
<input type="text" id="name" name="name" required minlength="2" placeholder="请输入你的名字" />
<label for="email">邮箱</label>
<input type="email" id="email" name="email" required placeholder="例如:[email protected]" />
<label for="message">留言</label>
<textarea id="message" name="message" rows="5" required placeholder="想说点什么?"></textarea>
<button type="submit">发送</button>
</form>
</body>
</html>你学到了什么
你掌握了表单控件的用法,学会用 label 关联提升无障碍体验,用 HTML5 原生属性做基础验证——表单是 Web 应用收集用户输入的核心组件。
相关资源
相关术语
新手友好的术语表用大白话解释编程术语——变量、函数、DOM、Promise 等等。
相关错误
用大白话解释常见错误——什么意思、为什么发生、如何修复。