HTML第三篇:HTML元素-列表、表格、表单
注意:当前的元素可以先学部分css然后回过头来看
列表
- HTML提供3组常用的用来显示列表的元素
- 有序列表:ol、li
- 无序列表:ul、li
- 定义列表:dl、dt、dd
有序列表ol、li
- ol(ordered list):有序列表,直接子元素只能是li
- li(list item): 列表中的每一项
无序列表ul、li
- ul(unordered list):无序列表,直接子元素只能是li
- li(list item)
- 举例:列表中嵌套列表,li里面嵌套新的ul
<ul>
<li>
第一章
<ul>
<li>
第一节
<ul>
<li>1233</li>
<li>2344</li>
<li>4444</li>
</ul>
</li>
<li>第二节</li>
</ul>
</li>
<li>第二章</li>
<li>第三章</li>
</ul>
定义列表:dl、dt、dd
- dl(definition list):定义列表,直接子元素只能是dt、dd
- dt(definition term):列表中每一项的项目名
- dd(definition description)
- 列表中每一项的具体描述,是对dt的描述、解释、补充
- 一个dt后面一般紧跟着1个或者多个dd
- dt、dd常见的组合
- 事物的名称、事物的描述
- 问题、答案
- 类别名、归属于这类的各种事物
-
代码举例:
/* 取出margin */ dd { margin: 0; } <!-- 项目1 项目描述 项目描述 项目描述 --> <dl> <!-- 项目名称:项目描述 --> <dt>项目1</dt> <dd>项目描述</dd> <dd>项目描述</dd> <dd>项目描述</dd> <!-- 类别名称:类别描述 --> <dt>SUV</dt> <dd>牧马人</dd> <dd>普拉多</dd> <dd>揽胜</dd> </dl>
列表相关的CSS属性
- 列表相关的常见的CSS属性有4个:list-style-type、list-style-image、list-style-postition、list-style
- 适用于display设置为list-item的元素,比如li元素
- 他们都可以继承,所以设置给ol、ul元素,默认也会应用到li元素
- list-style-type: 设置li元素左边标记的样式
- disc(实心圆)、circle(空心圆)、square(实心方块)
- decimal(阿拉伯数字)、lower-romah(小写罗马数字)、upper-roman(大写罗马数字)
- lower-alpha(小写英文字母)、upper-alpha(大写英文字母)
- none(什么也没有)
- list-style-image:设置某张图片为li元素前面的标记,会覆盖list-style-type的设置
- list-style-postition: 设置li元素前面标记的位置,可以取outside、inside2个值
- list-style:是list-style-type、list-style-image、list-style-postition的缩写属性
-
举例:
li { /* li样式 */ list-style-type: none; /* li左边图片 */ list-style-image: url(""); /* 缩写 */ list-style: none inside; }
表格
常用元素
table:表格
tr: 表格中的行
td: 行中的单元格
元素常用的属性
-
table常用属性
border:边框宽度 cellpadding:单元格内部的间距 cellspacing:单元格之间的间距 width:表格的宽度 align:表格的水平对齐方式left、center、right
-
th、td的常用属性
valign:单元格的垂直对齐方式,top、middle、bottom、baseline align:单元格的水平对齐方式left、center、right width:单元格的宽度 height:单元格的高度 rowspan:单元格可横跨的行数 colspan:单元格可横跨的列数
-
tr的常用属性
valign:单元格的垂直对齐方式,top、middle、bottom、baseline align:单元格的水平对齐方式left、center、right
-
举例:
<table border="1" cellpadding="10" cellspacing="0" width="600" align="center"> <tr align="center"> <td>放映时间</td> <td>语言版本</td> <td>放映厅</td> <td>售价(元)</td> <td>选座购票</td> </tr> <tr align="center"> <td align="center">13:15</td> <td>国语3D</td> <td>2号厅</td> <td>¥48</td> <td><input type="button" value="选座购票"></td> </tr> <tr align="center"> <td>13:15</td> <td>国语3D</td> <td>2号厅</td> <td>¥48</td> <td><input type="button" value="选座购票"></td> </tr> </table>
细线表格的实现
- 上面用table实现的表格,默认每个item是有间距的,将cellspacing设置为0,但是每隔单元格的boder为1,2根boder线融合的,表格的线也很粗,那么如何实现细线表格呢?
- 方法1:(不常用)
- 表格的border为0(或者不设置border)
- 分别设置表格单元格的背景色
- 表格的背景色决定了表格线的颜色
- 设置cellspacing的值
- 决定了表格线的粗细
-
代码举例:
<style> /* 2. 单元格的背景色 */ td { background-color: #f00; } /* 3. 表格的背景色 */ table{ background-color: #000; } </style> <!-- 1. border="0" 或者直接不写 --> <table cellspacing="1" border="0"> ... </table>
- 方法2:
-
只通过css属性设置
<style> td { /*1. 设置单元格的边框 */ border: 1px solid #000; } table{ /* 2. 合并单元格的边框 */ border-collapse: collapse; } </style> <table> ... </table>
-
其他元素
- tbody:表格的主体
- caption:表格的标题
- thead:表格的表头
- tfoot:表格的页脚
- th:表格的表头单元格
-
举例:
<table align="center"> <!-- 表标题 --> <caption>欢迎光临万达影城</caption> <!-- 表头 --> <thead> <tr> <!-- th:表头单元格,自动加粗 --> <th>放映时间</th> <th>语言版本</th> <th>放映厅</th> <th>售价(元)</th> <th>选座购票</th> </tr> </thead> <!-- 表格的主体 --> <tbody> <tr> <td >13:15</td> <td>国语3D</td> <td>2号厅</td> <td>¥48</td> <td><input type="button" value="选座购票"></td> </tr> <tr> <td>13:15</td> <td>国语3D</td> <td>2号厅</td> <td>¥48</td> <td><input type="button" value="选座购票"></td> </tr> </tbody> <!-- 表格的页脚 --> <tfoot> </tfoot> </table>
单元格合并
- 通过使用rowspan、colspan属性来合并
- 合并要领
- 合并方向是向右、向下
- 手动删掉被覆盖掉的td元素,在第一个td元素上设置rowspan、colspan属性
-
举例:
<style> td { border: 1px solid #000; } table { border-collapse: collapse; } </style> <!-- 合并左上角4个item --> <table> <tr> <td colspan="2" rowspan="2">td01</td> <!-- <td>td02</td> --> <td>td03</td> <td>td04</td> <td>td05</td> </tr> <tr> <!-- <td>td01</td> <td>td02</td> --> <td>td03</td> <td>td04</td> <td>td05</td> </tr> <tr> <td>td01</td> <td>td02</td> <td>td03</td> <td>td04</td> <td>td05</td> </tr> </table>
CSS属性 border-spacing/border-collapse
-
border-spacing用于设置单元格之间的水平、垂直间距,比如:
border-spacing: 10px 20px;
-
border-collapse: collapse;
:合并单元格的边框
表单
-
常用元素
1. form: 表单,一般情况下其他表单相关的元素都是它的后代元素,意思就是说其他表单元素应该放到form元素内包裹 2. input:单行文本输入框、单选框、复选框、按钮等元素 3. textarea:多行文本框 4. select、option: 下拉选择框 5. button: 按钮 6. label: 表单元素的标题 7. fieldset: 表单元素组 8. legend: fieldset的标题
-
为何其他表单要用form包裹?
- 一堆表单需要用一个元素包裹,form比较合适
- reset操作,只针对当前form内的元素有效
- submit操作,只针对当前form内的元素
input常用属性
-
type:input的类型
text:文本输入框(明文输入) password:文本输入框(密文输入) radio: 单选框 checkbox: 复选框 button: 按钮 reset:重置 submit:提交表单数据给服务器 file:文件上传 hidden:隐藏域
- maxlength: 允许输入的最大字数
- placeholder:占位文字
- readonly:只读,不允许编辑
- disabled:禁用,颜色变灰,禁止使用
- checked:默认被选中
- 只有type为radio或checkbox时可用
- autofocus:当页面加载时,自动聚焦
- name:名字
- 在提交数据给服务器时,可用于区分数据类型,就是传参字段名称
- value:取值
- 由于input是单标签,因此通过value设置内容
- form:设置所属的form元素(填写form元素的id)
- 一旦使用了此属性,input元素即使不写在form元素内部,它的数据也能够提交给服务器
注意:
- reset只针对放到当前form内的元素才有效
- submit:只提交当前form的表单数据 而且 只提交表单设置name值的数据
- 表单name属性设置的值由服务器开发人员决定
- 单选框radio、多选框checkbox除了要设置字段名称name外,还需要设置value值,因为多选的内容代表什么需要说明,value值也由服务器开发人员决定
- 单选框如何实现单选功能:n个单选框的name设置成一样即可
- input的value属性值总结
- 设置按钮的内容文字
- 设置radio、checkbox被选中时,发送给服务器的值
- 设置文本输入框的默认值
- readonly:不需要设置属性值,布尔属性
- 去除input的tab键选中效果
- 将input的tabindex属性设置为-1
布尔属性
- 布尔属性可以没有属性值,写上属性名就代表使用这个属性
- 常见的布尔属性有disabled、checked、readonly、multiple、autofocus、selected
-
如果要给布尔属性设值,值就是属性名本身
<input type="text" readonly disabled> <input type="radio" checked>
隐藏域(type=hidden)
- 隐藏域不会显示到网页上面,但是提交表单数据的时候,它的name和value也会被提交给服务器
- 如果有些发送给服务器的数据,是不需要用户输入的,或者不希望在界面上显示出来,可以使用隐藏域
- 就是说想附加传一些参数,比如我们输入关键字搜索一些东西的时候,?后面拼接的参数不仅仅关键字一个,还有附加的一些其他参数,不是我们手动输入的。
-
举例:
<!-- 隐藏域 --> <form action="https://www.baidu.com/"> <input type="text" name="phone"> <!-- 隐藏域,默认附加传参,偷偷传入密码 --> <input type="hidden" name="pwd" value="1"> <button type="submit">提交</button> </form>
form的常用属性
- action:
- 用于提交表单数据的url,即网络请求的地址
- method
- 请求方法(get和post),默认是get
- target:
- 在什么地方打开url(参考a元素的target)
- enctype
- 规定了在向服务器发送表单数据之前如何对数据进行编码
- 取值3种:
application/x-www-form-urlencoded
:默认的编码方式multipart/form-data
:文件上传时必须传这个值,并且method必须为posttext/plain
:普通文本传输
- accept-charset:规定表单提交时使用的字符编码
get和post
- 提交表单数据时,浏览器发送的事http请求,有2种请求方法可以选择
- get
- 在请求URL后面以?的形式跟上发给服务器的参数,多个参数之间用&隔开,比如
https://www.baidu.com/?phone=112&pwd=sss&code=345
- 由于浏览器和服务器对URL的长度有限制,因此在URL后面附带的参数是有限制的,通常不超过1KB
- 在请求URL后面以?的形式跟上发给服务器的参数,多个参数之间用&隔开,比如
- post
- 发送给服务器的参数全部放在请求体中
- 理论上来讲,post传递的数据量没有限制(具体还得看服务器的处理能力)
- get
- 浏览器如何查看请求过程、结果
- 打开检查工具->Network
- Header:请求头、响应头内容
- Response:服务器响应结果
- 可以发现post的请求参数放在了请求体中(form data)
label元素
- label 元素一般跟input、textarea配合使用,用来表示input、textarea的标题
- label可以跟某个input、textareat绑定,点击label就可以激活(聚焦)对应的input、textarea
- input、textarea必须设置id属性
- label通过for属性值设置为input、textareat的id属性值,来绑定input、textarea
- 写法:
-
写法1:
<!-- label要绑定的那个input必须加id属性,用for属性绑定 --> <label for="phone">手机:</label> <!-- name:提交服务器参数字段 --> <input id="phone" type="text" name="phone"><br>
-
写法2:
<!-- label要绑定的那个input必须加id属性,用for属性绑定 --> <label for="phone"> 手机: <!-- name:提交服务器参数字段 --> <input id="phone" type="text" name="phone"><br> </label>
-
按钮
- 普通按钮(type=button):使用value属性设置按钮文字
- 重置按钮(type=reset):重置它所属form的所有表单元素(包括input、textarea、select)
- 提交按钮(type= submit):提交它所属form的所有表单数据给服务器(包括input、textarea、select)
- 默认情况下,敲回车键(enter)会自动提交表单数据给服务器
- 如需禁止此行为,需要编写相应的JavaScript代码
textarea
- textarea的常用属性
- cols行数
- rows列数
- 注意:通常不通过cols、rows来控制宽高,而是通过css的width、height来设置宽高
- 缩放的css设置
- 禁止缩放: resize:none
- 水平缩放: resize:horizontal
- 垂直缩放: resize:vertical
- 水平垂直缩放:resize:both
select和option
- option是select的子元素,一个option代表一个选项
- select常用属性(不常用)
- multiple:可以多选
- size:显示多少项
- option的常用属性
- selected:默认被选中
fieldset和legend
- 作用:将一块内容用一个框框起来,并设置标题