HTML常用标签——列表与表单

156 阅读10分钟

表格是用来显示数据的,那么列表就是用来布局的

列表最大的特点就是:整齐、整洁、有序、它作为布局会更加自由和方便。

在实际开发中凡是遇到排列整齐的简洁内容,都可以使用列表来进行布局。

合理的使用列表布局可以有效提高 SEO。

根据使用情景不同,列表可以分为三大类:无序列表有序列表 和 自定义列表

标签名定义说明
<ul> </ul>无序标签里面只包含 li,没有顺序,使用较多,li 里面可以包含任何标签
<ol> </ol>有序标签里面只包含 li,有顺序,使用相对较少,li 里面可以包含任何标签
<dl> </dl>自定义标签里面只能包含 dt 和 dd,dt 和 dd 里面可以放任何标签,dd 一般作为对 dt 的细分描述

1 无序列表

<ul> 标签表示 HTML 页面中项目的无序列表,一般会以项目符号呈现列表项,而列表项使用 <li> 标签定义(开发中经常使用)。

无序列表的基本语法格式如下:

<ul>
    <li>列表项1</li>
    <li>列表项2</li>
    <li>列表项3</li>
    ...
</ul>
  • 无序列表的各个列表项之间没有顺序级别之分,是并列的
  • <ul> </ul> 中只能嵌套 <li> </li>,直接在 <ul> </ul> 标签中输入其他标签或者文字的做法是不被允许的,列表中的任何内容都应该放在 li 中
  • <li> 与 </li> 之间相当于一个容器,可以容纳所有的元素
  • 无序列表会带有自己的样式属性(比如圆点),但在实际开发中,我们会使用 CSS 来设置

附:去除 li 前符号的方法:style="list-style: none;"

2 有序列表

有序列表即为有序排列顺序的列表,其各个列表项会按照一定的顺序排列定义(开发中不太常用)。

在 HTML 标签中,<ol> 标签用于定义有序列表,列表排序以数字来显示,并且使用 <li> 标签来定义列表项。

有序列表的基本语法格式如下:

<ol>
    <li>列表项1</li>
    <li>列表项2</li>
    <li>列表项3</li>
    ...
</ol>
  • <ol> </ol> 中只能嵌套 <li> </li>,直接在 <ol> </ol> 标签中输入其他标签或者文字的做法是不被允许的
  • <li> 与 </li> 之间相当于一个容器,可以容纳所有的元素
  • 有序列表会带有自己样式属性(比如序号),但在实际使用时,我们会使用 CSS 来设置

附:去除 li 前符号的方法:style="list-style: none;"

3 自定义列表

自定义列表的使用场景:

自定义列表常用于对术语或名词进行解释、描述和展开,定义列表的列表项前没有任何项目符号(开发中常用)。

在 HTML 标签中,<dl> 标签用于定义描述列表(或定义列表),该标签会与 <dt>(定义项目/名字)和 <dd>(描述每一个项目/名字)一起使用。

其基本语法如下:

<dl>
    <dt>名词1</dt>
    <dd>名词1解释1</dd>
    <dd>名词1解释2</dd>
</dl>
  • <dl> </dl> 里面只包含 <dt><dd>
  • <dt> 和 <dd> 个数没有限制,经常是一个 <dt> 对应多个 <dd>

表单标签

1 为什么需要表单

使用表单的目的是收集用户信息。

在网页中,需要跟用户进行交互,收集用户资料,此时就需要表单。

2 表单的组成

在 HTML 中,一个完整的表单通常由 表单域表单控件(也称为表单元素)和 提示信息 3 个部分构成。

3 表单域

表单域是一个包含表单元素的区域。

在 HTML 标签中,<form> 标签用于定义表单域,以实现用户信息的收集和传递。

<form> 会把它范围内的表单元素信息提交给服务器。

<form action="url地址" method="提交方式" name="表单域名称">
    <!-- 各种表单元素控件 -->
</form>

常用属性:

属性名属性值作用
actionurl 地址用于指定接收并处理表单数据的服务器程序的 url 地址
methodget / post用于设置表单数据的提交方式,其取值为 get 或 post
name名称用于指定表单的名称,以区分同一个页面中的多个表单域

注意:对于 HTML 基础的学习来说,暂时不用考虑提交数据,只需写上 form 标签即可,后面学习服务端编程阶段会重新讲解。

4 表单控件(表单元素)

在表单域中可以定义各种表单元素,这些表单元素就是允许用户在表单中输入或者选择的内容控件。

(1)input表单元素

在英文单词中,input 是输入的意思,而在表单元素中 <input> 标签用于收集用户信息。

在 <input> 标签中,包含一个 type 属性,根据不同的 type 属性值,输入字段拥有很多种形式(可以是文本、字段、复选框、掩码后的文本控件、单选按钮、按钮等)。

<input type="属性值" />
  • <input /> 标签为单标签
  • type 属性设置不同的属性值用来指定不同的控件类型

type 属性的属性值及其描述如下:

属性值描述
button定义可点击按钮(多数情况下,用于通过 JavaScript 启动脚本)
checkbox定义复选框,即:多选框,在一组多选中,要求它们必须拥有相同的 name
file定义输入字段和 “浏览” 按钮,供文件上传
hidden定义隐藏的输入字段
image定义图像形式的提交按钮
password定义密码字段,该字段中的字符被掩码
radio定义单选按钮,在一组单选按钮中,要求它们必须拥有相同的 name
reset定义重置按钮,重置按钮会清除表单中的所有数据
submit定义提交按钮,提交按钮会把表单数据发送到服务器
text定义单行的输入字段,用户可在其中输入文本,默认宽度为 20 个字符

除 type 属性外,<input> 标签还有很多其他属性,其常用属性如下:

属性名属性值描述
name由用户自定义定义 input 元素的名称
value由用户自定义规定 input 元素的值,也就是提交到服务器的值
checkedchecked规定此 input 元素首次加载时应当被选中
maxlength正整数规定输入字段中的字符的最大长度
  • name 和 value 是每个表单元素都有的属性值,主要给后台人员使用
  • name 表单元素的名字,要求:单选按钮和复选框要有相同的 name 值
  • checked 属性主要针对于单选按钮和复选框,主要作用:打开页面时默认选中某个表单元素
  • maxlength 是用户可以在表单元素输入的最大字符数,一般很少使用

<1>、有些表单元素刚打开页面就须要默认显示几个文字怎么做?

答:可以给这些表单元素设置 value属性="值"

用户名:<iuput type="text" value="请输入用户名" />

<2>如何区别不同的表单元素?

答:name 属性:当前 input 表单的名字,后台可以通过这个 name 属性找到这个表单,页面中的表单很多,name 的主要作用就是用于区别不同的表单。

用户名:<input type="text" value="请输入用户名" name="username" />
  • name 属性后面的值是自定义的
  • radio(或者 checkbox)如果是一组,我们必须给他们命名相同的名字
<input type="radio" name="sex" />男
<input type="radio" name="sex" />女

<3>页面一打开就让某个单选或复选框是选中状态

答:**checked **:表示默认选中状态,用于单选按钮和复选按钮。

性 别:
<input type="radio" name="sex" value="男" checked="checked" />男
<input type="radio" name="sex" value="女" >女

label标签

<label> 标签为 input 元素定义标注(标签)。

<label> 标签用于绑定一个表单元素,当点击 <label> 标签内的文本时,浏览器就会自动将焦点(光标)转到或者选择对应的表单元素上,用来增加用户体验。

语法:

<label for="sex">
	男<input type="radio" name="sex" id="sex" />
</label>

核心:  <label> 标签的 for 属性应当与相关元素的 id 属性相同。

select表单元素

使用场景:在页面中,如果有多个选项让用户选择,并且想要节约页面空间时,我们可以使用 <select> 标签控件定义下拉列表。

语法:

<select>
    <option>选项1</option>
    <option>选项2</option>
    <option>选项3</option>
    ...
</select>
  • <select> 中至少包含一对 <option>
  • 在 <option> 中定义 selected="selected" 时,当前项即为默认选中项

每个 <option> 元素都应该有一个 value 属性,其中包含选择该选项时要提交给服务器的数据值。如果不包含 value 属性,则 value 默认为元素内包含的文本。可以在 <option> 元素上包含 selected 属性,以使其在页面首次加载时默认选中。

textarea表单元素

使用场景:当用户输入内容较多的情况下,我们就不能使用文本框表单了,此时我们可以使用 <textarea> 标签

在表单元素中,<textarea> 标签是用于定义多行文本输入的控件。

使用多行文本输入控件,可以输入更多的文字,该控件常用于留言板、评论。

语法:

<textarea rows="3" cols="20">
	文本内容
</textarea>
  • 通过 <textarea> 标签可以轻松地创建多行文本输入框
  • cols="每行中的字符数"rows="显示的行数",我们在实际开发中不会使用,都是用 CSS 来改变大小
  • 如果要禁止拉伸文本框大小,则:style="resize: none"

5 表单元素几个总结

(1)表单元素我们学习了三大组 input 输入表单元素select 下拉表单元素textarea 文本域表单元素

(2)这三组表单元素都应该包含在 form 表单域 里面,并且应该有 name 属性

<form>
    <input type="text" name="username">
    <select name="jiguan">
        <option>北京</option>
    </select>
    <textarea name="message"></textarea>
</form>

(3)有三个名字非常相似的标签:

  • 表单域 form 使用场景:提交区域内表单元素给后台服务器
  • 文件域 file 是 input type 属性值 使用场景:上传文件
  • 文本域 textarea 使用场景:可以输入多行文字,比如:留言板、网站介绍等……

表单中 name 属性的重要性:

name 属性用于对提交到服务器后的表单数据进行标识。注意:只有设置了 name 属性的表单元素才能在提交表单时传递它们的值。简单来说,name 就是提交到后台的索引,比如在复选框中都要设置成name="hobby" 说明几个复选框都在 ”爱好“ 下。

即:表单想要把数据提交到指定的位置,表单控件必须要有 name 属性。

综合案例:

form 表单中 method 的 get 和 post 区别:

method 方法规定如何发送表单数据(form-data)(表单数据会被发送到在 action 属性中规定的页面中)。

表单数据可被作为 URL 变量的形式来发送(method="get")或者作为 HTTP post 事务的形式来发送(method="post")。

关于 GET 的注释:

  • 将表单数据以名/值对的形式附加到 URL 中
  • URL 的长度是有限的(大约 3000 字符)
  • 绝不要使用 GET 来发送敏感数据!(在 URL 中是可见的,且浏览器会缓存 URL)
  • 对于用户希望加入浏览器书签的表单很有用(因为信息记录在 URL 中,直接保存 URL 即可)
  • GET 更适用于非安全数据,比如在 Google 中查询字符串

关于 POST 的注释:

  • 将表单数据附加到 HTTP 请求的 body 内(数据不显示在 URL 中)
  • 没有长度限制
  • 通过 POST 提交的表单不能加入书签
  • POST 数据也是不安全的,但起码不会明目张胆的直接把数据显示在地址栏 URL 上,且不会缓存数据

【GET案例】

<!doctype html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <form action="http://127.0.0.1:8080/" method="GET">
        姓名:<input type="text" name="name">
        <input type="submit">
    </form>
</body>

</html>

【POST案例】

<!doctype html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <form action="http://127.0.0.1:8080/" method="POST">
        姓名:<input type="text" name="name">
        <input type="submit">
    </form>
</body>

</html>