1.概述 HTML 是网页使用的语言,定义了网页的结构和内容。浏览器访问网站,其实就是从服务器下载 HTML 代码,然后渲染出网页。
HTML 的全名是“超文本标记语言”(HyperText Markup Language),上个世纪90年代由欧洲核子研究中心的物理学家蒂姆·伯纳斯-李(Tim Berners-Lee)发明。 它的最大特点就是支持超链接,点击链接就可以跳转到其他网页,从而构成了整个互联网。
1999年,HTML 4.01 版发布,成为广泛接受的 HTML 标准。 2014年,HTML 5 发布,这是目前正在使用的版本。
浏览器的网页开发,涉及三种技术:HTML、CSS 和 JavaScript。 ① HTML 语言定义网页的结构和内容; ② CSS 样式表定义网页的样式; ③ JavaScript 语言定义网页与用户的互动行为。 HTML 语言是网页开发的基础,CSS 和 JavaScript 都是基于 HTML 才能生效,即使没有这两者,HTML 本身也能使用,可以完成基本的内容展示。 本文章只介绍 HTML 语言。
下面就是一个简单网页的 HTML 源码。
网页标题Hello World
上面这段代码,可以保存成文件hello.html。浏览器打开这个本地文件,就能看到文字“Hello World”。浏览器右键菜单的“查看源码”(View page source),可以展示当前网页的 HTML 源码。
2.网页的基本概念 2.1标签 网页的 HTML 代码由许许多多不同的标签(tag)构成。学习 HTML 语言,就是学习各种标签的用法。
下面就是标签的一个例子。
网页标题 上面代码中,和就是一对标签。标签用来告诉浏览器,如何处理这段代码。标签的内容就是浏览器所要渲染的、展示在网页上的内容。
标签放在一对尖括号里面(比如),大多数标签都是成对出现的,分成开始标签和结束标签,结束标签在标签名之前加斜杠(比如)。但是,也有一些标签不是成对使用,而是只有开始标签,没有结束标签,比如上一节示例的标签。 上面代码中,标签就没有结束标签。
这种单独使用的标签,通常是因为标签本身就足够完成功能了,不需要标签之间的内容。实际应用中,它们主要用来提示浏览器,做一些特别处理。
标签可以嵌套。
hello world
标签。
嵌套时,必须保证正确的闭合顺序,不能跨层嵌套,否则会出现意想不到的渲染结果。
hello world
HTML 标签名是大小写不敏感,比如和是同一个标签。不过,一般习惯都是使用小写。
另外,HTML 语言忽略缩进和换行。下面几种写法的渲染结果是一样的。
网页标题 网页标题 网页 标题 进一步说,整个网页的 HTML 代码完全可以写成一行,浏览器照样解析,结果完全一样。所以,正式发布网页之前,开发者有时会把源码压缩成一行,以减少传输的字节数。各种网页的样式效果,比如内容的缩进和换行,主要靠 CSS 来实现。
2.2元素 浏览器渲染网页时,会把 HTML 源码解析成一个标签树,每个标签都是树的一个节点(node)。这种节点就称为网页元素(element)。所以,“标签”和“元素”基本上是同义词,只是使用的场合不一样:标签是从源码角度来看,元素是从编程角度来看,比如
标签对应网页的p元素。
嵌套的标签就构成了网页元素的层级关系。
hello world
2.3块级元素,行内元素
所有元素可以分成两大类:块级元素(block)和行内元素(inline)。
块级元素默认占据一个独立的区域,在网页上会自动另起一行,占据 100% 的宽度。
hello
world
上面代码中,p元素是块级元素,因此浏览器会将内容分成两行显示。行内元素默认与其他元素在同一行,不产生换行。比如,span就是行内元素,通常用来为某些文字指定特别的样式。 hello world 上面代码中,span元素是行内元素,因此浏览器会将两行内容放在一行显示。
2.4 属性
属性(attribute)是标签的额外信息,使用空格与标签名和其他属性分隔。
上面代码中,标签有两个属性:src和width。
属性可以用等号指定属性值,比如上例的demo.jpg就是src的属性值。属性值一般放在双引号里面,这不是必需的,但推荐总是使用双引号。
注意,属性名是大小写不敏感的,onclick和onClick是同一个属性。
HTML 提供大量属性,用来定制标签的行为,详细介绍请看《元素的属性》一章。 3. 网页的基本标签 符合 HTML 语法标准的网页,应该满足下面的基本结构。
不管多么复杂的网页,都是从上面这个基本结构衍生出来的。前面说过,HTML 代码的缩进和换行,对于浏览器不产生作用。所以,上面的代码完全可以写成一行,渲染结果不变。上面这样分行写,只是为了提高可读性。