Web 前端学习笔记(一):HTML 基础
这是我练习 Web 前端时整理的笔记,原文是一批可以单独打开的 HTML 练习文件。这里按知识点重新组织,每节都附了能直接点击运行的 demo,方便对照效果。
这篇文章覆盖 HTML 最基础的四个部分:文本标签、属性、区块、表单。
一、常见文本标签
标题与段落
HTML 提供六级标题,数字越小级别越高、字号越大:
1 | <h1>一级标题标签</h1> |
一个页面里 h1 通常只用一次(它代表页面主标题),其余按层级递减。这不只是风格问题,搜索引擎和无障碍工具都依赖标题层级来理解页面结构。
文本样式标签
1 | <p> |
这四个是”表现型”标签。更推荐的写法是用语义标签 <strong> 和 <em>:它们在视觉上分别等价于粗体和斜体,但表达的是”重要”和”强调”的语义,屏幕阅读器会重读。<b>/<i> 纯粹是样式,没有语义。
现在更规范的做法是把样式交给 CSS。<u> 下划线尤其容易和超链接混淆——链接默认就是带下划线的,用下划线标注普通文本会让用户误以为可点击。
列表
1 | <!-- 无序列表:每一项前面是小圆点 --> |
两种列表的唯一区别是有没有顺序含义。要做导航菜单用 ul,要写步骤用 ol。所有列表项都放在 <li> 里,<li> 必须直接是 ul/ol 的子元素。
表格
表格由三种标签组成,记住它们的分工就不会乱:
| 标签 | 全称 | 作用 |
|---|---|---|
<table> |
table | 表格容器 |
<tr> |
table row | 一行 |
<th> |
table header | 表头单元格(默认加粗居中) |
<td> |
table data | 普通数据单元格 |
1 | <table border="1"> |
border="1" 只是为了在练习时看清表格边界。实际项目里表格边框一律用 CSS 控制,HTML 属性写法已经过时了。
二、HTML 属性
属性写在开始标签里,格式是 属性名="属性值",用来给标签补充信息。
超链接:a 标签
1 | <a href="https://www.baidu.com">这是一个超链接 百度</a> |
href是跳转目标,必须有,少了它这个<a>就不可点击;target控制打开位置,不写默认就是_self。
用 target="_blank" 时,现代浏览器出于安全考虑会自动加上 rel="noopener"。如果你手动写 HTML,建议同时写上 rel="noopener noreferrer",否则新页面可以通过 window.opener 反过来操纵你的页面。
图片:img 标签
1 | <!-- 存在的图片,正常显示 --> |
img 是单标签(自闭合),没有 </img>。三个属性各有用途:
| 属性 | 作用 |
|---|---|
src |
图片路径,必须有 |
alt |
图片加载失败时显示的替代文字,也是屏幕阅读器朗读的内容 |
width / height |
显示宽高,单位像素 |
demo 里第二个 img 的 src 故意写成了不存在的 you.gif,就是为了让你看到 alt 文字在图片加载失败时会顶上来。这也是 alt 存在的意义——网络慢、图片路径写错、用户开了无图模式,都靠它兜底。
换行与分割线
1 | <br> <!-- 换行 --> |
同样是单标签。<br> 只应该用于同一段文字内部需要强制换行的场景(比如写诗、地址),要分隔段落请用 <p>,不要用一堆 <br> 堆出间距。
三、区块元素:div 与 span
这两个标签本身没有任何视觉效果,纯粹是”装东西的盒子”,用来给页面划分区域、方便之后用 CSS 布局。它们最本质的区别在显示方式:
| 标签 | 类型 | 特点 |
|---|---|---|
<div> |
块级元素 block | 独占一行,可以设置宽高 |
<span> |
行内元素 inline | 不换行,和文字排在同一行,设置宽高无效 |
1 | <!-- div 划分导航区 --> |
用一句话记住选择标准:要划分”块”用 div,要圈住”一行里的一小段文字”用 span。demo 里那四个连续排列的 span 就直观说明了它们不换行的特性。
class 属性是给元素起”分类名”,多个元素可以共用同一个 class;对应的还有 id,全页面必须唯一。这两者都是 CSS 选择器和 JS 查找元素的抓手,下一篇文章会大量用到。
四、HTML 表单
表单是页面收集用户输入的方式,由 <form> 包裹若干 <input> 组成。
1 | <form action="#"> |
关键属性对照
| 属性 | 作用 |
|---|---|
type |
输入框类型:text / password / radio / checkbox / submit … |
name |
提交时的字段名,同一个 radio 组必须用同一个 name 才能互斥 |
value |
输入框的预设值;对 submit 来说就是按钮上的文字 |
placeholder |
输入框为空时的灰色提示文字,不会随表单提交 |
三个容易踩的点
1. radio 靠 name 分组。 三个性别的 name 都是 gender,所以只能选一个;如果 name 各不相同,就会变成三个都能点中的独立单选按钮。checkbox 则天然可以多选。
2. label 的 for 要对应 input 的 id。 这样点击文字就能聚焦到对应输入框,体验好很多,对无障碍也重要。demo 里前半部分的 <label for="username"> 和 <input name="username"> 其实并没有真正关联——因为 input 没有 id,for 找不到目标。正确写法是给 input 加 id="username"。
3. 原始练习文件里 </form action="#"> 是写错的。 action 是 <form> 开始标签的属性,闭合标签不能带属性,正确写法是:
1 | <form action="#"> |
浏览器很宽容,会自动纠正这类错误,所以页面看起来照样能跑。但不要依赖这种容错——用编辑器的高亮和校验功能能及早发现。
placeholder 常被误当成”默认值”。它只是提示,用户不输入的话提交上去是空的。想要真正的默认值要用 value。
小结
| 知识点 | 核心记忆点 |
|---|---|
| 文本标签 | 标题分六级;列表分有序无序;表格是 table → tr → th/td |
| 属性 | 写在开始标签里;img 必须有 alt;target="_blank" 记得配 rel |
| 区块 | div 块级独占一行,span 行内不换行且宽高无效 |
| 表单 | radio 靠 name 分组;label for 要对应 id;placeholder 不是默认值 |
HTML 只负责结构和内容,长什么样交给 CSS。下一篇整理 CSS 的导入方式、选择器、常用属性和盒子模型。
本系列其他文章
