JavaWeb从0到1-DAY1.3-HTML-CSS快速入门(iv)
·
JavaWeb 盒子模型之后学习笔记
一、这一部分在讲什么
这一部分开始,内容从“基础标签认识”逐渐进入“页面布局和数据交互”。先学了 CSS 盒子模型,理解网页中的元素为什么都能看成一个盒子;然后学习了 Flex 布局,知道父元素如何控制子元素排列。后面继续进入 HTML 表单和表格,分别解决“采集数据”和“展示数据”这两个常见需求。也就是说,这一部分已经从“会写标签”进阶到“会排版、会收集数据、会展示数据”。
二、核心概念
1. 盒子模型
- 它是什么:网页中的每一个元素,都可以看成一个矩形盒子。
- 有什么作用:方便理解页面布局、元素之间的距离、边框和留白。
- 它的原理:浏览器在渲染元素时,不只是看内容本身,还会同时处理内容区、内边距、边框、外边距。
- 初学者容易混淆的点:看到页面上的字和图片时,容易只关注内容本身,忽略它其实外面还包着一层层“盒子结构”。
2. content
- 它是什么:盒子最里面真正放内容的区域。
- 有什么作用:显示文字、图片、视频等实际内容。
- 它的原理:这是浏览器真正渲染内容的核心区域。
- 初学者容易混淆的点:不要把内容区和内边距区混在一起,内容区是内容真正存在的位置。
3. padding
- 它是什么:内边距,也就是内容和边框之间的距离。
- 有什么作用:让内容不要紧贴边框,看起来更舒服。
- 它的原理:在内容区外面增加一圈内部留白。
- 初学者容易混淆的点:
padding是盒子内部的空白,不是盒子和其他元素之间的距离。
4. border
- 它是什么:边框区域。
- 有什么作用:给元素画出边界,方便区分区域。
- 它的原理:浏览器会根据边框宽度、样式、颜色把盒子边界画出来。
- 初学者容易混淆的点:边框不是内容,也不是外边距,它是盒子本身的一部分。
5. margin
- 它是什么:外边距,也就是盒子和外部其他元素之间的距离。
- 有什么作用:控制元素和元素之间的间隔。
- 它的原理:在盒子外面再留出一圈空白区域。
- 初学者容易混淆的点:
margin不属于盒子内部,和padding正好相反。
6. div 和 span
- 它是什么:两个很常见的布局标签。
- 有什么作用:
div适合包一整块内容,span适合包一小段文字。 - 它的原理:
div通常按块级方式显示,span通常按行内方式显示。 - 初学者容易混淆的点:
div不是“专门显示某种内容”的标签,它主要是一个大容器;span也不是换行标签,它只是一个小范围包裹文字的标签。
7. Flex 布局
- 它是什么:一种弹性布局,也是一种一维布局模型。
- 有什么作用:控制子元素怎么横着排、竖着排、居中排、平均分布。
- 它的原理:给父元素设置
display: flex;后,父元素就会按 flex 规则去管理子元素排列。 - 初学者容易混淆的点:Flex 相关属性大多加在父元素上,不是先加在子元素上。
8. flex-direction
- 它是什么:控制主轴方向的属性。
- 有什么作用:决定子元素是横向排还是纵向排。
- 它的原理:浏览器先根据主轴方向确定元素的排布基础方向。
- 初学者容易混淆的点:
row是横向,column是纵向,不要记反。
9. justify-content
- 它是什么:控制子元素在主轴上对齐方式的属性。
- 有什么作用:决定子元素是靠左、靠右、居中,还是平均分开。
- 它的原理:浏览器会把主轴上的剩余空间按规则分配给子元素。
- 初学者容易混淆的点:它控制的是主轴方向,不是随便哪个方向。
10. 表单 form
- 它是什么:网页中专门负责采集数据的标签。
- 有什么作用:把用户输入的信息统一收集并提交出去。
- 它的原理:表单内部的表单项在提交时,会按照
action和method规则被发送给服务器。 - 初学者容易混淆的点:表单不是单纯为了做几个输入框,它最核心的目的是“采集并提交数据”。
11. action 和 method
- 它是什么:表单最重要的两个属性。
- 有什么作用:
action决定提交到哪里,method决定怎么提交。 - 它的原理:浏览器提交表单时,先看地址,再看提交方式。
- 初学者容易混淆的点:
action不是字段名,method也不是输入类型。
12. GET 和 POST
- 它是什么:表单最常见的两种提交方式。
- 有什么作用:决定表单数据如何发送给服务器。
- 它的原理:GET 一般把参数拼在 URL 后面,POST 一般把数据放在请求体里。
- 初学者容易混淆的点:GET 不是“不能提交数据”,而是不适合隐私数据和较大数据量提交。
13. name 属性
- 它是什么:表单项的名字。
- 有什么作用:告诉服务器当前输入的数据属于哪个字段。
- 它的原理:表单提交时,数据通常按“
name=值”的形式发送。 - 初学者容易混淆的点:不写
name,用户虽然能输入,但服务器很可能收不到这项数据。
14. 表单项标签
- 它是什么:真正用来输入和选择数据的控件。
- 有什么作用:根据不同场景收集不同类型的数据。
- 它的原理:浏览器根据不同标签和不同
type提供不同的输入方式。 - 初学者容易混淆的点:不是所有输入场景都只靠
input type="text"完成,很多情况要用专门标签。
15. <input>
- 它是什么:最常见的表单项标签。
- 有什么作用:通过
type属性变成不同的输入控件。 - 它的原理:浏览器根据
type渲染成文本框、密码框、单选框、按钮等。 - 初学者容易混淆的点:
input最关键的是type,同样的标签,换一个type,功能就完全不同。
16. <select> 和 <option>
- 它是什么:下拉列表和列表项标签。
- 有什么作用:让用户从给定选项中进行选择。
- 它的原理:
select是外层列表,option是里面的每一项。 - 初学者容易混淆的点:
option不能单独乱放,它要写在select里面。
17. <textarea>
- 它是什么:文本域标签。
- 有什么作用:输入多行文本。
- 它的原理:浏览器会渲染出一个支持多行输入的区域。
- 初学者容易混淆的点:它和
input type="text"不一样,前者是多行,后者是单行。
18. 表格 table
- 它是什么:展示结构化数据的标签。
- 有什么作用:把一条条数据按行和列展示出来。
- 它的原理:浏览器按表格结构把内容渲染成行列网格。
- 初学者容易混淆的点:表格适合展示数据,不适合拿来代替整页布局。
19. thead、tbody、tr、td、th
- 它是什么:表格中不同层级和不同作用的标签。
- 有什么作用:区分表头、表体、行、普通单元格、表头单元格。
- 它的原理:浏览器根据标签层级知道哪里是表格区域,哪里是一行,哪里是一个格子。
- 初学者容易混淆的点:
tr是一行,td和th是一格,不要把“行”和“格子”弄混。
三、重难点
1. 盒子模型一定要按“从里到外”记
- 结论:盒子模型顺序是
content → padding → border → margin。 - 原因:浏览器渲染盒子就是按这个层次理解的。
- 通俗比喻或小例子:像手机包装盒,从里往外分别是手机、缓冲层、盒子外壳、盒子和其他物品之间的间隔。
2. padding 和 margin 最容易混
- 结论:
padding是盒子内部留白,margin是盒子外部留白。 - 原因:它们都表示“距离”,但位置完全不同。
- 通俗比喻或小例子:字和相框之间的距离像
padding,相框和相框之间的距离像margin。
3. div 和 span 的区别要先建立直觉
- 结论:
div更适合包大块内容,span更适合包一小段文字。 - 原因:它们默认显示方式不同,一个偏块级,一个偏行内。
- 通俗比喻或小例子:
div像一个收纳箱,span像贴在物品上的小标签。
4. Flex 先记住“父控子”
- 结论:Flex 最重要的是给父元素加
display: flex;,由父元素控制子元素排列。 - 原因:Flex 的核心思想就是容器管理项目。
- 通俗比喻或小例子:像老师安排学生站队,老师是父元素,学生是子元素。
5. row 和 column 不要背反
- 结论:
row横着排,column竖着排。 - 原因:它们决定主轴方向,方向一错,布局就全反了。
- 通俗比喻或小例子:
row像一排座位,column像一列电梯按钮。
6. justify-content 管的是主轴
- 结论:
justify-content控制子元素在主轴上的对齐方式。 - 原因:Flex 布局中很多属性都围绕主轴来工作。
- 通俗比喻或小例子:如果桌子横着摆杯子,
justify-content就是控制杯子在这张桌子横向上的分布方式。
7. 表单的本质是“采集并提交数据”
- 结论:表单不是只做样子,而是为了收集用户输入并提交给服务器。
- 原因:登录、注册、留言、搜索本质上都是数据采集行为。
- 通俗比喻或小例子:像填一张报名表,重点不是纸长什么样,而是填完后要交出去。
8. name 属性不能忽略
- 结论:表单项要想被采集,通常必须写
name。 - 原因:服务器要靠字段名识别数据。
- 通俗比喻或小例子:像试卷上如果不写“姓名”这一栏的名字,老师就不知道那一格代表什么。
9. radio 和 checkbox 非常容易混
- 结论:
radio是单选,checkbox是多选。 - 原因:它们虽然长得都像选择框,但使用场景不同。
- 通俗比喻或小例子:
radio像单选题,checkbox像多选题。
10. 表格要按“表 → 行 → 格子”去理解
- 结论:
table是整张表,tr是一行,td/th是格子。 - 原因:表格结构本来就是层层嵌套的。
- 通俗比喻或小例子:像 Excel,先有整张表,再有每一行,再有每个单元格。
四、代码理解
1. 盒子模型示例
div {
width: 200px;
height: 100px;
background-color: #05a5d2;
padding: 20px;
border: 20px solid #6bd5d7;
margin: 30px;
}
关键理解
width、height:设置内容区宽高。background-color:背景颜色。padding: 20px;:四个方向内边距都为 20px。border: 20px solid #6bd5d7;:设置边框宽度、样式、颜色。margin: 30px;:外边距四边都为 30px。
语法规律
- 写 4 个值:
上 右 下 左 - 写 2 个值:
上下 左右 - 写 1 个值:四边一样
- 单独设置一边:
padding-top、margin-left、border-right
2. Flex 布局示例
.box {
display: flex;
flex-direction: row;
justify-content: space-between;
}
<div class="box">
<div>1</div>
<div>2</div>
<div>3</div>
</div>
关键理解
display: flex;:把.box变成弹性容器。flex-direction: row;:子元素横向排列。justify-content: space-between;:左右两端贴边,中间平均分布。- 里面的 3 个子
div是 flex item。
3. 表单示例
<form action="/save" method="post">
姓名:<input type="text" name="name">
年龄:<input type="text" name="age">
<input type="submit" value="提交">
</form>
关键理解
form:整个表单。action="/save":提交到/save。method="post":用 POST 方式提交。name="name"、name="age":表示字段名。submit:点击后提交表单。
4. 常见表单项示例
<input type="text">
<input type="password">
<input type="radio">
<input type="checkbox">
<input type="file">
<input type="date">
<input type="time">
<input type="datetime-local">
<input type="hidden" name="id" value="1">
<input type="submit" value="提交">
<input type="reset" value="重置">
<input type="button" value="普通按钮">
关键理解
text:单行文本框password:密码框radio:单选框checkbox:复选框file:上传文件hidden:页面看不到,但提交时会带上submit:提交表单reset:恢复初始状态button:普通按钮
5. 下拉列表和文本域示例
<select name="city">
<option>北京</option>
<option>上海</option>
<option>广州</option>
</select>
<textarea name="desc"></textarea>
关键理解
select:下拉列表整体。option:一个选项。textarea:多行文本输入。
6. 表格示例
<table>
<thead>
<tr>
<th>姓名</th>
<th>性别</th>
</tr>
</thead>
<tbody>
<tr>
<td>张三</td>
<td>男</td>
</tr>
</tbody>
</table>
关键理解
table:整个表格。thead:表头区域。tbody:数据区域。tr:一行。th:表头单元格。td:普通数据单元格。
五、易错点
- 把
padding和margin当成同一个东西。 - 写 4 个边距值时,不记得顺序是“上右下左”。
- 误以为
div和span没区别。 - Flex 布局写到子元素上,却忘了先给父元素加
display: flex;。 - 把
row和column的方向记反。 - 不知道
justify-content控制的是主轴方向。 - 表单项不写
name,导致数据采集不到。 - 把 GET 和 POST 的特点混掉。
- 把
radio当成多选框,把checkbox当成单选框。 select和option关系写错。- 把
tr、td、th的层级搞乱。 - 以为表格是专门做页面布局的,其实它主要是展示结构化数据。
六、记忆口诀 / 通俗比喻
- 盒子模型:内容、内边距、边框、外边距。
- 从里到外:content → padding → border → margin。
- padding 盒内空,margin 盒外空。
- div 装大块,span 包小段。
- Flex 记一句:父控子。
- row 横着排,column 竖着排。
- 表单采集数据,表格展示数据。
- action 管地址,method 管方式。
- GET 挂地址,POST 放请求体。
- radio 单选,checkbox 多选。
- table 是整表,tr 是一行,td/th 是格子。
七、应用
在实际开发中,盒子模型和 Flex 布局几乎天天都要用。做一个登录页时,要用盒子模型控制输入框和按钮之间的距离;做导航栏时,经常用 Flex 把菜单横向排开并控制居中或两端对齐。表单则负责收集用户输入,比如登录、注册、搜索、留言;表格则常用于后台管理系统中展示员工列表、订单列表、商品列表。所以这一部分内容虽然都是基础,但已经非常贴近真实开发场景。
八、最终总结
从盒子模型开始,学习重点就从“认识标签”逐渐进入“理解布局和交互”。盒子模型帮助我们理解元素的结构和间距,Flex 布局帮助我们控制排列方式。表单解决数据采集问题,表格解决数据展示问题。只要把这些知识点的职责分清楚,后面做页面时就不会只会堆标签,而是能真正开始搭结构、控布局、收数据、展示数据。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)