列表元素,表格元素,表单元素
1. 列表元素
1.1. 认识列表
场景:在网页中按照行展示关联性的内容。如:新闻列表,排行榜,账单等。
特点:按照行的方式,整齐显示内容
种类:无序列表(新闻列表),有序列表(排行榜),自定义列表(网页底部信息)
1.2. 列表的实现方式
事实上现在很多的列表功能采用了不同的方案来实现
- 方案一:使用
div元素来实现(比如汽车之家, 知乎上的很多列表) - 方案二:使用
列表元素, 使用元素语义化的方式实现
- 方案一:使用
事实上现在很多的网站对于列表元素没有很强烈的偏好
- 原因是列表元素默认的CSS样式,让它用起来不是非常方便
- 比如列表元素往往有很多的限制,ul/ol中只能存放li,li再存放其他元素,默认样式等
- 虽然可以通过重置来解决,但是更喜欢自由的div
HTML提供了3组常用的用来展示列表的元素
- 有序列表:ol、li
- 无序列表:ul、li
- 定义列表:dl、dt、dd
1.3. 有序列表 ol – li
场景:在网页中表示一组有顺序之分的列表,如:排行榜
标签组成
标签名 说明 ul - ordered list 表示有序列表的整体,用于包裹li标签 li - list item 表示有序列表的每一项,用于包含每一行的内容 显示特点
- 列表的每一项前默认显示序号标识
注意点
- ol标签中只允许包含li标签
- li标签可以包含任意内容
1.3.1. 展示

1.3.2. HTML
1 | <h2>电影排名</h2> |
1.3.3. CSS
浏览器自定义
1 | ol { |
1.4. 无序列表 ul - li
场景:在网页中表示一组无顺序之分的列表,如新闻列表
标签组成
标签名 说明 ul - unordered list 表示无序列表的整体,用于包裹li标签 li - list item 表示无序列表的每一项,用于包含每一行的内容 显示特点
- 列表的每一项前默认显示圆点标识
注意点
- ul标签中只允许包含li标签
- li标签可以包含任意内容
1.4.1. 展示

1.4.2. HTML
1 | <h2>前端开发技能</h2> |
1.4.3. CSS
1 | ul { |
1.5. 定义列表 dl – dt - dd
场景:在网页的底部导航中通常会使用自定义列表实现
标签组成
标签名 说明 dl - definition list 定义列表的整体,用于包裹dt/dd标签 dt - definition term term是项的意思, 定义列表中每一项的项目名 dd - definition description 定义列表中每一项的具体描述,是对 dt 的描述、解释、补充 显示特点
- 列表的每一项前默认显示缩进效果
注意点
- dl标签中只允许包含dt/dd标签
- 一个dt后面一般紧跟着1个或者多个dd
1.5.1. 展示

1.5.2. HTML
1 | <h2>前端开发</h2> |
1.5.3. CSS
1 | dl { |
1.6. 列表的练习
1.6.1. 展示

1.6.2. HTML
1 | <ul> |
1.6.3. CSS
1 | body,ul,li,span,a,p { |
2. 表格元素
2.1. 表格常见的元素
场景:在网页中以行+列的单元格的方式整齐展示和数据,如:学生成绩表
标签组成
标签名 说明 table 表格整体,可用于包裹多个tr tr - table row 表格每行,可用于包裹td td - table data 表格单元格,可用于包裹内容 注意点
- 标签嵌套关系:table > tr > td
2.2. 表格的练习
通过表格元素和CSS完成下面的表格

2.2.1. HTML
1 | <table> |
2.2.2. CSS
这里需要用到一个非常重要的属性
border-collapse CSS 属性是用来决定表格的边框是分开的还是合并的
table { border-collapse: collapse; } 合并单元格边框
1 | table { |
2.3. 表格的其他元素
场景:在表格中表示整体大标题和一列小标题
标签组成
标签名 说明 captain 表示表格整体大标题,默认在表格整体顶部居中位置显示 th 表示一列小标题,通常用于表格第一行,默认内部文字加粗并居中显示 注意点
- captain标签书写在table标签内部
- th标签书写在tr标签内部
场景:让表格的内容结构分组,突出表格的不同部分(头部,主题,底部),让语义更加清晰
结构标签
标签名 说明 thead 表格头部 tbody 表格主体 tfoot 表格底部 注意点
- 表格的结构标签可以省略
2.3.1. 展示

2.3.2. HTML
1 | <table> |
2.3.3. CSS
1 | table { |
2.4. 单元格合并
在某些特殊的情况下, 每个单元格占据的大小可能并不是固定的
一个单元格可能会
跨多行或者多列来使用单元格合并分成两种情况:
- 跨列合并: 使用colspan
- 在最左边的单元格写上colspan属性, 并且省略掉合并的td
- 跨行合并: 使用rowspan
- 在最上面的单元格协商rowspan属性, 并且省略掉后面tr中的td
- 跨列合并: 使用colspan
合并单元格步骤
明确合并哪些单元格
通过左上原则,确定保留谁删除谁
- 上下合并 -> 只保留最上的,删除其他
- 左右合并 -> 只保留最左的,删除其他
给保留的单元格设置:跨行,跨列合并
属性名 属性值 说明 rowspan 合并单元格的个数 跨行合并,将多行的单元格垂直合并 colspan 合并单元格的个数 跨列合并,将多列的单元格水平合并
注意点:只有同一个结构标签中的单元格才能合并,不能跨结构标签合并,不能跨thead,tbody,tfoot
2.4.1. 跨列 colspan

1 | <table> |
2.4.2. 跨行 rowspan

1 | <table> |
2.5. 单元格合并练习
2.5.1. 展示

2.5.2. HTML
1 | <table> |
2.5.3. CSS
1 | table { |
3. 表单元素
3.1. 认识表单
- HTML表单元素是和用户交互的重要方式之一
- 登录页
- 注册页
- 搜索栏
- …
3.2. 常见的表单元素
- form:表单, 一般情况下,其他表单相关元素都是它的后代元素
- input:单行文本输入框、单选框、复选框、按钮等元素
- textarea:多行文本框
- select、option:下拉选择框
- button:按钮
- label:表单元素的标题
3.3. input元素的使用
- 表单元素使用最多的是input元素
- type类型的取值和input的其他属性,查看文档
3.3.1. 常见属性
| 属性名 | 说明 |
|---|---|
| placeholder | 占位符。提示用户输入内容的文本 |
| value | 用户输入的内容,提交之后会发送给后端服务器, |
| name | 当前控件的含义,提交之后可以告诉后端发送过去的数据的含义 |
| required | 表单拥有该属性表示其内容不能为空,必填 |
| autofocus | 自动聚焦属性,页面加载完成自动聚焦到指定表单 |
| autocomplete | 当用户在字段开始键入时,浏览器基于之前键入过的值,应该显示出在字段中填写的选项。默认已经打开,autocomplete=”on”。关闭,autocomplete=”off”。需要放在表单内同时加上name属性,同时成功提交 |
| multiple | 可以多选文件提交 |
| disabled | 禁用 |
| readonly | 只读 |
| checked | 默认被选中。只有当type为radio或checkbox时可用 |
3.3.2. type属性
https://developer.mozilla.org/zh-CN/docs/Web/HTML/Element/Input
- text:文本输入框(明文输入)
- password:文本输入框(密文输入)
- radio:单选框
- checkbox:复选框
- button:按钮
- reset:重置
- submit:提交表单数据给服务器
- file:文件上传
- email:限制用户输入必须为email类型
- url:限制用户输入必须为url格式
- time:限制用户输入必须为时间类型
- month:限制用户输入必须为月类型
- week:限制用户输入必须为周类型
- date:日期
- number:限制用户输入必须为数字类型,但不限制 e - 代表科学计数法
- tel:手机号码
- color:生成一个颜色选择表单
- search:键入文字后搜索框内会出现×号可用于清除当前键入的文字
3.3.3. 布尔属性
- 常见的布尔属性有disabled、checked、readonly、multiple、autofocus、selected
- 布尔属性可以没有属性值,写上属性名就代表使用这个属性
- 如果要给布尔属性设值,值就是属性名本身
1 | <input type="text" readonly disabled autofocus> |
3.4. 按钮标签 label
场景
- label元素一般跟input配合使用,用来表示input的标题
- labe可以跟某个input绑定,点击label就可以激活对应的input变成选中
使用方法
1
2
3
4
5
6
7
8
9
10
11
12<div>
<label for="username">
用户:
<input type="text" id="username" name="uname">
</label>
</div>
<div>
<label for="password">
密码:
<input type="text" id="password" name="pwd">
</label>
</div>
3.5. 文本框 text
- type=”text”
1 | <input type="text" name="name" value="123"> |
3.6. 密码框 password
- type=”password”
1 | <input type="password" name="name" value="123"> |
3.7. 单选框 radio
type=”radio”
1
2
3
4
5
6
7
8
9
10
11<form action="/">
性别:
<label for="male">
男
<input id="male" type="radio" name="sex" value="male" checked>
</label>
<label for="female">
女
<input id="female" type="radio" name="sex" value="female">
</label>
</form>常用属性
属性名 说明 name 分组。有相同name属性值的单选框为一组,一组中同时只能有一个被选中 checked 默认选中 注意点
name属性对于单选框有分组功能有相同name属性值的单选框为一组,一组中只能同时有一个被选中
3.8. 复选框 checkbox
在网页中显示多选多的多选表单控件
type=”checkbox”
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15<form action="/">
爱好:
<label for="basketball">
篮球
<input id="basketball" type="checkbox" name="hobby" value="basketball" checked>
</label>
<label for="football">
足球
<input id="football" type="checkbox" name="hobby" value="football">
</label>
<label for="run">
跑步
<input id="run" type="checkbox" name="hobby" value="run">
</label>
</form>常用属性
属性名 说明 checked 默认选中 注意点
- 属于同一种类型的checkbox,name值要保持一致
3.9. 文本域 textarea
- 场景:在网页中提供可输入多行文本的表单控件
- 常见属性
- cols:规定了文本域内可见宽度
- rows:规定了文本域内可见行数
- 缩放的CSS设置
- 禁止缩放:resize: none;
- 水平缩放:resize: horizontal;
- 垂直缩放:resize: vertical;
- 水平垂直缩放:resize: both;
- 注意点
- 右下角可以拖拽改变大小
- 实际开发时针对样式效果推荐用css设置
1 | <form> |
3.10. 下拉菜单 select
场景:在网页中提供多个选择项的下拉菜单表单控件
标签组成
- select标签:下拉菜单的整体
- option标签:下拉菜单的每一项
option是select的子元素,一个option代表一个选项
select常用属性
- multiple:可以多选
- size:显示多少项
option常用属性
- selected:默认被选中
1 | <select name="equipment"> |
3.11. 表单按钮
type属性值
type属性值 说明 submit 提交按钮,点击之后提交数据给后端服务器(包括input、textarea、select) reset 普通按钮。默认无功能,之后配合js添加功能 button 普通按钮。默认无功能,之后配合js添加功能 注意点
- 如果需要实现以上按钮功能,需要配合form标签使用
form使用方法:用form标签把表单标签一起包裹起来即可
1
2
3
4
5
6<form>
<input type="text" name="uname">
<input type="sumbit" value="提交按钮">
<input type="reset" value="重置按钮">
<input type="button" value="普通按钮">
</form>也可以通过button实现
1
2
3
4
5
6<form>
<input type="text" name="uname">
<button type="sumbit">提交按钮</button>
<button type="reset">重置按钮</button>
<button type="button">普通按钮</button>
</form>
3.12. form常见的属性
form通常作为表单元素的父元素
- form可以将整个表单作为一个整体来进行操作
- 比如对整个表单进行重置
- 比如对整个表单的数据进行提交
form常见的属性如下
- action:用于提交表单数据的请求URL
- method:请求方法(get和post),默认是get
- target:在什么地方打开URL(参考a元素的target)
3.12.1. action
- 规定当提交表单时,向何处发送表单数据
- 值应该是后端提供的一个url地址,这个地址专门负责接收表单提交过来的数据
- 当未指定这个数值时,表单提交的默认动作是提交给当前页面url地址
3.12.2. method
- 表单提交方式:get/post
- 默认是get,通过url地址+参数的形式提交给服务器
- post,通过url地址+请求体形式提交给服务器
- http://ww.test.com/login
- 请求体:phone=123&password=234
3.12.3. target
- 规定何处打开提交的url
- 默认是在同一个窗口下
| 值 | 描述 |
|---|---|
| _blank | 在新窗口中打开 |
| _self | 默认。在相同框架中打开 |
| _parent | 在父框架集中打开 |
| _top | 在整个窗口中打开 |
| framename | 在指定的框架中打开 |
3.12.4. enctype
- 规定发送表单数据之前如何对数据进行编码
- 默认情况下值为
application/x-www-form-urlencoded,表示在发送前编码所有的字符 - 文件上传时,必须将值设置为
multipart/form-data