整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

网页基本知识

浏览器访问网站时,页面各不相同,你有没有想过它为何会呈现这个样子呢?本节中,我们就来了解一下网页的组成、结构和节点等内容。

网页的组成

网页可以分为三大部分 —— HTML、CSS 和 JavaScript。如果把网页比作一个人的话,HTML 相当于骨架,JavaScript 相当于肌肉,CSS 相当于皮肤,三者结合起来才能形成一个完善的网页。下面我们分别来介绍一下这三部分的功能。

(1)HTML

HTML,其英文叫做 HyperText Markup Language,中文翻译叫做超文本标记语言,但我们通常不会用中文翻译来称呼它,一般就叫 HTML。

HTML 是用来描述网页的一种语言,网页包括文字、按钮、图片和视频等各种复杂的元素,其基础架构就是 HTML。不同类型的元素通过不同类型的标签来表示,如图片用 img 标签表示,视频用 video 标签表示,段落用 p 标签表示,它们之间的布局又常通过布局标签 div 嵌套组合而成,各种标签通过不同的排列和嵌套才形成了网页的框架。

那 HTML 长什么样子呢?我们可以随意打开一个网站,比如淘宝 https://www.taobao.com,然后右键菜单点击“检查元素”或者按 F12 快捷键,即可打开浏览器开发者工具,切换到 Elements 面板,这时候就可以看到这里呈现的就是淘宝网对应的 HTML,它包含了一系列标签,浏览器解析这些标签后,便会在网页中渲染成一个个的节点,这便形成了我们平常看到的网页。比如这里可以看到一个输入框就对应一个 input 标签,可以用于输入文字。

不同的标签对应着不同的功能,这些标签定义的节点相互嵌套和组合形成了复杂的层次关系,就形成了网页的架构。

(2)CSS

HTML 定义了网页的结构,但是只有 HTML 页面的布局并不美观,可能只是简单的节点元素的排列。为了让网页看起来更好看一些,这里借助了 CSS。

CSS,全称叫作 Cascading Style Sheets,即层叠样式表。“层叠” 是指当在 HTML 中引用了数个样式文件,并且样式发生冲突时,浏览器能依据层叠顺序处理。“样式” 指网页中文字大小、颜色、元素间距、排列等格式。CSS 是目前唯一的网页页面排版样式标准,有了它的帮助,页面才会变得更为美观。

在上图中,Styles 面板呈现的就是一系列 CSS 样式,比如摘抄一段 CSS,内容如下:

#head_wrapper.s-ps-islite .s-p-top {
  position: absolute;
  bottom: 40px;
  width: 100%;
  height: 181px;
}

这就是一个 CSS 样式。大括号前面是一个 CSS 选择器。此选择器的意思是首先选中 id 为 head_wrapper 且 class 为 s-ps-islite 的节点,然后再选中其内部的 class 为 s-p-top 的节点。大括号内部写的就是一条条样式规则,例如 position 指定了这个节点的布局方式为绝对布局,bottom 指定节点的下边距为 40 像素,width 指定了宽度为 100%,表示占满父节点,height 则指定了节点的高度。也就是说,我们将位置、宽度、高度等样式配置统一写成这样的形式,然后用大括号括起来,接着在开头再加上 CSS 选择器,这就代表这个样式对 CSS 选择器选中的节点生效,节点就会根据此样式来展示了。

在网页中,一般会统一定义整个网页的样式规则,并写入 CSS 文件中(其后缀为 css)。在 HTML 中,只需要用 link 标签即可引入写好的 CSS 文件,这样整个页面就会变得美观、优雅。

(3)JavaScript

JavaScript,简称 JS,是一种脚本语言。HTML 和 CSS 配合使用,提供给用户的只是一种静态信息,缺乏交互性。我们在网页里可能会看到一些交互和动画效果,如下载进度条、提示框、轮播图等,这通常就是 JavaScript 的功劳。它的出现使得用户与信息之间不只是一种浏览与显示的关系,而是实现了一种实时、动态、交互的页面功能。

JavaScript 通常也是以单独的文件形式加载的,后缀为 js,在 HTML 中通过 script 标签即可引入,例如:

<script src="jquery-2.1.0.js"></script>

综上所述,HTML 定义了网页的内容和结构,CSS 描述了网页的样式,JavaScript 定义了网页的行为。

2. 网页的结构

我们首先用例子来感受一下 HTML 的基本结构。新建一个文本文件,名称叫做 test.html,内容如下:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8" />
    <title>This is a Demo</title>
  </head>
  <body>
    <div id="container">
      <div class="wrapper">
        <h2 class="title">Hello World</h2>
        <p class="text">Hello, this is a paragraph.</p>
      </div>
    </div>
  </body>
</html>

这就是一个最简单的 HTML 实例。开头用 DOCTYPE 定义了文档类型,其次最外层是 html 标签,最后还有对应的结束标签来表示闭合,其内部是 head 标签和 body 标签,分别代表网页头和网页体,它们也需要结束标签。head 标签内定义了一些页面的配置和引用,如:

<meta charset="UTF-8" />

它指定了网页的编码为 UTF-8。

title 标签则定义了网页的标题,会显示在网页的选项卡中,不会显示在正文中。body 标签内则是在网页正文中显示的内容。div 标签定义了网页中的区块,它的 id 是 container,这是一个非常常用的属性,且 id 的内容在网页中是唯一的,我们可以通过它来获取这个区块。然后在此区块内又有一个 div 标签,它的 class 为 wrapper,这也是一个非常常用的属性,经常与 CSS 配合使用来设定样式。然后此区块内部又有一个 h2 标签,这代表一个二级标题。另外,还有一个 p 标签,这代表一个段落。在这两者中直接写入相应的内容即可在网页中呈现出来,它们也有各自的 class 属性。

将代码保存后,双击该文件在浏览器中打开,可以看到如图所示的内容。

可以看到,选项卡上显示了 This is a Demo 字样,这是我们在 head 中的 title 里定义的文字。而网页正文是 body 标签内部定义的各个元素生成的,可以看到这里显示了二级标题和段落。

这个实例便是网页的一般结构。一个网页的标准形式是 html 标签内嵌套 head 和 body 标签,head 内定义网页的配置和引用,body 内定义网页的正文。

3 节点树及节点间的关系

在 HTML 中,所有标签定义的内容都是节点,它们构成了一个 HTML 节点树,也称之为 HTML DOM 树。

我们先看下什么是 DOM。DOM 是 W3C(万维网联盟)的标准,其英文全称 Document Object Model,即文档对象模型。它定义了访问 HTML 和 XML 文档的标准。根据 W3C 的 HTML DOM 标准,HTML 文档中的所有内容都是节点。

  • 整个网站文档是一个文档节点。
  • 每个 html 标签对应一个根元素节点,即上例中的 html 标签,这属于一个跟元素节点。
  • 节点内的文本是文本节点,比如 a 节点代表一个超链接,它内部的文本也被认为是一个文本节点。
  • 每个节点的属性是属性节点,比如 a 节点有一个 href 属性,它就是一个属性节点。
  • 注释是注释节点,在 HTML 中有特殊的语法会被解析为注释,但其也会对应一个节点。

所以,HTML DOM 将 HTML 文档视作树结构,这种结构被称为节点树,如图所示:

通过 HTML DOM,树中的所有节点均可通过 JavaScript 访问,所有 HTML 节点元素均可被修改,也可以被创建或删除。

节点树中的节点彼此拥有层级关系。我们常用父(parent)、子(child)和兄弟(sibling)等术语描述这些关系。父节点拥有子节点,同级的子节点被称为兄弟节点。

在节点树中,顶端节点称为根(root)。除了根节点之外,每个节点都有父节点,同时可拥有任意数量的子节点或兄弟节点。图展示了节点树以及节点之间的关系。

4. 选择器

我们知道网页由一个个节点组成,CSS 选择器会根据不同的节点设置不同的样式规则,那么怎样来定位节点呢?

在 CSS 中,我们使用 CSS 选择器来定位节点。例如,上例中 div 节点的 id 为 container,那么就可以表示为 #container,其中 # 开头代表选择 id,其后紧跟 id 的名称。另外,如果我们想选择 class 为 wrapper 的节点,便可以使用.wrapper,这里以点(.)开头代表选择 class,其后紧跟 class 的名称。另外,还有一种选择方式,那就是根据标签名筛选,例如想选择二级标题,直接用 h2 即可。这是最常用的 3 种表示,分别是根据 id、class、标签名筛选,请牢记它们的写法。

另外,CSS 选择器还支持嵌套选择,各个选择器之间加上空格分隔开便可以代表嵌套关系,如 #container .wrapper p 则代表先选择 id 为 container 的节点,然后选中其内部的 class 为 wrapper 的节点,然后再进一步选中其内部的 p 节点。另外,如果不加空格,则代表并列关系,如 div#container .wrapper p.text 代表先选择 id 为 container 的 div 节点,然后选中其内部的 class 为 wrapper 的节点,再进一步选中其内部的 class 为 text 的 p 节点。这就是 CSS 选择器,其筛选功能还是非常强大的。

我们可以在浏览器中测试 CSS 选择器的效果,依然还是打开浏览器的开发者工具,然后按快捷键 Ctrl + F(如果你用的是 Mac,则是 Command + F),这时候在左下角便会出现一个搜索框,如图所示。

这时候我们输入 .title 就是选中了 class 为 title 的节点,这时候该节点就会被选中并在网页中高亮显示,如图所示:

输入 div#container .wrapper p.text 就逐层选中了 id 为 container 中 class 为 wrapper 节点中的 p 节点,如图所示:

另外,CSS 选择器还有一些其他语法规则,具体如下表所示。

CSS 选择器的其他语法规则

选 择 器

例 子

例子描述

.class

.intro

选择 class="intro" 的所有节点

#id

#firstname

选择 id="firstname" 的所有节点

*

*

选择所有节点

element

p

选择所有 p 节点

element,element

div,p

选择所有 div 节点和所有 p 节点

element element

div p

选择 div 节点内部的所有 p 节点

element>element

div>p

选择父节点为 div 节点的所有 p 节点

element+element

div+p

选择紧接在 div 节点之后的所有 p 节点

[attribute]

[target]

选择带有 target 属性的所有节点

[attribute=value]

[target=blank]

选择 target="blank" 的所有节点

[attribute~=value]

[title~=flower]

选择 title 属性包含单词 flower 的所有节点

:link

a:link

选择所有未被访问的链接

:visited

a:visited

选择所有已被访问的链接

:active

a:active

选择活动链接

:hover

a:hover

选择鼠标指针位于其上的链接

:focus

input:focus

选择获得焦点的 input 节点

:first-letter

p:first-letter

选择每个 p 节点的首字母

:first-line

p:first-line

选择每个 p 节点的首行

:first-child

p:first-child

选择属于父节点的第一个子节点的所有 p 节点

:before

p:before

在每个 p 节点的内容之前插入内容

:after

p:after

在每个 p 节点的内容之后插入内容

:lang(language)

p:lang

选择带有以 it 开头的 lang 属性值的所有 p 节点

element1~element2

p~ul

选择前面有 p 节点的所有 ul 节点

[attribute^=value]

a[src^="https"]

选择其 src 属性值以 https 开头的所有 a 节点

[attribute$=value]

a[src$=".pdf"]

选择其 src 属性以 .pdf 结尾的所有 a 节点

[attribute*=value]

a[src*="abc"]

选择其 src 属性中包含 abc 子串的所有 a 节点

:first-of-type

p:first-of-type

选择属于其父节点的首个 p 节点的所有 p 节点

:last-of-type

p:last-of-type

选择属于其父节点的最后一个 p 节点的所有 p 节点

:only-of-type

p:only-of-type

选择属于其父节点唯一的 p 节点的所有 p 节点

:only-child

p:only-child

选择属于其父节点的唯一子节点的所有 p 节点

:nth-child(n)

p:nth-child

选择属于其父节点的第二个子节点的所有 p 节点

:nth-last-child(n)

p:nth-last-child

同上,从最后一个子节点开始计数

:nth-of-type(n)

p:nth-of-type

选择属于其父节点第二个 p 节点的所有 p 节点

:nth-last-of-type(n)

p:nth-last-of-type

同上,但是从最后一个子节点开始计数

:last-child

p:last-child

选择属于其父节点最后一个子节点的所有 p 节点

:root

:root

选择文档的根节点

:empty

p:empty

选择没有子节点的所有 p 节点(包括文本节点)

:target

#news:target

选择当前活动的 #news 节点

:enabled

input:enabled

选择每个启用的 input 节点

:disabled

input:disabled

选择每个禁用的 input 节点

:checked

input:checked

选择每个被选中的 input 节点

:not(selector)

:not

选择非 p 节点的所有节点

::selection

::selection

选择被用户选取的节点部分

另外,还有一种比较常用的选择器 XPath,这种选择方式后面会详细介绍。

5. 总结

本节介绍了网页的结构和节点间的关系,了解了这些内容,我们才有更加清晰的思路去解析和提取网页内容。

本节参考来源:

  • 文档 - HTML - MDN Web Docs:https://developer.mozilla.org/en-US/docs/Web/HTML
  • 文档 - JavaScript - MDN Web Docs:https://developer.mozilla.org/en-US/docs/Web/JavaScript
  • 文档 - HTML DOM 节点 - W3School:http://www.w3school.com.cn/htmldom/dom_nodes.asp
  • 文档 - HTML - 维基百科:https://en.wikipedia.org/wiki/HTML
  • 文档 - CSS Selector - W3School:https://www.w3schools.com/cssref/css_selectors.asp

语言

描述

结构

HTML

网页元素和内容

表现

CSS

网页元素页面样式

行为

JavaScript

网页交互

1 HTML概念

HTML,超文本标记语言(Hyper Text Markup Language),是一门描述性语言。标记,标签,元素,叫法不同,意思相同。HTML超文本标记语言主要通过标签的方式,对网页页面的文本、图片、音频、视频等内容进行描述。学习HTML,就是学习各种标签,来搭建网页的结构。

2 HTML结构

结构:!DOCTYPE

说明:作用是告诉浏览器用哪个文档规范来解析文档

标签:html

说明:用于搭建HTML网页文档结构和网页布局


​标签:head

说明:用于定义HTML网页文档的头部,它是所有头部元素的容器​


​标签:body

说明:用来定义HTML网页文档的主体区域​


​标签:meta

说明:用来描述HTML网页文档的属性​


​标签:title

说明:用来放到HTML网页文档的头部,是搜索引擎首要抓取的目标代码​


​2.1 标签

标签,也叫作标记,是由一对尖括号<>,里面包含单词组成

2.1.1 双标签

<html></html>

2.1.2 单标签

<br>

2.1.3 标签关系

嵌套关系

<html>
    <head>
    </head>
</html>

并列关系

<head>
</head>
<body>    
</body>

3 注释

注释用来帮助程序员记录程序设计方法,辅助程序阅读

4 head标签

4.1 title标签

双标签,定义网页的标题

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>百度一下,你就知道了</title>
</head>
<body>

</body>
</html>

4.2 meta标签

是单标签,用来描述HTML网页文档的属性

4.2.1 name属性

属性值

说明

keywords

网页关键字,多个逗号隔开

description

网页描述

author

作者

copyright

版权信息

<!DOCTYPE html>
<html lang="en">
<head>
    <!-- 网页关键字 -->
    <meta name="keywords" content="html,css,javascript">
    <!-- 网页描述 -->
    <meta name="description" content="基础前端知识">
    <!-- 网页作者 -->
    <meta name="author" content="buddha">
    <!-- 网页版权信息 -->
    <meta name="copyright" content="版权所有,翻版必究">
</head>
<body>

</body>
</html>

标签属性:

1、标签的属性写在开始标签内部

2、标签名与属性之间要有空格隔开

3、一个标签可以同时存在多个属性

4、属性之间以空格隔开

5、属性没有先后顺序之分

4.2.2 http-equiv属性

属性值

说明

Content-Type

定义网页所使用编码

refresh

定义网页自动刷新跳转

<!DOCTYPE html>
<html lang="en">
<head>
    <!-- 设置网页编码完整写法 -->
    <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
    <!-- 设置网页编码简写写法 -->
    <meta charset="UTF-8">
    <!-- 网页打开3秒后跳去百度 -->
    <meta http-equiv="refresh" content="3;url=https://www.baidu.com">
</head>
<body>

</body>
</html>

4.3 style标签

是双标签,用来定义标签的css样式

<!DOCTYPE html>
<html lang="en">
<head>
    <style type="text/css">
        /* css内联样式写这里 */
    </style>
</head>
<body>

</body>
</html>

4.4 link标签

是单标签,是用来引入外部css样式文件

<link rel="stylesheet" href="css/index.css" type="text/css">

4.5 script标签

是双标签,是用来写JavaScript代码的地方

<!DOCTYPE html>
<html lang="en">
<head>
    <script>
        /* 这里写JavaScript代码 */
    </script>

</head>
<body>

</body>
</html>

4.6 base标签

是单标签,是用来设置整个网页的基础路径。

<!DOCTYPE html>
<html lang="en">
<head>
    <base href="https://pic.rmb.bdstatic.com">

</head>
<body>
    <img src="bjh/news/e7fb4c2be6a2e439ff7e3197fa205d8f1336.gif">
</body>
</html>

开发中很少用到,有人使用知道就行

上面所述标签是放在head标签里的,接下来接触的标签都是放在body标签内的

5 文本标签

5.1 标题标签

是双标签,h是header的缩写

<h1>h1标签:一级标题</h1>
<h2>h2标签:二级标题</h2>
<h3>h3标签:三级标题</h3>
<h4>h4标签:四级标题</h4>
<h5>h5标签:五级标题</h5>
<h6>h6标签:六级标题</h6>

特点:

1、字体加粗

2、独占一行

3、从h1到h6,字体逐渐减小

4、使用<h>标签的主要意义是告诉搜索引擎这是一段文字的标题

5、<h1>在一个页面最多只能有一个,不要用多个

5.2 段落标签

是双标签,p是paragraph的缩写

<p>这是一段文字</p>
<p>这是一段文字</p>
<p>这是一段文字</p>

特点:

1、独占一行

2、段落与段落之间,存在间隙

5.3 换行标签

是单标签,br是break的缩写

<p>这是一段<br>文字</p>

特点:

1、强制换行

2、单标签

5.4 水平线标签

是单标签,hr是horizon地平线的缩写

<p>这是一段文字</p>
<hr>
<p>这是一段文字</p>

特点:

1、在页面中显示一条水平线

2、单标签

6 文本格式化标签

标签1

标签2

说明

b

strong

加粗

u

ins

下划线

i

em

倾斜

s

del

删除线

<b>这是一段文字</b>
<strong>这是一段文字</strong>
<br>
<u>这是一段文字</u>
<ins>这是一段文字</ins>
<br>
<i>这是一段文字</i>
<em>这是一段文字</em>
<br>
<s>这是一段文字</s>
<del>这是一段文字</del>

特点:

1、不会独占一行

2、推荐使用标签2所在列标签

6.1 上标标签

sup是superscripted这个单词的缩写

<!DOCTYPE html>
<html lang="en">
<head>
</head>
<body>
    a<sup>2</sup>
</body>
</html>

6.2 下标标签

sub是subscripted这个单词的缩写

<!DOCTYPE html>
<html lang="en">
<head>
</head>
<body>
    H<sub>2</sub>O
</body>
</html>

6.3 字符实体

在网页中展示特殊符号效果时,需要使用字符实体替代

显示结果

描述

实体名称


空格

<

小于号

<

>

大于号

>

&

&

"

双引号

"

x

乘号

×

÷

除号

÷

-

长破折号

|

竖线

|

左单引号

右单引号

©

版权符

©

®

注册商标

®

商标

°

°

7 媒体标签

7.1 图片标签

<img src="./001.jpg" alt="">

img标签常见属性:

属性名

说明

src

图片路径(绝对路径、相对路径)

alt

图片加载失败时,显示的文字

title

鼠标悬停时,显示的文字

width

图片宽度

height

图片高度

只设置宽或高,会自动等比缩放,宽高只需要数字,不需要'px'

<img src="./001.jpg" alt="图片加载失败" title="这是程序兔" width="200" height="200">

绝对路径:指目录下的绝对位置,比如从根目录开始的路径,或完整的网络地址

相对路径:从当前文件开始出发找目标文件的过程

7.2 音频标签

<audio src="music.mp3" controls autoplay loop></audio>

audio标签常见属性:

属性名

说明

src

音频路径

controls

显示播放控件

autoplay

自动播放

loop

循环播放

支持mp3、wav、ogg三种音频格式

7.3 视频标签

<video src="video.mp4" controls loop autoplay></video>

属性名

说明

src

视频路径

controls

显示播放控件

autoplay

自动播放

loop

循环播放

支持mp4、webm、ogg三种视频格式

7.4 超链接标签

超链接,是双标签,实现各个独立页面之间进行跳转,可以跳去站外也可以在站内之间跳转

<a href="链接地址">文本或图片</a>

站外跳转,采用绝对路径

<a href="http://www.baidu.com" target="_blank">百度</a>

站内跳转,采用相对路径

<!-- a页面 -->
<a href="b.html">跳去b页面</a>
<!-- b页面 -->
<p>b页面</p>

页面内跳转

<a href="#ms">美食</a>
<a href="#jd">景点</a>
<h3 id="ms">推荐美食</h3>
<!-- 省略n个br标签 -->
<br>
<h3 id="jd">推荐景点</h3>

属性名

说明

href

跳转链接

target

链接打开方式

target属性值

属性值

说明

_self

默认,原窗口打开链接

_blank

在新窗口打开链接

_parent

在父窗口打开链接

_top

在顶层窗口打开超链接

target属性值一般使用_self(默认)和_blank

8 列表标签

8.1 无序列表

<ul type="属性值">
    <li>列表项</li>
    <li>列表项</li>
    <li>列表项</li>
</ul>

解释:

1、ul,unordered lists,无序列表,li,list item,列表项

2、ul标签子标签只允许是li标签

3、li标签可以包含任意内容

type属性值

属性值

说明

disc

默认,实心圆

circle

空心圆

square

实心方型

<ul>
    <li>你</li>
    <li>我</li>
    <li>他</li>
</ul>

8.2 有序列表

<ol type="属性值">
    <li>列表项</li>
    <li>列表项</li>
    <li>列表项</li>
</ol>

解释:

1、ol,ordered lists,有序列表,li,list item,列表项

2、ol标签子标签只允许是li标签

3、li标签可以包含任意内容

type属性值

属性值

说明

1

默认,阿拉伯数字,1,2,3......

a

小写英文字母,a,b,c......

A

大写英文字母,A,B,C......

i

小写罗马数字,i,ii,iii......

I

大写罗马数字,I,II,III......

<ol>
    <li>你</li>
    <li>我</li>
    <li>他</li>
</ol>

8.3 自定义列表

<dl>
    <dt>名词</dt>
    <dd>描述</dd>
    ……
</dl>

解释:

1、dl,definition lists,自定义列表;dt,definition term,自定义列表组;dd,definition description,自定义列表描述

<dl>
    <dt>称呼</dt>
    <dd>你</dd>
    <dd>我</dd>
    <dd>他</dd>
</dl>

9 表格标签

9.1 表格基本结构

<table>
    <tr>
        <td>单元格1</td>
        <td>单元格2</td>
    </tr>
    <tr>
        <td>单元格3</td>
        <td>单元格4</td>
    </tr>
</table>

解释:

1、tr,table row,表格行;td,table data cell,表行单元格

<table>
    <tr>
        <td>1</td>
    </tr>
</table>

9.2 表格标签属性

属性名

属性值

描述

border

数字

边框宽度

width

数字

表格宽度

height

数字

表格高度

<table border="1" width="200" height="50">
    <tr>
        <td>1</td>
    </tr>
</table>

9.3 表格标题标签

<caption>标题内容</caption>,位于表格内第一行

<table border="1" width="200" height="50">
    <caption>数字</caption>
    <tr>
        <td>1</td>
    </tr>
</table>

9.4 表格表头单元格标签

<th></th>,th,table header cell,表头单元格

<table border="1" width="200" height="50">
    <caption>数字</caption>
    <tr>
        <th>序号</th>
    </tr>
    <tr>
        <td>1</td>
    </tr>
</table>

9.5 表格语义化结构标签

thead、tbody、tfoot

<table border="1" width="200" height="50">
    <caption>数字</caption>
    <thead>
        <tr>
            <th>序号</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>1</td>
        </tr>
    </tbody>
    <tfoot>
        <tr>
            <td>汇总</td>
        </tr>
    </tfoot>
</table>

9.6 合并单元格

属性名

属性值

说明

rowspan

合并单元格个数

合并行,单元格垂直合并

colspan

合并单元格个数

合并列,单元格水平合并

<td rowspan="跨越的行数"></td>
<td colspan="跨越的列数"></td>
<table border="1" width="200" height="50">
    <caption>数字</caption>
    <thead>
        <tr>
            <th>序号</th>
            <th>金额</th>
            <th>金额</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>1</td>
            <td rowspan="2">20</td>
            <td rowspan="2">20</td>
        </tr>
        <tr>
            <td>2</td>
        </tr>
    </tbody>
    <tfoot>
        <tr>
            <td>汇总</td>
            <td colspan="2">40</td>
        </tr>
    </tfoot>
</table>

10 表单标签

10.1 form标签

双标签,包裹其它表单标签

<form>
    // 表单
</form>

form标签的常用属性

属性

说明

name

表单名称

method

提交方式

action

提交地址

target

打开方式

enctype

编码方式

name属性

一个页面中,表单可能不止一个。name属性,用来区分不同的表单

<form name="myForm"></form>

method属性

用来指定表单数据使用哪种提交方式给后端

属性值

说明

get

get方式

post

post方式

<form method="get"></form>

action属性

用来指定表单数据提交到哪个地址

<!-- 比如提交到index.php地址 -->
<form action="index.php"></form>

target属性

该属性跟a标签的target属性一样,其属性值也是四个,一般情况只用到_blank属性值,默认也是这个值

<form target="_blank"></form>

enctype属性

属性值

说明

application/x-www-form-urlencoded

在发送前编码所有字符(默认)

multipart/form-data

不对字符编码,在使用包含文件上传控件的表单时,必须使用该值

text/plain

空格转换为 "+" 加号,但不对特殊字符编码

<form enctype="multipart/form-data"></form>

10.2 input标签

input是单标签

<input type="表单类型">

属性值

说明

text

单行文本框

password

密码文本框

radio

单选框

checkbox

多选框

button

普通按钮

submit

提交按钮

reset

重置按钮

file

文件上传

单行文本框常用属性

属性

说明

value

设置文本框的默认值

size

设置文本框的长度

maxlength

设置最多可输入字符

<form>
    <input type="text" value="默认值" size="长度" maxlength="可输入字符">
</form>
<form>
    <label>姓名:<input type="text" value="曹操" size="20" maxlength="10"></label>
</form>

密码文本框常用属性

密码文本框常用属性和单行文本框常用属性相同

<input type="password" value="默认值" size="长度" maxlength="可输入字符">
<form>
    <label>密码:<input type="password" value="12345678" size="20" maxlength="10"></label>
</form>

单选框

属性

说明

name

组名,同组单选框,组名要相同,必要属性

value

单选框选项取值,必要属性

checked

默认选中项,同组单选框,可以有一个默认选中项

<input type="radio" name="组名" value="取值" checked="checked">
<form>
    性别:
    <input type="radio" name="sex" value="男" checked="checked">男
    <input type="radio" name="sex" value="女">女
</form>

复选框

复选框和单选框的属性都相同,区别复选框可以多选

<form>
    爱好:
    <input type="checkbox" name="hobby" value="篮球" checked>篮球
    <input type="checkbox" name="hobby" value="足球" checked>足球
    <input type="checkbox" name="hobby" value="台球">台球
</form>

普通按钮

<input type="button" value="取值">
<form>
    <input type="button" value="普通按钮">
</form>
<button>普通按钮</button>

区别:

1、input是单标签,button是双标签

2、button标签的信息除了文本,还可以是图像、其它标签等

3、button有type属性,属性值可以是button、submit、reset等

提交按钮

<input type="submit" value="取值">
<form>
    <input type="submit" value="提交">
</form>

把对应表单数据提交给后端服务器

重置按钮

<input type="reset" value="取值">
<form>
    <input type="reset" value="重置">
</form>

点击重置后,所在form表单里所有内容被清空了

文件上传

<input type="file">
<form>
    <input type="file">
</form>

10.3 多行文本框

<textarea name="文本名称" cols="列数" rows="行数"></textarea>
<form>
    <textarea name="文本名称" cols="1" rows="2"></textarea>
</form>

10.4 下拉列表

<select>
    <option>选项内容</option>
    <option>选项内容</option>
</select>

下拉列表标签是为了节省页面空间

select标签属性

属性名

说明

name

数据提交后端所需字段

size

下拉选项显示个数

multiple

默认只允许选一个,选多个得加这个属性

disabled

所有下拉选项禁止选中

<form>
    <select name="age" size="4" multiple="multiple" disabled="disabled">
        <option>18岁以下</option>
        <option>18-28岁</option>
        <option>28-38岁</option>
        <option>38岁以上</option>
    </select>
</form>

option标签属性

属性名

说明

selected

默认选中

value

被选中,数据提交后端的值

disabled

该下拉选项禁止选中

<form>
    <select name="age" size="5">
        <option value="1">18岁以下</option>
        <option value="2" disabled="disabled">18-28岁</option>
        <option value="3" selected="selected">28-38岁</option>
        <option value="4">38岁以上</option>
    </select>
</form>

11 框架标签

<iframe src="URL" width="数值" height="数值"></iframe>

框架标签常用属性

属性名

说明

src

嵌入的文档地址

width

标签宽度

height

标签高度

<iframe src="https://www.bilibili.com" width="300" height="200"></iframe>

有些文档禁止被嵌入

12 标签类型

HTML标签分为三种,行内标签、块级标签和行内块级标签。

12.1 行内标签

特点:

1、在页面内只占据刚好能包裹自己内容的空间

2、没有宽高,内容多大就多大,行内标签不能嵌套块级标签(a标签除外)

3、行内标签设置宽高无效,可以对行高line-height进行设置

4、可以设置外边距margin和内边距padding,但只对左右边距有效果,上下无效

5、常见行内标签span、a、strong、ins、del、br等

span标签

双标签,行内标签,本身没有固定样式

<p>我是<span>中国人</span></p>

12.2 块级标签

特点:

1、独占一行

2、高度、宽度、外边距、内边距都可以设置生效

3、宽度默认是父级宽度的100%

4、是一个容器盒子,可以嵌套多层子级行内标签、块级标签,文本类块级标签除外

5、常见块级标签div、p、h1~h6、ol、ul、li等

div标签

双标签,块级标签,本身没有固定样式

<!-- 头部区域 -->
<div></div>
<!-- 内容区域 -->
<div></div>

12.3 行内块级标签

特点

1、在页面内只占据刚好能包裹自己内容的空间

2、高度、宽度、外边距、内边距都可以设置生效

3、常见块级标签img、input、td

12.4 标签类型转换

通过css样式display属性转换,这是css的内容

单标签

网页(程序)如果要和用户产生互动,则必须借助一定的中介,这个中介一般是:文本输入框、按钮、多选框、单选框。而表单则是这些中介和放置这些中介的空间(<form action=”” methon=””></form>)。

在网页中,这些文本输入框、按钮等等必须放置在由<form></form>这个标签所定义的空间中,否则没有实际意义。所以,由<form></form>标签所定义的空间就是表单存在的空间。


【各种输入类型】

  1. 文字输入框:每个表单之所以会有不同的类型,原因就在于type="表单类型"设定的不同而已,我们就先来看看第一个类型:文字输入列。文字输入列的形态就是type="text,其使用方法如下:

呈现结果

姓名:

原始码

<form action=http://www.baidu.com/nameproject.aspmethon=”post”>

姓名:<input type="text" name="name" size="20">

</form>

它有下列可设定之属性:

  • name="名称",是设定此一栏位的名称,程式中常会用到。
  • size="数值",是设定此一栏位显现的宽度。
  • value="预设内容",是设定此一栏位的预设内容。
  • align="对齐方式",是设定此一栏位的对齐方式,其值有:top(向上对齐)、middle(向中对齐)、bottom(向下对齐)、right(向右对齐)、left(向左对齐)、texttop(向文字顶部对齐)、baseline(向文字底部对齐)、absmiddle(绝对置中)、absbottom(绝对置下)等。
  • maxlength="数值",是设定此一栏位可设定输入的最大长度。


  1. 单选框:利用type="radio"就会产生单选核取表单,单选核取表单通常是好几个选项一起摆出来供使用者点选,一次只能从中选一个,故为单选核取表单。

呈现结果

性别:男 女

原始码

<form>

性别:

男 <input type="radio" name="sex" value="boy">

女 <input type="radio" name="sex" value="girl">

</form>

它有下列可设定之属性:

  • name="名称",是设定此一栏位的名称,程式中常会用到。
  • value="内容",是设定此一栏位的内容、值或是意义。
  • align="对齐方式",是设定此一栏位的对齐方式,其值有:top(向上对齐)、middle(向中对齐)、bottom(向下对齐)、right(向右对齐)、left(向左对齐)、texttop(向文字顶部对齐)、baseline(向文字底部对齐)、absmiddle(绝对置中)、absbottom(绝对置下)等。
  • checked,是设定此一栏位为预设选取值。


  1. 复选框:利用type=" checkbox "就会产生复选核取表单,复选核取表单通常是好几个选项一起摆出来供使用者点选,一次可以同时选好几个,故为复选核取表单。

呈现结果

喜好: 电影 看书

原始码

<form>

喜好:

<input type="checkbox" name="sex" value="movie">电影

<input type="checkbox" name="sex" value="book">看书

</form>

它有下列可设定之属性:

  • name="名称",是设定此一栏位的名称,程式中常会用到。
  • value="内容",是设定此一栏位的内容、值或是意义。
  • align="对齐方式",是设定此一栏位的对齐方式,其值有:top(向上对齐)、middle(向中对齐)、bottom(向下对齐)、right(向右对齐)、left(向左对齐)、texttop(向文字顶部对齐)、baseline(向文字底部对齐)、absmiddle(绝对置中)、absbottom(绝对置下)等。
  • checked,是设定此一栏位为预设选取值。


  1. 密码表单:利用type=" password "就会产生一个密码表单,密码表单和文字输入表单长得几乎一样,差别就在于密码表单在输入时全部会以星号来取代输入的文字,以防他人偷窥。

呈现结果

请输入密码:

原始码

<form>

请输入密码:<input type="password" name="input">

</form>

它有下列可设定之属性:

  • name="名称",是设定此一栏位的名称,程式中常会用到。
  • size="数值",是设定此一栏位显现的宽度。
  • value="预设内容",是设定此一栏位的预设内容,不过呈现出来仍是星号。
  • align="对齐方式",是设定此一栏位的对齐方式,其值有:top(向上对齐)、middle(向中对齐)、bottom(向下对齐)、right(向右对齐)、left(向左对齐)、texttop(向文字顶部对齐)、baseline(向文字底部对齐)、absmiddle(绝对置中)、absbottom(绝对置下)等。
  • maxlength="数值",是设定此一栏位可设定输入的最大长度。


  1. 送出按钮:通常我们表单填完之后,都会有一个送出按钮以及清除重写的按钮,分别是利用type=" submit "及type=" reset "来产生,相当的简单易用。

呈现结果

原始码

<form>

<input type="submit" value="送出资料">

<input type="reset" value="重新填写">

</form>

它有下列可设定之属性:

  • name="名称",是设定此一按钮的名称。
  • value="文字",是设定此一按钮上要呈现的文字,若是没有设定,浏览器也会自动替您加上“送出查询”、“重设”等字样。
  • align="对齐方式",是设定此一栏位的对齐方式,其值有:top(向上对齐)、middle(向中对齐)、bottom(向下对齐)、right(向右对齐)、left(向左对齐)、texttop(向文字顶部对齐)、baseline(向文字底部对齐)、absmiddle(绝对置中)、absbottom(绝对置下)等。


  1. 按钮元件:表单中或是java script常会用到按钮来作一些效果,因此,我们可以利用type=" button "来产生一个按钮,相当简单。

呈现结果

请按下按钮:

原始码

<form>

请按下按钮:<input type="button" name="ok" value="我同意">

</form>

它有下列可设定之属性:

  • name="名称",是设定此一按钮的名称。
  • value="文字",是设定此一按钮上要呈现的文字。
  • align="对齐方式",是设定此一栏位的对齐方式,其值有:top(向上对齐)、middle(向中对齐)、bottom(向下对齐)、right(向右对齐)、left(向左对齐)、texttop(向文字顶部对齐)、baseline(向文字底部对齐)、absmiddle(绝对置中)、absbottom(绝对置下)等。


  1. 隐藏栏位:表单中有时有些东西因为某些因素,不想让使用者看到,但因程式需要却又不得不存在,此时,我们就可以利用type=" hidden "来产生一个隐藏的栏位。

呈现结果

隐藏栏位:

原始码

<form>

隐藏栏位:<input type="hidden" name="nosee" value="看不到">

</form>

它有下列可设定之属性:

  • name="名称",是设定此一栏位的名称。
  • value="文字",是设定此一栏位的值、文字或意义。

【大量文字输入元件】

  1. 有时候我们会希望让使用者输入比较大量的文字,此时,文字输入列就显得不敷使用,因此我们就可以利用<textarea></textarea>来产生一个可以输入大量文字的元件,夹在两个标签中的文字会出现在框框中,可作为预设文字。

呈现结果

请输入您的意见:

原始码

<form>

请输入您的意见:<br>

<textarea name="talk" cols="20" rows="3"></textarea>

</form>

它有下列可设定之属性:

  • name="名称",是设定此一栏位的名称。
  • wrap="设定值",是设定此一栏位的换行模式。设定值有三种:off(输入文字不会自动换行)、virtual(输入文字在萤幕上会自动换行,不过若是使用者没有自行按下enter换行,送出资料时,也视为没有换行)、physical(输入文字会自动换行,送出资料时,会将萤幕上的自动换行,视为换行效果送出)。
  • cols="数值",是设定此一栏位的行数(横向字数)。
  • rows="数值",是设定此一栏位的列数(垂直字数)。


【下拉式选单】

  1. 下拉式选单令整个网页看起来有很专业的感觉,我们只要利用<select name="名称">便可以产生一个下拉式选单,另外,还需要配合<option>标签来产生选项,这样才算完整喔!

呈现结果

您喜欢看书吗?:

非常喜欢

还算喜欢

不太喜欢

非常讨厌

原始码

<form>

您喜欢看书吗?:

<select name="like">

<option value="非常喜欢">非常喜欢

<option value="还算喜欢">还算喜欢

<option value="不太喜欢">不太喜欢

<option value="非常讨厌">非常讨厌

</select>

</form>

它有下列可设定之属性:

  1. size="数值",是设定此一栏位的大小,预设值为1,若是您的选项有四个,然后您将size设成4,那么,下拉式选单便会变成选项方块,将四个选项一起呈现在方块中。

multiple,是设定此一栏位为复选,可以一次选好几个选项。

....................................................................

我的微信公众号:UI严选 —越努力,越幸运