HTML详细教程

1、HTML 语言简介

1.1、概述

HTML 是网页使用的语言,定义了网页的结构和内容。浏览器访问网站,其实就是从服务器下载 HTML 代码,然后渲染出网页。

HTML 的全名是超文本标记语言(HyperText Markup Language),上个世纪 90 年代由欧洲核子研究中心的物理学家蒂姆·伯纳斯-李(Tim Berners-Lee)发明。它的最大特点就是支持超链接,可以跳转到其他网页,从而构成了整个互联网。1999 年,HTML 4.0.1 发布,成为广泛接受的 HTML 标准。2014 年,HTML 5 发布,这是目前正在使用的版本。

浏览器的网页开发,涉及三种技术:HTML、CSS 和 JavaScript。HTML 语言定义网页的结构和内容,CSS 样式表定义网页的样式,JavaScript 语言定义网页于用户的互动行为。

下面就是一个简单网页的 HTML 源码。



  
    
    网页标题
  
  
    

Hello World

说明:上面这段代码,可以保存成文件 hello.html。浏览器打开这个本地文件,就能看到文字“Hello World”

1.2、网页的基本概念
1.2.1、标签

HTML 代码由许许多多不同的标签(tag)构成。

网页标题

上面代码中,</code>和<code>就是一对标签。

标签用来告诉浏览器,如何处理这段代码。标签的内容就是浏览器要渲染的、展示在网页上的内容。

标签放在一对尖括号里面(比如</code>),大多数标签都是成对出现的,分成开始标签和结束标签,结束标签名之前加斜杠(比如<code>)。但是。也有一些标签不是成对使用的,而是只有开始标签,没有结束标签,比如标签。


上面代码中,标签就没有结束标签
这种单独使用的标签,通常是因为标签本身就足够完成功能了,不需要标签之间的内容。时机引用中,它们主要用来提示浏览器,做一些特别处理。

标签可以嵌套。

Hello World

上面代码中,

标签内部包含了一个

标签。

嵌套时,必须保证正确的闭合顺序,不能跨层嵌套,否则会出现意想不到的渲染结果。

Hello World

上面代码就是错误的嵌套,闭合顺序不正确。

标签名是大小写不敏感,比如</code>和<code><TITLE></code>是同一个标签。不过,一般习惯都是使用小写。</p> <p>另外,HTML 语言忽略缩进和换行。也就是说,小面的写法与一行的写法效果是一样的。</p> <pre><code><title> 网页标题

进一步说,整个网页的 HTML 代码完全可以写成一行,浏览器照样解析,结果完全一样。有时,正式发布网页之前,开发者会把源码压缩成一行,以减少传输的字节数。网页内容的缩进和换行,主要靠 CSS 样式来实现。

1.2.2、元素

浏览器渲染网页的时候,会把 HTML 源码解析成一个标签树,每个标签都是一个节点(node),成为网页元素(element)。所以,“标签”和“元素”基本上是同义词,只是使用的场合不一样:标签是源码角度来看,元素是从编程角度来看,比如

标签对应网页的p元素。

嵌套的标签就构成了网页元素的层级关系。

hello world

上面代码中,div元素内部包含了一个p元素。上层元素又称为“父元素”,下层元素又称为“子元素”,即divp的父元素,pdiv的子元素。

所有元素可以分成两大类:块级元素(block)和行内元素(inline)。块级元素默认占据一个独立的区域,在网页上会自动另起一行,占据 100% 的宽度。

hello

world

上面代码中,span元素是行内元素,因此浏览器会将两行内容放在一行显示。

1.2.3、属性

属性(attribute)是标签的额外信息,使用空格与标签名和其他属性分隔。


上面代码中,标签有两个属性:src 和 width。

属性可以用等号指定属性值,比如上例的 demo.jpg 就是 src 的属性值。属性值一般放在双引号里面,这不是必须的,但推荐总是使用双引号。

注意,属性名是大小写不敏感的,onclickonClick 是同一个属性。

HTML 提供了大量属性,用来定制标签的行为。

1.3、网页的基本标签

符合语法标准的网页,应该满足下面的基本结构。



  
    
    
  
  
  

不管多么复杂的网页,都是从上面这个基本结构衍生出来的。

注意,HTML 代码的缩进和换行,对于浏览器不产生作用。所以上面的代码完全可以写成一行,渲染结果不变。上面这样分行写,只是为了提高可读性。

下面介绍,这个基本结构的主要标签,它们构成网页的骨架。


网页的第一个标签通常是,表示文档类型,告诉浏览器如何解析网页。

一般来说,只要像下面这样,简单声明 doctype 为 html 即可。浏览器就会按照 HTML5 的规则处理网页。


有时,该标签采用完全大写的形式,以便于区别正常的 HTML 标签。因为 本质上不是标签,更像是一个处理指令。


html 标签

标签是网页的顶层容器,也称为根元素(root element),其他元素都是它的子元素。一个网页只能有一个标签。

该标签的 lang 属性,表示网页内容默认的语言。


上面代码表示,网页的语言是英语

head 标签

标签是一个容器标签,用于放置网页的元信息。它的内容不会出现在网页上,而是为网页渲染做准备。

的第一个子元素。如果网页不包含,浏览器会自动创建一个。

的子元素一般有下面七个。

  • :设置网页的元数据
  • :链接外部样式表
  • </code>: 设置网页标题</li> <li><code><style></code>:放置内嵌的样式表</li> <li><code><script></code>:引入脚本</li> <li><code><noscript></code>:浏览器不支持脚本时,所要显示的内容</li> <li><code><base></code>:设置网页内部相对 URL 的计算基准。</li> </ul> <p><strong>meta 标签</strong></p> <p><code><meta></code>标签用于设置或说明网页的元数据,必须放在<code><head></code>里面。一个<code><meta></code>标签就是一项元数据,网页可以有多个<code><meta></code></p> <p>一般来说,网页至少应该具有以下两个<code><meta></code>标签,而且必须在<code><head></code>的最前面。</p> <pre><code><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document
    1. charset 属性

    有一个 charset 属性,指定网页的编码方式,该属性非常重要。如果设置得不正确,浏览器可能无法正确解码,就会出现乱码。

    
    

    上面代码声明,网页为 utf-8 编码。虽然可以使用其他得编码方式,但几乎总是应该采用 UTF-8。注意,声明得编码方式,应该与网页实际得编码方式一致,即声明了 utf-8,网页就应该使用 UTF-8 编码保存。

    1. name 属性,content 属性

    的 name 属性表示元数据的名字,content 属性表示元数据的值。

    
      
      
      
    
    

    上面代码包含了三个元数据:description 是网页内容的描述,keywords 是网页内容的关键字,author 是网页作者。

    1. http-equiv 属性,content 属性

    http-equiv 属性用来覆盖 HTTP 回应的头信息字段,content 属性是该字段的内容。

    
    

    上面代码可以覆盖 HTTP 回应的 Content-Security-Policy 字段。

    title 标签

    </code>标签用于指定页面的标题,会显示在浏览器窗口的标题栏。</p> <pre><code><head> <title>网页标题

    搜索引擎根据这个标签,显示每个网页的标题。它对于网页在搜索引擎的排序,有很大的影响,应该精心安排,反应网页的主题。

    </code>标签的内部,不能再放置其他标签,只能放置无格式的纯文本。</p> <p><strong>body 标签</strong></p> <p><code><body></code>标签是一个容器标签,用于放置网页的主体内容。浏览器显示的页面内容,都是放置在它的内部。它是<code><html></code>的第二个子元素,紧跟在<code><head></code>后面。</p> <pre><code><!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <title>网页标题

    hello world

    1.4、空格和换行

    HTML 语言有自己的空格处理规则。标签内容的头部和尾部的空格,一律忽略不计。

    hello world

    上面代码中,hello 前面的空格和 world 后面的空格,浏览器一律忽略不计。

    标签内容里面的多个连续空格(包含制表符\t),会被浏览器合并成一个。

    hello world

    上面代码中,hello 与 world 之间有多个连续空格,浏览器会将它们合并成一个。网页渲染的结果是,hello 与 world 之间只有一个空格。

    浏览器还会将文本里面的换行符(\n)和回车符(\r),替换成空格。

    hello world

    上面代码中,hello 与 world 之间有多个换行,浏览器会将它们替换成空格,然后再将多个空格合并成一个。网页渲染的结果是,hello 与 world 之间有一个空格。

    这意味着,HTML 源码里面的换行,不会产生换行效果。

    1.5、注释

    HTML 代码可以包含注释,浏览器会自动忽略注释以 结尾,下面就是一个注释的例子。

    
    

    注释可以是多行的,并且内部的 HTML 都不再生效了。

    
    

    上面代码是一个注释的区块,内部的代码都是无效的,浏览器不会解析,更不会渲染它们。

    注释有助于理解代码的含义,复杂的代码块前面最好加上注释。

    2、URL 简介

    2.1、概述

    URL 是“统一资源定位符”(Uniform Resource Locator)的首字母缩写,中文译为“网址”,表示各种资源的互联网地址。下面就是一个典型的 URL。

    https://www.example.com/path/index.html
    

    所谓资源,可以简单理解成各种可以通过互联网访问的文件,比如网页、图像、音频、视频、JavaScript 脚本等等。只有知道了它们的 URL,才可能再互联网上获取它们。

    只要资源可以互联网访问,它就必然有对应的 URL。一个 URL 对应一个资源,但是同一个资源可能对应多个 URL。

    URL 是互联网的基础。互联网之所以“互联”,就是因为网页可以通过“链接”(link),包含其他 URL。用户只要点击,就可以从一个 URL 跳转到另一个 URL,前往不同的网站。

    2.2、网址的组成部分

    URL 由多个部分组成。为了讲解,下面是一个比较复杂的 URL。

    https://www.example.com:80/path/to/myfile.html?key1=value1&key2=value2#anchor
    

    我们看看,这个 URL 的各个部分

    2.2.1、协议

    协议(scheme)是浏览器请求服务器资源的方法,上例是 https://的部分,表示使用 HTTPS 协议。

    互联网支持多种协议,必须指明网址使用哪一种协议,默认是 HTTP 协议。也就是说,如果省略协议,直接再浏览器地址输入 www.example.com,那么浏览器默认会访问 http://www.example.com。HTTPS 是 HTTP 的加密版本,出于安全考虑,越来越多的网站使用这个协议。

    HTTP 和 HTTPS 的协议名称后面,紧跟着一个冒号和两个斜杠(/)。其他协议不一定如此,邮件地址协议 mailta: 的协议名后面只有一个冒号,比如 mailto:[email protected]

    2.2.2、主机

    主机(host)是资源所在的网站名或服务器的名字,又称为域名。上例的主机是 www.example.com。

    有些主机没有域名,只有 IP 地址,比如 192.168.31.3。这种情况常常出现在局域网。

    2.2.3、端口

    用一个域名下面可能同时包含多个网站,它们之间通过端口(port)区分。“端口”就是一个整数,可以简单理解成,访问者告诉服务器,想要访问哪一个网站。默认端口是 80,如果省略了这个参数,服务器就会返回 80 端口的网站。端口紧跟在域名后面,两者之间使用冒号分隔,比如 www.example.com:80。

    2.2.4、路径

    路径(path)是资源在网站的位置。比如,/path/index.html 这个路径,指向网站的 /path 子目录下面的网页文件 index.html。

    互联网的早期,路径是真实存在的物理位置。现在由于服务器可以模拟这些位置,所以路径只是虚拟位置。

    路径可能只包含目录,不包含文件名,比如 /foo/,甚至结尾的斜杠都可以省略。这时,服务器通常会默认跳转到该目录里面的 index.html 文件(即等同于请求 /foo/index.html),但也可能有其他的处理(比如列出目录里面的所有文件),这取决于服务器的设置。一般来说,访问www.example.com这个网址,很可能返回的是网页文件 www.example.com/index.html。

    2.2.5、查询参数

    查询参数(parameter)是提供给服务器的额外信息。参数的位置是在路径后面,两者之间使用 ? 分隔,上例是 ?key1=value1&key2=value2。

    查询阐述可以有一组或多组。每组参数都是键值对(key-value pair)的形式,同时具有键名(key)和键值(value),它们之间使用等号(=)连接。比如,key1=value 就是一个键值对,key1 是键名,value1 是键值。

    多个参数之间使用 & 连接,比如 key1 = value&key2=value2。

    2.2.6、锚点

    锚点(anchor)是网页内部的定位点,使用 # 加上锚点名称,放在网址的最后,比如 #anchor。浏览器加载页面以后,会自动滚动到锚点所在的位置。

    锚点名称通过网页元素的 id 属性命名。

    2.3、URL 字符

    URL 的各个组成部分,只能使用以下这些字符。

    • 26 个英文字母(包括大写和小写)
    • 10 个阿拉伯数字
    • 连词号(-
    • 句点(.
    • 下划线(-

    此外,还有 18 个字符属于 URL 的保留字符,只能在给定的位置出现。比如,查询参数的开头是问号(?),也就是说,问号只能出现查询参数的开头,出现在其他位置就是非法的,会导致网址解析错误。网址的其他部分如果要使用这些保留字符,必须使用它们的转义形式。

    URL 字符转义的方法是,在这些字符的十六进制 ASCII 码前面加上百分号(%)。下面是这 18 个字符及其转义形式。

    • !: %21
    • #: %23
    • $: %24
    • &: %26
    • ': %27
    • (: %28
    • ): %29
    • *: %2A
    • +: %2B
    • ,: %2C
    • /: %2F
    • :: %3A
    • ;: %3B
    • =: %3D
    • ?: %3F
    • @: %40
    • [: %5B
    • ]: %5D

    举例来说,有一个网页的 URL 是 foo?bar.html,即文件里面包含一个问好,那么需要写成 foo%3Fbar.html。

    URL 的合法字符,其实也可以采用这种转义方法,但是不建议使用。比如,字母 a 的十六进制 ASCII 码是 61,转义形式后就是 %61。因此,www.apple.com 又可以写成 www.%61pple.com,浏览器一样识别。

    值得注意的是,空格的转义形式是 %20。对于那些包含空格的文件名,这个转义是必须的。

    既不属于合法字符、也不属于保留字符的其他字符(比如汉字),理论上不需要手动转义,可以直接写在 URL 里面,比如 www.example.com/中国.html,浏览器会自动将它们转义,发给服务器。转义方法是使用这些字符的十六进制 UTF-8 编码,每两位算作一组,然后每组头部添加百分号(%)。

    举例来说,汉字的 UTF-8 十六进制编码是 e4b8ad,每两个字符一组,URL 转义后就为 %e4%b8%ad。也就是说,URL 里面凡是有汉字 的地方,都要写成 %e4%b8%ad。因此,访问 www.example.com/中国.html 这个网址,需要写成下面的样子。

    www.example.com/%e4%b8%ad%e5%9b%bd.html
    

    上面代码中,的转义形式是 %e4%b8%ad%e5%9b%bd

    2.4、绝对 URL 和相对 URL

    URL 分成两种:绝对 URL 和 相对 URL。

    绝对 URL 指的是,只靠 URL 本身就能确定资源的位置。这意味着,URL 必须带有资源的完整信息,包含协议、主机、路径等部分。前面的例子都是绝对 URL。

    相对 URL 指的是,URL 不包含资源位置的全部信息,必须结合当前网页的位置,才能定位资源。比如,当前网页的 URL 是 https://www.example.com/path/index.html,该网页上面有一个资源,URL 指向 a.html,这个就是相对 URL。因为只知道 a.html 与当前网址在同一个子目录下面,从而得到绝对 URL https://www.example.com/path/a.html。

    相对 URL 如果以斜杠(/)开头,就表示网站的根目录。否则,必须以当前目录为起点,推算资源的位置。比如,相对 URL /foo/bar.html表示网站根目录的子目录 foo,foo/bar.html 表示在当前目录的 foo 子目录。

    URL 还可以使用两个特殊简写,表示特定位置。

    • .:表示当前目录,比如 ./a.html(当前目录下的 a.html 文件)
    • ..:表示上级目录,比如 ../a.html(上级目录下的 a.html 文件)

    这两种简写可以多个连用,比如 …/…/ 表示上两级目录。

    绝对 URL 也可以使用这两个简写,比如 www.example.com/./index.hml 等同于 www.example.com/index.html,这时.相当于根目录的当前目录,即根目录本身。

    2.5、base

    标签指定网页内部的所有相对 URL 的计算基准。整张网页只能有一个 标签,而且只能放在 里面。它是单独使用的标签,没有闭合标签,下面是一个例子。

    
      
    
    

    标签的 href 属性给出计算的基准网址,target 属性给出如何打开链接。以知计算基准是 https://www.example.com/files/,那么相对 URL foo.html,就可以转成绝对 URL https://www.example.com/files/foo.html

    注意, 标签必须至少具有 href 属性或 target 属性之一。

    
    
    

    一旦设置了 ,就对整个网页都有效。如果要改变某个链接的行为,只能用绝对链接替代相对链接。尤其需要注意锚点,这时锚点也是针对 计算的,而不是针对当前网页的 URL。

    3、网页元素的属性

    3.1、简介

    网页元素的属性(attribute)可以定制元素的行为,不同的属性会导致元素有不同的行为。元素属性的写法是 HTML 标签内部的“键值对”。

    
    

    上面代码中,标签内部的键值对 lang=“en”,就称为 html 元素的属性。属性名为 lang,属性值为 en。

    属性名与标签名一样,不区分大小写,lang 和 LANG 是同一个属性。

    属性名与属性值之间,通过等号 = 连接。属性值可以放在单引号或双引号之中,建议统一使用双引号。某些属性值可以不使用引号,但是建议不要这样写。

    有些属性是布尔属性,即属性值是一个布尔值,只有“打开”和“关闭”两种情况。这时属性值可以省略,只要添加了属性名,就表示打开该属性。

    
    

    上面代码中,required 就是 标签的布尔属性。如果加上这个属性,就表示打开,没有就是关闭。

    3.2、全局属性

    全局属性(global attributes)是所有元素都可以使用的属性。也就是说,你可以把下面的属性,加在任意一个网页元素上面,不过有些属性对某些元素可能不产生意义。

    下面是一些常见的全局属性。

    • id
    • class
    • title
    • tabindex
    • accesskey
    • style
    • hidden
    • lang,dir
    • contenteditable
    • spellcheck
    • data-属性
    • 事件处理属性
    3.2.1、id

    id 属性是元素在网页内的唯一标识符。比如,网页可能包含多个

    标签,id 属性可以指定每个

    标签的唯一标识符。

    上面代码中,三个

    标签具有不同的 id 属性,因此可以区分。

    id 属性的值必须是全局唯一的,同一个页面不能有两个相同的 id 属性。另外,id 属性的值不得包含空格。

    id 属性的值还可以在最前面加上 #,放到 URL 中作为锚点,定位到该元素在网页内部的位置。比如,用户访问网址 https://foo.com/index.html#bar 的时候,浏览器会自动将页面滚动到 bar 的位置,让用户第一眼就看到这部分内容。

    3.2.2、class

    class 属性用来对网页元素进行分类。如果不同元素的 class 属性值相同,就表示它们是一类的。

    上面代码中,第一个

    和 第三个

    是一类,因为它们的 class 属性相同。

    元素可以同时具有多个 class,它们之间使用空格分隔。

    上面的 p 元素同时具有 p1、p2、p3 三个 class。

    3.2.3、title

    title 属性用来为元素添加附加说明。大多数浏览器中,鼠标悬浮在元素上面时,会将 title 属性值作为浮动提示,显示出来。

    本站内容使用创意共享许可证,可以自由使用。

    上面代码中,title 属性解释了这一块内容的目的。鼠标悬停在上面时,浏览器会显示一个浮动提示。一旦鼠标移开,提示就会消失。

    3.2.4、tabindex

    网页通常使用鼠标操作,但是某些情况下,用户可能希望使用键盘,或者只有键盘可以用。因此,浏览器允许使用 Tab 键,遍历网页元素。也就是说,只要不停按下 Tab 键,网页的焦点就会从一个元素转移到另一个元素,选定焦点元素以后,就可以进行下一步操作,比如按下回车键访问某个链接,或者直接在某个输入框输入文字。

    这里有提个问题,按下 Tab 键的时候,浏览器怎么知道跳到哪一个元素。HTML 提供了 tabindex 属性,解决这个问题。它的名字的含义,就是 Tab 的顺序(index)。

    tabindex 属性的值是一个整数,表示用户按下 Tab 键的时候,网页焦点转移的顺序。不同的属性值有不同的含义。

    • 负整数:该元素可以获取焦点(比如使用 JavaScript 的 focus() 方法),但不参与 Tab 键对网页元素的遍历。这个值通常是 -1。
    • 0:该元素参与 Tab 键的遍历,顺序由浏览器指定,通常是按照其在网页里面出现的位置。
    • 正整数:网页元素按照从小到大的顺序,参与 Tab 键的遍历。如果多个元素的 tabindex 属性相同,则按照在网页源码里面出现的顺序遍历。

    这段文字可以获得焦点。

    上面代码中,

    标签的 tabindex 为 0,意味着该元素可以获得焦点,并且也可以被 Tab 键遍历,顺序由其在源码里面的位置决定。

    一般来说,tabindex 属性最好都设成 0,按照自然顺序进行遍历,这样比较符合用户的预期,除非网页由特殊布局。如果网页所有元素都没有设置 tabindex,那么只有那些默认可以遍历的元素(比如链接、输入框等)才能参与 Tab 键的遍历,顺序由其在源码的位置决定。因此实际上,只有那些无法获得焦点的元素(比如

    )需要参与遍历,才有必要设置 tabindex 属性。

    3.2.5、accesskey

    accesskey 属性指定网页元素获得焦点的快捷键,该属性的值必须是单个的可打印字符。只要按下快捷键,该元素就会得到焦点。

    
    

    上面代码中,

    上面代码会产生一个按钮,上面的文字就是“点击”。

    button 内部不仅放置文字,还可以放置图像,这可以形成图像按钮。

    
    

    button 具有以下属性。

    • autofocus:布尔属性,表示网页加载时,焦点就在这个按钮。网页里面只能有一个元素,具有这个属性。
    • disabled:布尔属性,表示按钮不可用,会导致按钮变灰,不可点击。
    • name:按钮的名称(与 value 属性配合使用),将以 name=value 的形式,随表单一起提交到服务器。
    • value:按钮的值(与 name 属性配合使用),将以 name=value 的形式,随表单一起提交到服务器。
    • type:按钮的类型,可能的值有三种:submit (点击后将数据提交给服务器), reset (将所有控件的值重 置为初始值), button (没有默认行为,由脚本指定按钮的行为)。
    • form:指定按钮关联的 form 表单,值为 form 的 id 属性。如果省略该属性,默认关联按钮所在父表 单。
    • formaction:数据提交到服务器的目标 URL,会覆盖 form 元素的 action 属性。
    • formenctype:数据提交到服务器的编码方式,会覆盖 form 元素的 enctype 属性。可能的值有三 种: application/x-www-form-urlencoded (默认值), multipart/form-data (只用于文件上传), text/plain。
    • formmethod:数据提交到服务器使用的 HTTP 方法,会覆盖 form 元素的 method 属性,可能的值 为 post 或 get
    • formnovalidate:布尔属性,数据提交到服务器时关闭本地验证,会覆盖 form 元素的 novalidate 属性。
    • formtarget:数据提交到服务器后,展示服务器返回数据的窗口,会覆盖 form 元素的 target 属性。可能的 值有 _self (当前窗口), _blank (新的空窗口)、 _parent (父窗口)、 _top (顶层窗口)。
    9.6、select 标签

    select 标签用于生成一个下拉菜单

    
    
    

    上面代码中, select 生成一个下拉菜单,菜单标题是“—请选择一项—”,最右侧有一个下拉箭头。点击下拉箭头, 会显示三个菜单项,供用户点击选择。

    下拉菜单的菜单项由 option 标签给出,每个 option 代表可以选择的一个值。选中的 option 的 value 属性,就是 select 控件发送的服务器的值。

    option 有一个布尔属性 selected ,一旦设置,就表示该项是默认选中的菜单项。

    
    

    上面代码中,第二项 Second Value 是默认选中的。页面加载的时候,会直接显示在下拉菜单上。

    select 有如下属性。

    • autofocus :布尔属性,页面加载时是否自动获得焦点。
    • disabled :布尔属性,是否禁用当前控件。
    • form :关联表单的 id 属性。
    • multiple :布尔属性,是否可以选择多个菜单项。默认情况下,只能选择一项。一旦设置,多数浏览器会显示一个滚动列表框。用户可能需要按住 Shift 或其他功能键,选中多项。
    • name :控件名。
    • required :布尔属性,是否为必填控件。
    • size :设置了 multiple 属性时,页面显示时一次可见的行数,其他行需要滚动查看。
    9.7、option, optgroup 标签

    option 标签用在 select、optgroup、datalist 里面,表示一个菜单项,参见 select 的示例。

    它有如下属性。

    • disabled:布尔属性,是否禁用该项
    • label:该项的说明。如果省略,则等于该项的文本内容
    • selected:布尔属性,是否为默认值。显然,一组菜单中,只能有一个菜单项设置该属性
    • value:该项提交到服务器的值。如果省略,则等于该项的文本内容
    
    

    上面代码中,select 是一个下拉菜单,它的内部使用 optgroup 将菜单项分成两组。每组有自己的标题,会加粗显示,但是用户无法选中。

    它的属性如下。

    • disabled:布尔设置,是否禁用该组。一旦设置,该组所有的菜单项都不可选。
    • label:菜单项的标题
    9.8、datalist 标签

    datalist 标签是一个容器标签,用于为指定控件提供一组相关数据,通常用于生成输入提示。它的内部使用 option,生成每个菜单项。

    
    
    
      
      
      
      
      
    
    

    上面代码中,input 生成一个文本输入框,用户可以输入文本。input 的 list 属性指定关联的 datalist 的 id 属性。

    datalist 的数据列表用于输入建议,用户点击输入框的时候,会显示一个下拉菜单,里面是建议的输入项。并且还会自动匹配用户已经输入的字符,缩小可选的范围,比如用户输入“香”,则只会显示“香草”这一项。

    9.9、textarea 标签

    textarea 是一个块级元素,用来生成多行的文本框。

    
    

    上面代码会生成一个长度为 5 行,宽度为 33 个字符的文本框。

    该标签有如下属性。

    • autofocus:布尔属性,是否自动获得焦点
    • cols:文本框的宽度,单位为字符,默认值为 20
    • disabled:布尔属性,是否禁用该控件
    • form:关联表单的 id 属性
    • maxlength:允许输入的最大字符数。如果未指定此值,用户可以输入无限数量的字符
    • minlength:允许输入的最小字符数
    • name:控件的名称
    • placeholder:输入为空时显示的提示文本
    • readonly:布尔属性,控件是否为只读
    • required:布尔属性,控件是否为必填
    • rows:文本框的高度,单位为行
    • spellcheck:是否打开浏览器的拼写检查。可能的值有 true(打开),default(由父元素或网页设置决定),false(关闭)。
    • wrap:输入的文本是否自动换行。可能的值有 hard(浏览器自动插入换行符 CR + LF,使得每行不超过控件的宽度),soft(输入内容超过宽度时自动换行,但不会加入新的换行符,并且浏览器保证所有换行符都是 CR + LR,这是默认值),off(关闭自动换行,单行长度超过宽度时,会出现水平滚动条)。
    9.10、output 标签

    output 标签是一个行内元素,用于显示用户操作的结果。

     +
     =
    20
    

    该标签有如下属性。

    • for:关联控件的 id 属性,表示为该控件的操作结果
    • form:关联表单的 id 属性
    • name:控件的名称
    9.11、progress 标签

    progress 标签是一个行内元素,表示任务的完成进度。浏览器通常会将显示为进度条。

    70%
    

    该标签有如下属性。

    • max:进度条的最大值,应该是一个大于 0 的浮点数。默认值为 1。
    • value:进度条的当前值。它必须是 0 和 max 属性之间的一个有效浮点数。如果省略了 max 属性,该值则必须在 0 和 1 之间。如果省略了 value 属性,则进度条会出现滚动,表明正在进行中,无法知道完成的进度。
    9.12、mater 标签

    meter 标签是一个行内元素,表示指示器,用来显示已知范围内的一个值,很适合用于任务的当前进度、磁盘已用控件、充电量等带有比例性质的场合。浏览器通常会将其显示为一个不会滚动的指示条。

    烤箱的当前温度是350度

    上面代码会显示一个指示条,左侧表示 200,右侧表示 500,当前位置停留在 350。

    注意,meter 元素的子元素,正常情况下不会显示。只有在浏览器不支持 meter 时才会显示。

    该标签有如下属性。

    • min:范围的下限,必须小于 max 属性。如果省略,则默认为 0。
    • max:范围的上限,必须大于 min 属性。如果省略,则默认为 1。
    • value:当前值,必须在 min 属性和 max 属性之间。如果省略,则默认为 0。
    • low:表示“低端”的上限门槛值,必须大于 min 属性,小于 high 属性和 max 属性。如果省略,则等于 min 属性。
    • high:表示“高端”的下限门槛值,必须小于 max 属性,大于 low 属性和 min 属性。如果省略,则等于 max 属性。
    • optimum:指定最佳值,必须在 min 属性和 max 属性之间。它应该与 low 属性和 high 属性一起使用,表示最佳范围。如果 optimum 小于 low 属性,则表示“低端”是最佳范围;如果大于 high 属性,则表示“高端”是最佳范围;如果在 low 和 high 之间,则表示“中间地带”是最佳范围。如果省略,则等于 min 和 max 的中间值。
    • form:关联表单的 id 属性。

    Chrome 浏览器使用三种颜色,表示指示条所处的位置。较好情况时,当前位置为绿色;一般情况时,当前位置为黄色;较差情况时,当前位置为红色。

    
      at 50/100
    
    

    上面代码中,指示条可以分成三段:0 ~ 32,33 ~ 65,66 ~ 100。由于 optimum 属性是 80 ,因此 66 ~ 100 是较好情况, 33 ~ 65 是一般情况, 0 ~ 32 是较差情况。浏览器因此会根据 value 属性,将当前位置显示为不同颜色,小于 33 时显示红色,大于 65 时显示绿色,两者之间显示黄色。

你可能感兴趣的:(前端第二期,前端,html)