HTML 标题(Heading)是通过 <h1> - <h6> 等标签进行定义的。
HTML 段落是通过 <p> 标签进行定义的。
HTML 链接是通过 <a> 标签进行定义的。
HTML 图像是通过 <img> 标签进行定义的。
HTML 文档是由 HTML 元素定义的。
HTML 元素指的是从开始标签(start tag)到结束标签(end tag)的所有代码。
开始标签 | 元素内容 | 结束标签 |
---|---|---|
<p> | This is a paragraph | </p> |
<a href="default.htm" > | This is a link | </a> |
<br /> |
注释:开始标签常被称为开放标签(opening tag),结束标签常称为闭合标签(closing tag)。
- 元素的内容是开始标签与结束标签之间的内容
- 某些 HTML 元素具有空内容(empty content)
- 空元素在开始标签中进行关闭(以开始标签的结束而结束)
- 大多数 HTML 元素可拥有属性
大多数 HTML 元素可以嵌套(可以包含其他 HTML 元素)。
HTML 文档由嵌套的 HTML 元素构成。
HTML 文档实例
<html> <body> <p>This is my first paragraph.</p> </body> </html>
上面的例子包含三个 HTML 元素。
<p> 元素定义了 HTML 文档中的一个段落。
这个元素拥有一个开始标签 <p>,以及一个结束标签 </p>。
<body> 元素定义了 HTML 文档的主体。
这个元素拥有一个开始标签 <body>,以及一个结束标签 </body>。
元素内容是另一个 HTML 元素(p 元素)。
<html> 元素定义了整个 HTML 文档。
这个元素拥有一个开始标签 <html>,以及一个结束标签 </html>。
没有内容的 HTML 元素被称为空元素。空元素是在开始标签中关闭的。
<br> 就是没有关闭标签的空元素(<br> 标签定义换行)。
在开始标签中添加斜杠,比如 <br />,是关闭空元素的正确方法
HTML 标签对大小写不敏感:<P> 等同于 <p>。许多网站都使用大写的 HTML 标签。
W3School 使用的是小写标签,因为万维网联盟(W3C)在 HTML 4 中推荐使用小写
HTML 提示:使用小写属性
属性和属性值对大小写不敏感。
而新版本的 (X)HTML 要求使用小写属性。
HTML 标签可以拥有属性。属性提供了有关 HTML 元素的更多的信息。
属性总是以名称/值对的形式出现,比如:name="value"。
属性总是在 HTML 元素的开始标签中规定。
始终为属性值加引号
属性值应该始终被包括在引号内。双引号是最常用的,不过使用单引号也没有问题。
在某些个别的情况下,比如属性值本身就含有双引号,那么您必须使用单引号,例如:
name='Bill "HelloWorld" Gates'
浏览器会自动地在标题的前后添加空行。
注释:默认情况下,HTML 会自动地在块级元素前后添加一个额外的空行,比如段落、标题元素前后。
请确保将 HTML heading 标签只用于标题。不要仅仅是为了产生粗体或大号的文本而使用标题。
搜索引擎使用标题为您的网页的结构和内容编制索引。
因为用户可以通过标题来快速浏览您的网页,所以用标题来呈现文档结构是很重要的。
应该将 h1 用作主标题(最重要的),其后是 h2(次重要的),再其次是 h3,以此类推。
<hr /> 标签在 HTML 页面中创建水平线。
hr 元素可用于分隔内容。
提示:使用水平线 (<hr> 标签) 来分隔文章中的小节是一个办法(但并不是唯一的办法)。
注释:浏览器会自动地在段落的前后添加空行。(<p> 是块级元素)
提示:使用空的段落标记 <p></p> 去插入一个空行是个坏习惯。用 <br /> 标签代替它!(但是不要用 <br /> 标签去创建列表。不要着急,您将在稍后的篇幅学习到 HTML 列表。)
<br /> 元素是一个空的 HTML 元素。由于关闭标签没有任何意义,因此它没有结束标签。
即使 <br> 在所有浏览器中的显示都没有问题,使用 <br /> 也是更长远的保障。
当显示页面时,浏览器会移除源代码中多余的空格和空行。所有连续的空格或空行都会被算作一个空格。需要注意的是,HTML 代码中的所有连续的空行(换行)也被显示为一个空格。
style 属性用于改变 HTML 元素的样式。
style 属性的作用:
提供了一种改变所有 HTML 元素的样式的通用方法。
样式是 HTML 4 引入的,它是一种新的首选的改变 HTML 元素样式的方式。通过 HTML 样式,能够通过使用 style 属性直接将样式添加到 HTML 元素,或者间接地在独立的样式表中(CSS 文件)进行定义。
HTML <q> 元素定义短的引用。
浏览器通常会为 <q> 元素包围引号。
HTML <blockquote> 元素定义被引用的节。
浏览器通常会对 <blockquote> 元素进行缩进处理。
HTML <abbr> 元素定义缩写或首字母缩略语。
对缩写进行标记能够为浏览器、翻译系统以及搜索引擎提供有用的信息。
HTML <dfn> 元素定义项目或缩写的定义。
<dfn> 的用法,按照 HTML5 标准中的描述,有点复杂:
1. 如果设置了 <dfn> 元素的 title 属性,则定义项目:
2. 如果 <dfn> 元素包含具有标题的 <abbr> 元素,则 title 定义项目:
3. 否则,<dfn> 文本内容即是项目,并且父元素包含定义。
HTML <address> 元素定义文档或文章的联系信息(作者/拥有者)。
此元素通常以斜体显示。大多数浏览器会在此元素前后添加折行。
HTML <cite> 元素定义著作的标题。
浏览器通常会以斜体显示 <cite> 元素。
HTML <bdo> 元素定义双流向覆盖(bi-directional override)。
<bdo> 元素用于覆盖当前文本方向: 反方向
颜色由一个十六进制符号来定义,这个符号由红色、绿色和蓝色的值组成(RGB)。
每种颜色的最小值是 0(十六进制:#00)。最大值是 255(十六进制:#FF)。
提示:仅有 16 种颜色名被 W3C 的 HTML 4.0 标准支持,它们是:aqua、black、blue、fuchsia、gray、green、lime、maroon、navy、olive、purple、red、silver、teal、white、yellow。
通过使用 HTML4.0,所有的格式化代码均可移出 HTML 文档,然后移入一个独立的样式表。
当浏览器读到一个样式表,它就会按照这个样式表来对文档进行格式化。有以下三种方式来插入样式表:
外部样式表
当样式需要被应用到很多页面的时候,外部样式表将是理想的选择。使用外部样式表,你就可以通过更改一个文件来改变整个站点的外观。
<head>
<link rel="stylesheet" type="text/css" href="mystyle.css">
</head>
内部样式表
当单个文件需要特别样式时,就可以使用内部样式表。你可以在 head 部分通过 <style> 标签定义内部样式表。
<head>
<style type="text/css">
body {background-color: red}
p {margin-left: 20px}
</style>
</head>
内联样式
当特殊的样式需要应用到个别元素时,就可以使用内联样式。 使用内联样式的方法是在相关的标签中使用样式属性。样式属性可以包含任何 CSS 属性。以下实例显示出如何改变段落的颜色和左外边距。
<p style="color: red; margin-left: 20px"
>
This is a paragraph
</p>
标记语言的真正威力在于其收集能力,它可以将收集来的文档组合成一个完整的信息库,并且可以将文档库与世界上的其他文档集合链接起来。
这样的话,读者不仅可以完全控制文档在屏幕上的显示,还可以通过超链接来控制浏览信息的顺序。这就是 HTML 和 XHTML 中的 “HT” - 超文本(hypertext),就是它将整个 Web 网络连接起来。
超文本的基本特征就是可以超链接文档;你可以指向其他位置,该位置可以在当前的文档中、局域网中的其他文档,也可以在因特网上的任何位置的文档中。这些文档组成了一个杂乱的信息网。目标文档通常与其来源有某些关联,并且丰富了来源;来源中的链接元素则将这种关系传递给浏览者。
超链接可以用于各种效果。超链接可以用在目录和主题列表中。浏览者可以在浏览器屏幕上单击鼠标或在键盘上按下按键,从而选择并自动跳转到文档中自己感兴趣的那个主题,或跳转到世界上某处完全不同的集合中的某个文档。
超链接还可以向浏览者指出有关文档中某个主题的更多信息。例如,“如果您想了解更详细的信息,请参阅某某页面。”。作者可以使用超链接来减少重复信息。例如,我们建议创作者在每个文档中都签署上自己的姓名。这样就可以使用一个将名字和另一个包含地址、电话号码等信息的单独文档链接起来的超链接,而不必在每个文档中都包含完整的联系信息。
超链接(hyper text),或者按照标准叫法称为锚(anchor),是使用 <a> 标签标记的,可以用两种方式表示。锚的一种类型是在文档中创建一个热点,当用户激活或选中(通常是使用鼠标)这个热点时,会导致浏览器进行链接。浏览器会自动加载并显示同一文档或其他文档中的某个部分,或触发某些与因特网服务相关的操作,例如发送电子邮件或下载特殊文件等。锚的另一种类型会在文档中创建一个标记,该标记可以被超链接引用。
还有一些与超链接相关联的鼠标相关事件。这些事件与 JavaScript 结合使用可以产生一些令人激动的效果。
注释
锚的这两种类型都使用同样的标签;也许这就是它们拥有同样的名称的原因。但是我们发现,如果将它们区分开,把提供热点和超链接地址的锚看作“链接”,而用于标记文档的目标部分的锚称为“锚”,那么您将更容易理解这两种类型的锚。
超链接可以是一个字,一个词,或者一组词,也可以是一幅图像,您可以点击这些内容来跳转到新的文档或者当前文档中的某个部分。
当您把鼠标指针移动到网页中的某个链接上时,箭头会变为一只小手。
我们通过使用 <a> 标签在 HTML 中创建链接。
有两种使用 <a> 标签的方式:
- 通过使用 href 属性 - 创建指向另一个文档的链接
- 通过使用 name 属性 - 创建文档内的书签
链接的 HTML 代码很简单。它类似这样:
<a href="url">Link text</a>
href 属性规定链接的目标。
开始标签和结束标签之间的文字被作为超级链接来显示。
提示:"链接文本" 不必一定是文本。图片或其他 HTML 元素都可以成为链接。
使用 Target 属性,你可以定义被链接的文档在何处显示。
name 属性规定锚(anchor)的名称。
您可以使用 name 属性创建 HTML 页面中的书签。
书签不会以任何特殊方式显示,它对读者是不可见的。
当使用命名锚(named anchors)时,我们可以创建直接跳至该命名锚(比如页面中某个小节)的链接,这样使用者就无需不停地滚动页面来寻找他们需要的信息了。
命名锚的语法:
<a name="label">锚(显示在页面上的文本)</a>
提示:锚的名称可以是任何你喜欢的名字。
提示:您可以使用 id 属性来替代 name 属性,命名锚同样有效。
实例
首先,我们在 HTML 文档中对锚进行命名(创建一个书签):
<a name="tips"
>基本的注意事项 - 有用的提示</a>
然后,我们在同一个文档中创建指向该锚的链接:
<a href="#tips">有用的提示</a>
您也可以在其他页面中创建指向该锚的链接:
<a href="http://www.w3school.com.cn/html/html_links.asp#tips">有用的提示</a>
在上面的代码中,我们将 # 符号和锚名称添加到 URL 的末端,就可以直接链接到 tips 这个命名锚了。
注释:请始终将正斜杠添加到子文件夹。假如这样书写链接:href="http://www.w3school.com.cn/html",就会向服务器产生两次 HTTP 请求。这是因为服务器会添加正斜杠到这个地址,然后创建一个新的请求,就像这样:href="http://www.w3school.com.cn/html/"。
提示:命名锚经常用于在大型文档开始位置上创建目录。可以为每个章节赋予一个命名锚,然后把链接到这些锚的链接放到文档的上部。如果您经常访问百度百科,您会发现其中几乎每个词条都采用这样的导航方式。
提示:假如浏览器找不到已定义的命名锚,那么就会定位到文档的顶端。不会有错误发生。
在 HTML 中,图像由 <img> 标签定义。
<img> 是空标签,意思是说,它只包含属性,并且没有闭合标签。
要在页面上显示图像,你需要使用源属性(src)。src 指 "source"。源属性的值是图像的 URL 地址。
定义图像的语法是:
<img src="url" />
URL 指存储图像的位置。如果名为 "boat.gif" 的图像位于 www.w3school.com.cn 的 images 目录中,那么其 URL 为 http://www.w3school.com.cn/images/boat.gif。
浏览器将图像显示在文档中图像标签出现的地方。如果你将图像标签置于两个段落之间,那么浏览器会首先显示第一个段落,然后显示图片,最后显示第二段。
alt 属性用来为图像定义一串预备的可替换的文本。替换文本属性的值是用户定义的。
<img src="boat.gif" alt="Big Boat"
>
当浏览器无法载入图像时,替换文本属性可告诉读者他们失去的信息。此时,浏览器将显示这个替代性的文本而不是图像。为页面上的图像都加上替换文本属性是个好习惯,这样有助于更好的显示信息,并且对于那些使用纯文本浏览器的人来说是非常有用的。
假如某个 HTML 文件包含十个图像,那么为了正确显示这个页面,需要加载 11 个文件。加载图片是需要时间的,所以我们的建议是:慎用图片。
表格由 <table> 标签来定义。每个表格均有若干行(由 <tr> 标签定义),每行被分割为若干单元格(由 <td> 标签定义)。字母 td 指表格数据(table data),即数据单元格的内容。数据单元格可以包含文本、图片、列表、段落、表单、水平线、表格等等。
如果不定义边框属性,表格将不显示边框。有时这很有用,但是大多数时候,我们希望显示边框。
使用边框属性来显示一个带有边框的表格:
<table border="1">
表格的表头使用 <th> 标签进行定义。
大多数浏览器会把表头显示为粗体居中的文本:
<table border="1">
<tr>
<th>Heading</th>
<th>Another Heading</th>
在一些浏览器中,没有内容的表格单元显示得不太好。如果某个单元格是空的(没有内容),浏览器可能无法显示出这个单元格的边框。
<td></td>
注意:这个空的单元格的边框没有被显示出来。为了避免这种情况,在空单元格中添加一个空格占位符,就可以将边框显示出来。
<td> </td>
无序列表是一个项目的列表,此列项目使用粗体圆点(典型的小黑圆圈)进行标记。
无序列表始于 <ul> 标签。每个列表项始于 <li>。
列表项内部可以使用段落、换行符、图片、链接以及其他列表等等。
有序列表也是一列项目,列表项目使用数字进行标记。
有序列表始于 <ol> 标签。每个列表项始于 <li> 标签。
自定义列表不仅仅是一列项目,而是项目及其注释的组合。
自定义列表以 <dl> 标签开始。每个自定义列表项以 <dt> 开始。每个自定义列表项的定义以 <dd> 开始。
可以通过 <div> 和 <span> 将 HTML 元素组合起来。
大多数 HTML 元素被定义为块级元素或内联元素。
编者注:“块级元素”译为 block level element,“内联元素”译为 inline element。
块级元素在浏览器显示时,通常会以新行来开始(和结束)。
例子:<h1>, <p>, <ul>, <table>
内联元素在显示时通常不会以新行开始。
例子:<b>, <td>, <a>, <img>
HTML <div> 元素是块级元素,它是可用于组合其他 HTML 元素的容器。
<div> 元素没有特定的含义。除此之外,由于它属于块级元素,浏览器会在其前后显示折行。
如果与 CSS 一同使用,<div> 元素可用于对大的内容块设置样式属性。
<div> 元素的另一个常见的用途是文档布局。它取代了使用表格定义布局的老式方法。使用 <table> 元素进行文档布局不是表格的正确用法。<table> 元素的作用是显示表格化的数据。
HTML <span> 元素是内联元素,可用作文本的容器。
<span> 元素也没有特定的含义。
当与 CSS 一同使用时,<span> 元素可用于为部分文本设置样式属性。
对 HTML 进行分类(设置类),使我们能够为元素的类定义 CSS 样式。
为相同的类设置相同的样式,或者为不同的类设置不同的样式。
HTML <div> 元素是块级元素。它能够用作其他 HTML 元素的容器。
设置 <div> 元素的类,使我们能够为相同的 <div> 元素设置相同的类:
HTML <span> 元素是行内元素,能够用作文本的容器。
设置 <span> 元素的类,能够为相同的 <span> 元素设置相同的样式。
HTML id
属性用于 为HTML 元素指定唯一的 id。
一个 HTML文档中不能存在多个有相同 id 的元素。
使用 id 属性
id
属性指定 HTML 元素的唯一 ID。 id
属性的值在 HTML 文档中必须是唯一的。
id
属性用于指向样式表中的特定样式声明。JavaScript 也可使用它来访问和操作拥有特定 ID 的元素。
id 的语法是:写一个井号 (#),后跟一个 id 名称。然后,在花括号 {} 中定义 CSS 属性。
下面的例子中我们有一个 <h1>
元素,它指向 id 名称 "myHeader"。这个 <h1>
元素将根据 head 部分中的 #myHeader
样式定义进行样式设置:
注释:id 名称对大小写敏感!
注释:id 必须包含至少一个字符,且不能包含空白字符(空格、制表符等)。
Class 与 ID 的差异
同一个类名可以由多个 HTML 元素使用,而一个 id 名称只能由页面中的一个 HTML 元素使用:
通过 ID 和链接实现 HTML 书签
HTML 书签用于让读者跳转至网页的特定部分。
如果页面很长,那么书签可能很有用。
要使用书签,您必须首先创建它,然后为它添加链接。
然后,当单击链接时,页面将滚动到带有书签的位置。
实例
首先,用 id
属性创建书签:
<h2 id="C4">第四章</h2>
然后,在同一张页面中,向这个书签添加一个链接(“跳转到第四章”):
实例
<a href="#C4">跳转到第四章</a>
或者,在另一张页面中,添加指向这个书签的链接(“跳转到第四章”):
<a href="html_demo.html#C4">Jump to Chapter 4</a>
JavaScript 也可以使用 id 属性为特定元素执行某些任务。
JavaScript 可以使用 getElementById()
方法访问拥有特定 id 的元素:
id
属性用于为 HTML 元素指定唯一的 idid
属性的值在 HTML 文档中必须是唯一的- CSS 和 JavaScript 可使用
id
属性来选取元素或设置特定元素的样式 id
属性的值区分大小写id
属性还可用于创建 HTML 书签- JavaScript 可以使用
getElementById()
方法访问拥有特定 id 的元素
iframe 用于在网页内显示网页。
<iframe src="URL"></iframe>
URL 指向隔离页面的位置。
Iframe - 设置高度和宽度
height 和 width 属性用于规定 iframe 的高度和宽度。
属性值的默认单位是像素,但也可以用百分比来设定(比如 "80%")。
<iframe src="demo_iframe.htm" width="200" height="200"></iframe>
Iframe - 删除边框
frameborder 属性规定是否显示 iframe 周围的边框。
设置属性值为 "0" 就可以移除边框:
<iframe src="demo_iframe.htm" frameborder="0"></iframe>
使用 iframe 作为链接的目标
iframe 可用作链接的目标(target)。
链接的 target 属性必须引用 iframe 的 name 属性:
<iframe src="demo_iframe.htm" name="iframe_a"
></iframe>
<p><a href="http://www.w3school.com.cn" target="iframe_a">W3School.com.cn</a></p>
HTML <script>
标签用于定义客户端脚本(JavaScript)。
<script>
元素即可包含脚本语句,也可通过 src
属性指向外部脚本文件。
JavaScript 的常见用途是图像处理、表单验证和内容的动态更改。
如需选取 HTML 元素,JavaScript 最常用 document.getElementById()
方法。
这个 JavaScript 示例向 id="demo" 的 HTML 元素内写入 "Hello JavaScript!":
<script> document.getElementById("demo").innerHTML = "Hello JavaScript!"; </script>
JavaScript 能够更改内容:
document.getElementById("demo").innerHTML = "Hello JavaScript!";
JavaScript 能够更改样式:
document.getElementById("demo").style.fontSize = "25px"; document.getElementById("demo").style.color = "red"; document.getElementById("demo").style.backgroundColor = "yellow";
JavaScript 能够更改属性:
document.getElementById("image").src = "picture.gif";
HTML <noscript> 标签
HTML <noscript>
标签定义了替代内容,这些内容将显示给在浏览器中禁用了脚本或浏览器不支持脚本的用户:
<script> document.getElementById("demo").innerHTML = "Hello JavaScript!"; </script> <noscript>抱歉,您的浏览器不支持 JavaScript!</noscript>
<img src="picture.jpg"> | picture.jpg 位于与当前网页相同的文件夹 |
<img src="images/picture.jpg"> | picture.jpg 位于当前文件夹的 images 文件夹中 |
<img src="/images/picture.jpg"> | picture.jpg 当前站点根目录的 images 文件夹中 |
<img src="../picture.jpg"> | picture.jpg 位于当前文件夹的上一级文件夹中 |
HTML 文件路径
文件路径描述了网站文件夹结构中某个文件的位置。
文件路径会在链接外部文件时被用到:
- 网页
- 图像
- 样式表
- JavaScript
绝对文件路径
绝对文件路径是指向一个因特网文件的完整 URL:
<img src="https://www.w3school.com.cn/images/picture.jpg" alt="flower">
相对路径指向了相对于当前页面的文件。
在本例中,文件路径指向了位于当前网站根目录中 images 文件夹里的一个文件:
<img src="/images/picture.jpg" alt="flower">
在本例中,文件路径指向了位于当前文件夹中 images 文件夹里的一个文件:
<img src="images/picture.jpg" alt="flower">
在本例中,文件路径指向了位于当前文件夹的上一级文件夹中 images 文件夹里的一个文件:
<img src="../images/picture.jpg" alt="flower">
使用相对路径是个好习惯(如果可能)。
如果使用了相对路径,那么您的网页就不会与当前的基准 URL 进行绑定。所有链接在您的电脑上 (localhost) 或未来的公共域中均可正常工作。
<head> 元素是所有头部元素的容器。<head> 内的元素可包含脚本,指示浏览器在何处可以找到样式表,提供元信息,等等。
以下标签都可以添加到 head 部分:<title>、<base>、<link>、<meta>、<script> 以及 <style>。
<title> 标签定义文档的标题。
title 元素在所有 HTML/XHTML 文档中都是必需的。
title 元素能够:
- 定义浏览器工具栏中的标题
- 提供页面被添加到收藏夹时显示的标题
- 显示在搜索引擎结果中的页面标题
一个简化的 HTML 文档:
<!DOCTYPE html> <html> <head> <title>Title of the document</title> </head> <body> The content of the document...... </body> </html>
<base> 标签为页面上的所有链接规定默认地址或默认目标(target):
<head> <base href="http://www.w3school.com.cn/images/" /> <base target="_blank" /> </head>
<link> 标签定义文档与外部资源之间的关系。
<link> 标签最常用于连接样式表:
<head> <link rel="stylesheet" type="text/css" href="mystyle.css" /> </head>
<style> 标签用于为 HTML 文档定义样式信息。
您可以在 style 元素内规定 HTML 元素在浏览器中呈现的样式:
<head> <style type="text/css"> body {background-color:yellow} p {color:blue} </style> </head>
元数据(metadata)是关于数据的信息。
<meta> 标签提供关于 HTML 文档的元数据。元数据不会显示在页面上,但是对于机器是可读的。
典型的情况是,meta 元素被用于规定页面的描述、关键词、文档的作者、最后修改时间以及其他元数据。
<meta> 标签始终位于 head 元素中。
元数据可用于浏览器(如何显示内容或重新加载页面),搜索引擎(关键词),或其他 web 服务。
针对搜索引擎的关键词
一些搜索引擎会利用 meta 元素的 name 和 content 属性来索引您的页面。
下面的 meta 元素定义页面的描述:
<meta name="description" content="Free Web tutorials on HTML, CSS, XML" />
下面的 meta 元素定义页面的关键词:
<meta name="keywords" content="HTML, CSS, XML" />
name 和 content 属性的作用是描述页面的内容。
<script> 标签用于定义客户端脚本,比如 JavaScript。
使用 <div> 元素的 HTML 布局
注释:<div> 元素常用作布局工具,因为能够轻松地通过 CSS 对其进行定位。
使用 HTML5 的网站布局
HTML5 提供的新语义元素定义了网页的不同部分:使用 <header>, <nav>, <section>, 以及 <footer> 来创建多列布局:
使用表格的 HTML 布局
注释:<table> 元素不是作为布局工具而设计的。
<table> 元素的作用是显示表格化的数据。
使用 <table> 元素能够取得布局效果,因为能够通过 CSS 设置表格元素的样式:
什么是响应式 Web 设计?
- RWD 指的是响应式 Web 设计(Responsive Web Design)
- RWD 能够以可变尺寸传递网页
- RWD 对于平板和移动设备是必需的
使用 Bootstrap
另一个创建响应式设计的方法,是使用现成的 CSS 框架。
Bootstrap 是最流行的开发响应式 web 的 HTML, CSS, 和 JS 框架。
Bootstrap 帮助您开发在任何尺寸都外观出众的站点:显示器、笔记本电脑、平板电脑或手机:
计算机代码
var person = { firstName:"Bill", lastName:"Gates", age:50, eyeColor:"blue" }
HTML 计算机代码格式
通常,HTML 使用可变的字母尺寸,以及可变的字母间距。
在显示计算机代码示例时,并不需要如此。
<kbd>, <samp>, 以及 <code> 元素全都支持固定的字母尺寸和间距。
HTML 键盘格式
HTML <kbd> 元素定义键盘输入:
<p>To open a file, select:</p> <p><kbd>File | Open...</kbd></p>
HTML 样本格式
HTML <samp> 元素定义计算机输出示例:
<samp> demo.example.com login: Apr 12 09:10:17 Linux 2.6.10-grsec+gg3+e+fhs6b+nfs+gr0501+++p3+c4a+gr2b-reslog-v6.189 </samp>
HTML 代码格式
HTML <code> 元素定义编程代码示例:
<code> var person = { firstName:"Bill", lastName:"Gates", age:50, eyeColor:"blue" } </code>
<code> 元素不保留多余的空格和折行:
<p>Coding Example:</p> <code> var person = { firstName:"Bill", lastName:"Gates", age:50, eyeColor:"blue" } </code>
如需解决该问题,您必须在 <pre> 元素中包围代码:
<p>Coding Example:</p> <code> <pre> var person = { firstName:"Bill", lastName:"Gates", age:50, eyeColor:"blue" } </pre> </code>
HTML 变量格式化
HTML <var> 元素定义数学变量:
<p>Einstein wrote:</p> <p><var>E = m c<sup>2</sup></var></p>
什么是语义元素?
语义元素清楚地向浏览器和开发者描述其意义。
非语义元素的例子:<div> 和 <span> - 无法提供关于其内容的信息。
语义元素的例子:<form>、<table> 以及 <img> - 清晰地定义其内容。
多网站包含了指示导航、页眉以及页脚的 HTML 代码,例如这些:<div id="nav"> <div class="header"> <div id="footer">。
HTML5 提供了定义页面不同部分的新语义元素:
- <article>
- <aside>
- <details>
- <figcaption>
- <figure>
- <footer>
- <header>
- <main>
- <mark>
- <nav>
- <section>
- <summary>
- <time>
HTML5 <section> 元素
<section> 元素定义文档中的节。
根据 W3C 的 HTML 文献:“节(section)是有主题的内容组,通常具有标题”。
可以将网站首页划分为简介、内容、联系信息等节。
<section> <h1>WWF</h1> <p>The World Wide Fund for Nature (WWF) is....</p> </section>
HTML5 <article> 元素
<article> 元素规定独立的自包含内容。
文档有其自身的意义,并且可以独立于网站其他内容进行阅读。
<article> 元素的应用场景:
- 论坛
- 博客
- 新闻
<article> <h1>What Does WWF Do?</h1> <p>WWF's mission is to stop the degradation of ouith nature.</p> </article>
嵌套语义元素
在 HTML5 标准中,<article> 元素定义完整的相关元素自包含块。
<section> 元素被定义为相关元素块。
我们能够使用该定义来决定如何嵌套元素吗?不,我们不能!
在因特网上,您会发现 <section> 元素包含 <article> 元素的 HTML 页面,还有 <article> 元素包含 <sections> 元素的页面。
您还会发现 <section> 元素包含 <section> 元素,同时 <article> 元素包含 <article> 元素。
HTML5 <header> 元素
<header> 元素为文档或节规定页眉。
<header> 元素应该被用作介绍性内容的容器。
一个文档中可以有多个 <header> 元素。
下例为一篇文章定义了页眉:
<article> <header> <h1>What Does WWF Do?</h1> <p>WWF's mission:</p> </header> <p>WWF's mission is to stop the degradatioharmony with nature.</p> </article>
HTML5 <footer> 元素
<footer> 元素为文档或节规定页脚。
<footer> 元素应该提供有关其包含元素的信息。
页脚通常包含文档的作者、版权信息、使用条款链接、联系信息等等。
您可以在一个文档中使用多个 <footer> 元素。
<footer> <p>Posted by: Hege Refsnes</p> <p>Contact information: <a href="mailto:someone@example.com"> someone@example.com</a>.</p> </footer>
HTML5 <nav> 元素
<nav> 元素定义导航链接集合。
<nav> 元素旨在定义大型的导航链接块。不过,并非文档中所有链接都应该位于 <nav> 元素中
<nav> <a href="/html/">HTML</a> | <a href="/css/">CSS</a> | <a href="/js/">JavaScript</a> | <a href="/jquery/">jQuery</a> </nav>
HTML5 <aside> 元素
<aside> 元素页面主内容之外的某些内容(比如侧栏)。
aside 内容应该与周围内容相关。
<p>My family and I visited The Epcot center this summer.</p> <aside> <h4>Epcot Center</h4> <p>The Epcot Center is a theme park in Disney World, Florida.</p> </aside>
HTML5 <figure> 和 <figcaption> 元素
在书籍和报纸中,与图片搭配的标题很常见。
标题(caption)的作用是为图片添加可见的解释。
通过 HTML5,图片和标题能够被组合在 <figure> 元素中:
<figure> <img src="pic_mountain.jpg" alt="The Pulpit Rock" width="304" height="228"> <figcaption>Fig1. - The Pulpit Pock, Norway.</figcaption> </figure>
<img> 元素定义图像,<figcaption> 元素定义标题。
如果使用 HTML4 的话,开发者会使用他们喜爱的属性名来设置页面元素的样式:
header, top, bottom, footer, menu, navigation, main, container, content, article, sidebar, topnav, ...
如此,浏览器便无法识别正确的网页内容。
而通过 HTML5 元素,比如:<header> <footer> <nav> <section> <article>,此问题迎刃而解。
根据 W3C,语义网:“允许跨应用程序、企业和团体对数据进行分享和重用。”
请始终对图像使用 alt 属性。当图像无法显示时该属性很重要。
<img src="html5.gif" alt="HTML5" style="width:128px;height:128px">
请始终定义图像尺寸。这样做会减少闪烁,因为浏览器会在图像加载之前为图像预留空间。
<img src="html5.gif" alt="HTML5" style="width:128px;height:128px">
在 HTML5 标准中,能够省略 <html> 标签和 <body> 标签。
以下代码作为 HTML5 进行验证:
<!DOCTYPE html> <head> <title>Page Title</title> </head> <h1>This is a heading</h1> <p>This is a paragraph.</p>
不推荐省略 <html> 和 <body> 标签。
<html> 元素是文本的根元素。它是规定页面语言的理想位置。
<!DOCTYPE html> <html lang="en-US">
对于可访问应用程序(屏幕阅读器)和搜索引擎,声明语言很重要。
省略 <html> 或 <body> c可令 DOM 和 XML 软件崩溃。
省略 <body> 会在老式浏览器(IE9)中产生错误。
在 HTML5 标准中,<head> 标签也能够被省略。
默认地,浏览器会把 <body> 之前的所有元素添加到默认的 <head> 元素。
通过省略 <head> 标签,您能够降低 HTML 的复杂性:
注释:对于 web 开发者,省略标签的做法是陌生的。建立规则需要时间。
<title> 元素在 HTML5 中是必需的。请尽可能制作有意义的标题。
<title>HTML5 Syntax and Coding Style</title>
为了确保恰当的解释,以及正确的搜索引擎索引,在文档中对语言和字符编码的定义越早越好:
<!DOCTYPE html> <html lang="en-US"> <head> <meta charset="UTF-8"> <title>HTML5 Syntax and Coding Style</title> </head>
请使用简单的语法来链接样式表(type 属性不是必需的):
<link rel="stylesheet" href="styles.css">
短规则可以压缩为一行,就像这样:
p.into {font-family:"Verdana"; font-size:16em;}
长规则应该分为多行:
- 开括号与选择器位于同一行
- 在开括号之前用一个空格
- 使用两个字符的缩进
- 在每个属性与其值之间使用冒号加一个空格
- 在每个逗号或分号之后使用空格
- 在每个属性值对(包括最后一个)之后使用分号
- 只在值包含空格时使用引号来包围值
- 把闭括号放在新的一行,之前不用空格
- 避免每行超过 80 个字符
注释:在逗号或分号之后添加空格,是所有书写类型的通用规则。
在 HTML 中加载 JavaScript
请使用简单的语法来加载外部脚本(type 属性不是必需的):
<script src="myscript.js">
通过 JavaScript 访问 HTML 元素
使用“不整洁”的 HTML 样式的后果,是可能会导致 JavaScript 错误。
这两个 JavaScript 语句会产生不同的结果:
var obj = getElementById("Demo") var obj = getElementById("demo")
使用小写文件名
大多数 web 服务器(Apache、Unix)对文件名的大小写敏感:
不能以 london.jpg 访问 London.jpg。
其他 web 服务器(微软,IIS)对大小写不敏感:
能够以 london.jpg 或 London.jpg 访问 London.jpg。
如果使用混合大小写,那么您必须保持高度的一致性。
如果您从对大小写不敏感的服务器转到一台对大小写敏感的服务器上,这些小错误将破坏您的网站。
为了避免这些问题,请始终使用小写文件名(如果可以的话)。
HTML 中的预留字符必须被替换为字符实体。
HTML 实体
在 HTML 中,某些字符是预留的。
在 HTML 中不能使用小于号(<)和大于号(>),这是因为浏览器会误认为它们是标签。
如果希望正确地显示预留字符,我们必须在 HTML 源代码中使用字符实体(character entities)。
字符实体类似这样:
&entity_name; 或者 &#entity_number;
如需显示小于号,我们必须这样写:< 或 <
提示:使用实体名而不是数字的好处是,名称易于记忆。不过坏处是,浏览器也许并不支持所有实体名称(对实体数字的支持却很好)。
不间断空格(non-breaking space)
HTML 中的常用字符实体是不间断空格( )。
浏览器总是会截短 HTML 页面中的空格。如果您在文本中写 10 个空格,在显示该页面之前,浏览器会删除它们中的 9 个。如需在页面中增加空格的数量,您需要使用 字符实体。
键盘上不存在的字符也可以由实体代替。
HTML 符号实体
在上一章中已经讲解了 HTML 实体。
普通键盘上不存在众多数学、技术和货币符号。
如需将此类符号添加到 HTML 页面,您可以使用 HTML 实体名称(HTML entity name)。
如果不存在实体名称,则可使用实体编号,十进制或十六进制的引用。
在 HTML 中使用表情符号
表情符号(Emoji)是来自 UTF-8 字符集的字符:😄 😍 💗
什么是 Emoji?
表情符号(Emoji)类似图像或图标,但它们并不是。
它们是来自 UTF-8 (Unicode) 字符集的字母(字符)。
提示:UTF-8 几乎涵盖世界上所有字符和符号。
HTML charset 属性
为了正确显示 HTML 页面,Web 浏览器必须知道页面中使用的字符集。
这是在 <meta>
标签中规定的:
<meta charset="UTF-8">
提示:如果未规定,UTF-8 则是 HTML 中的默认字符集。
UTF-8 字符
很多 UTF-8 字符无法在键盘上键入,但始终可以使用数字(被称为实体编号)来显示它们:
- A 是 65
- B 是 66
- C 是 67
<meta charset="UTF-8">
元素定义字符集。
字符 A、B、C 由数字 65、66 以及 67 来显示。
为了让浏览器了解您正在显示字符,您必须以 &# 开头并以 ;(分号)结束实体编号。
Emoji 字符
表情符号也是来自 UTF-8 字母的字符:
- 😄 是 128516
- 😍 是 128525
- 💗 是 128151
由于表情符号是字符,因此可以像 HTML 中的其他任何字符一样复制、显示和调整它们的大小。
为了正确显示 HTML 页面,Web 浏览器必须知道要使用哪个字符集。
从 ASCII 到 UTF-8
ASCII 是第一个字符编码标准。ASCII 定义了 128 种可以在互联网上使用的字符:数字(0-9)、英文字母(A-Z)和一些特殊字符,比如:! $ + - ( ) @ < >。
ISO-8859-1 是 HTML 4 的默认字符集。此字符集支持 256 个不同的字符代码。HTML 4 同时支持 UTF-8。
ANSI(Windows-1252)是原始的 Windows 字符集。 ANSI 与 ISO-8859-1 相同,不同之处在于 ANSI 具有 32 个额外的字符。
HTML5 规范鼓励 Web 开发人员使用 UTF-8 字符集,该字符集涵盖了世界上几乎所有的字符和符号!
HTML charset 属性
为了正确显示 HTML 页面,Web 浏览器必须了解页面中使用的字符集。
这在 <meta>
标签中指定:
<meta charset="UTF-8">
ASCII 字符集
ASCII 使用 0 到 31(以及 127)之间的值作为控制字符。
ASCII 使用 32 到 126 的值表示字母、数字和符号。
ASCII 不使用 128 到 255 之间的值。
ANSI 字符集 (Windows-1252)
对于 0 到 127 的值,ANSI 与 ASCII 相同。
ANSI 有一组专有的字符,其值从 128 到 159。
对于 160 到 255 的值,ANSI 与 UTF-8 相同。
ISO-8859-1 字符集
对于 0 到 127 的值,8859-1 与 ASCII 相同。
8859-1 不使用 128 到 159 之间的值。
对于从 160 到 255 的值,8859-1 与 UTF-8 相同。
UTF-8 字符集
对于 0 到 127 的值,UTF-8 与 ASCII 相同。
UTF-8 不使用 12 8到 159 之间的值。
对于 160 到 255 之间的值,UTF-8 与 ANSI 和 8859-1 相同。
UTF-8 从值 256 继续,包含超过 10000 个不同字符。
如需深入研究,请阅读我们完整的 HTML 字符集参考手册。
@charset CSS 规则
您可以使用 CSS @charset 规则来指定样式表中使用的字符编码:
将样式表的编码设置为 Unicode UTF-8:
@charset "UTF-8";
URL 也被称为网址。
URL 可以由单词组成,比如 “w3school.com.cn”,或者是因特网协议(IP)地址:192.168.1.253。大多数人在网上冲浪时,会键入网址的域名,因为名称比数字容易记忆。
URL - Uniform Resource Locator
当您点击 HTML 页面中的某个链接时,对应的 <a> 标签指向万维网上的一个地址。
统一资源定位器(URL)用于定位万维网上的文档(或其他数据)。
网址,比如 HTML 教程,遵守以下的语法规则:
scheme://host.domain:port/path/filename
解释:
- scheme - 定义因特网服务的类型。最常见的类型是 http
- host - 定义域主机(http 的默认主机是 www)
- domain - 定义因特网域名,比如 w3school.com.cn
- :port - 定义主机上的端口号(http 的默认端口号是 80)
- path - 定义服务器上的路径(如果省略,则文档必须位于网站的根目录中)。
- filename - 定义文档/资源的名称
编者注:URL 的英文全称是 Uniform Resource Locator,中文也译为“统一资源定位符”。
http | 超文本传输协议 | 以 http:// 开头的普通网页。不加密。 |
https | 安全超文本传输协议 | 安全网页。加密所有信息交换。 |
ftp | 文件传输协议 | 用于将文件下载或上传至网站。 |
file | 您计算机上的文件。 |
通过使用框架,你可以在同一个浏览器窗口中显示不止一个页面。
每份HTML文档称为一个框架,并且每个框架都独立于其他的框架。
使用框架的坏处:
- 开发人员必须同时跟踪更多的HTML文档
- 很难打印整张页面
框架结构标签(<frameset>)
- 框架结构标签(<frameset>)定义如何将窗口分割为框架
- 每个 frameset 定义了一系列行或列
- rows/columns 的值规定了每行或每列占据屏幕的面积
编者注:frameset 标签也被某些文章和书籍译为框架集。
框架标签(Frame)
Frame 标签定义了放置在每个框架中的 HTML 文档。
在下面的这个例子中,我们设置了一个两列的框架集。第一列被设置为占据浏览器窗口的 25%。第二列被设置为占据浏览器窗口的 75%。HTML 文档 "frame_a.htm" 被置于第一个列中,而 HTML 文档 "frame_b.htm" 被置于第二个列中:
<frameset cols="25%,75%"> <frame src="frame_a.htm"> <frame src="frame_b.htm"> </frameset>
基本的注意事项 - 有用的提示:
假如一个框架有可见边框,用户可以拖动边框来改变它的大小。为了避免这种情况发生,可以在 <frame> 标签中加入:noresize="noresize"。
为不支持框架的浏览器添加 <noframes> 标签。
重要提示:不能将 <body></body> 标签与 <frameset></frameset> 标签同时使用!不过,假如你添加包含一段文本的 <noframes> 标签,就必须将这段文字嵌套于 <body></body> 标签内。(在下面的第一个实例中,可以查看它是如何实现的。)
背景(Backgrounds)
<body> 拥有两个配置背景的标签。背景可以是颜色或者图像。
背景颜色(Bgcolor)
背景颜色属性将背景设置为某种颜色。属性值可以是十六进制数、RGB 值或颜色名。
<bodybgcolor="#000000"
> <bodybgcolor="rgb(0,0,0)"
> <bodybgcolor="black"
>
以上的代码均将背景颜色设置为黑色。
背景(Background)
背景属性将背景设置为图像。属性值为图像的URL。如果图像尺寸小于浏览器窗口,那么图像将在整个浏览器窗口进行复制。
<bodybackground="clouds.gif"
> <bodybackground="http://www.w3school.com.cn/clouds.gif"
>
URL可以是相对地址,如第一行代码。也可以使绝对地址,如第二行代码。
提示:如果你打算使用背景图片,你需要紧记一下几点:
- 背景图像是否增加了页面的加载时间。小贴士:图像文件不应超过 10k。
- 背景图像是否与页面中的其他图象搭配良好。
- 背景图像是否与页面中的文字颜色搭配良好。
- 图像在页面中平铺后,看上去还可以吗?
- 对文字的注意力被背景图像喧宾夺主了吗?
基本的注意事项 - 有用的提示:
<body> 标签中的背景颜色(bgcolor)、背景(background)和文本(text)属性在最新的 HTML 标准(HTML4 和 XHTML)中已被废弃。W3C 在他们的推荐标准中已删除这些属性。
应该使用层叠样式表(CSS)来定义 HTML 元素的布局和显示属性。
URL 编码会将字符转换为可通过因特网传输的格式。
URL - 统一资源定位器
Web 浏览器通过 URL 从 web 服务器请求页面。
URL 是网页的地址,比如 http://www.w3school.com.cn。
URL 编码
URL 只能使用 ASCII 字符集来通过因特网进行发送。
由于 URL 常常会包含 ASCII 集合之外的字符,URL 必须转换为有效的 ASCII 格式。
URL 编码使用 "%" 其后跟随两位的十六进制数来替换非 ASCII 字符。
URL 不能包含空格。URL 编码通常使用 + 来替换空格。
如果希望向世界发布您的网站,那么您必须把它存放在 web 服务器上。
托管自己的网站
在自己的服务器上托管网站始终是一个选项。有几点需要考虑:
硬件支出
如果要运行“真正”的网站,您不得不购买强大的服务器硬件。不要指望低价的 PC 能够应付这些工作。您还需要稳定的(一天 24 小时)高速连接。
软件支出
请记住,服务器授权通常比客户端授权更昂贵。同时请注意,服务器授权也许有用户数量限制。
人工费
不要指望低廉的人工费用。您必须安装自己的硬件和软件。您同时要处理漏洞和病毒,以确保您的服务器时刻正常地运行于一个“任何事都可能发生”的环境中。
使用因特网服务提供商(ISP)
从 ISP 租用服务器也很常见。
大多数小公司会把网站存放到由 ISP 提供的服务器上。其优势有以下几点:
连接速度
大多数 ISP 都拥有连接因特网的高速连接。
强大的硬件
ISP 的 web 服务器通常强大到能够由若干网站分享资源。您还要看一下 ISP 是否提供高效的负载平衡,以及必要的备份服务器。
安全性和可靠性
ISP 是网站托管方面的专家。他们应该提供 99% 以上的在线时间,最新的软件补丁,以及最好的病毒防护。
选择 ISP 时的注意事项
24 小时支持
确保 ISP 提供 24 小时支持。不要使自己置于无法解决严重问题的尴尬境地,同时还必须等待第二个工作日。如果您不希望支付长途电话费,那么免费电话服务也是必要的。
每日备份
确保 ISP 会执行每日备份的例行工作,否则您有可能损失有价值的数据。
流量
研究一下 ISP 的流量限制。如果出现由于网站受欢迎而激增的不可预期的访问量,那么您要确保不会因此支付额外费用。
带宽或内容限制
研究一下 ISP 的带宽和内容限制。如果您计划发布图片或播出视频或音频,请确保您有此权限。
E-mail 功能
请确保 ISP 支持您需要的 e-mail 功能。
数据库访问
如果您计划使用网站数据库中的数据,那么请确保您的 ISP 支持您需要的数据库访问。
<!DOCTYPE> 声明帮助浏览器正确地显示网页。
<!DOCTYPE> 声明
Web 世界中存在许多不同的文档。只有了解文档的类型,浏览器才能正确地显示文档。
HTML 也有多个不同的版本,只有完全明白页面中使用的确切 HTML 版本,浏览器才能完全正确地显示出 HTML 页面。这就是 <!DOCTYPE> 的用处。
<!DOCTYPE> 不是 HTML 标签。它为浏览器提供一项信息(声明),即 HTML 是用什么版本编写的。
提示:W3School 即将升级为最新的 HTML5 文档类型。
来自 W3School 的 HTML 快速参考。
HTML Basic Document
<html> <head> <title>Document name goes here</title> </head> <body> Visible text goes here </body> </html>
Text Elements
<p>This is a paragraph</p> <br> (line break) <hr> (horizontal rule) <pre>This text is preformatted</pre>
Logical Styles
<em>This text is emphasized</em> <strong>This text is strong</strong> <code>This is some computer code</code>
Physical Styles
<b>This text is bold</b> <i>This text is italic</i>
Links, Anchors, and Image Elements
<a href="http://www.example.com/">This is a Link</a> <a href="http://www.example.com/"><img src="URL" alt="Alternate Text"></a> <a href="mailto:webmaster@example.com">Send e-mail</a>A named anchor: <a name="tips">Useful Tips Section</a> <a href="#tips">Jump to the Useful Tips Section</a>
Unordered list
<ul> <li>First item</li> <li>Next item</li> </ul>
Ordered list
<ol> <li>First item</li> <li>Next item</li> </ol>
Definition list
<dl> <dt>First term</dt> <dd>Definition</dd> <dt>Next term</dt> <dd>Definition</dd> </dl>
Tables
<table border="1"> <tr> <th>someheader</th> <th>someheader</th> </tr> <tr> <td>sometext</td> <td>sometext</td> </tr> </table>
Frames
<frameset cols="25%,75%"> <frame src="page1.htm"> <frame src="page2.htm"> </frameset>
Forms
<form action="http://www.example.com/test.asp" method="post/get"> <input type="text" name="lastname" value="Nixon" size="30" maxlength="50"> <input type="password"> <input type="checkbox" checked="checked"> <input type="radio" checked="checked"> <input type="submit"> <input type="reset"> <input type="hidden"> <select> <option>Apples <option selected>Bananas <option>Cherries </select> <textarea name="Comment" rows="60" cols="20"></textarea> </form>
Entities
< is the same as < > is the same as > © is the same as ©
Other Elements
<!-- This is a comment --> <blockquote> Text quoted from some source. </blockquote> <address> Address 1<br> Address 2<br> City<br> </address>
Source : http://www.w3school.com.cn/html/html_quick.asp
HTML 表单用于搜集不同类型的用户输入。
<form> 元素
HTML 表单用于收集用户输入。
<form> 元素定义 HTML 表单:
HTML 表单包含表单元素。
表单元素指的是不同类型的 input 元素、复选框、单选按钮、提交按钮等等。
<input> 元素
<input> 元素是最重要的表单元素。
<input> 元素有很多形态,根据不同的 type 属性。
text | 定义常规文本输入。 |
radio | 定义单选按钮输入(选择多个选择之一) |
submit | 定义提交按钮(提交表单) |
<input type="text"> 定义用于文本输入的单行输入字段:
注释:表单本身并不可见。还要注意文本字段的默认宽度是 20 个字符。
<input type="radio"> 定义单选按钮。
单选按钮允许用户在有限数量的选项中选择其中之一:
<input type="submit"> 定义用于向表单处理程序(form-handler)提交表单的按钮。
表单处理程序通常是包含用来处理输入数据的脚本的服务器页面。
表单处理程序在表单的 action 属性中指定:
action 属性定义在提交表单时执行的动作。
向服务器提交表单的通常做法是使用提交按钮。
通常,表单会被提交到 web 服务器上的网页。
在上面的例子中,指定了某个服务器脚本来处理被提交表单:
<form action="action_page.php">
如果省略 action 属性,则 action 会被设置为当前页面。
Method 属性
method 属性规定在提交表单时所用的 HTTP 方法(GET 或 POST):
<form action="action_page.php" method="GET">
或:
<form action="action_page.php" method="POST">
何时使用 GET?
您能够使用 GET(默认方法):
如果表单提交是被动的(比如搜索引擎查询),并且没有敏感信息。
当您使用 GET 时,表单数据在页面地址栏中是可见的:
action_page.php?firstname=Mickey&lastname=Mouse
注释:GET 最适合少量数据的提交。浏览器会设定容量限制。
何时使用 POST?
您应该使用 POST:
如果表单正在更新数据,或者包含敏感信息(例如密码)。
POST 的安全性更好,因为在页面地址栏中被提交的数据是不可见的。
Name 属性
如果要正确地被提交,每个输入字段必须设置一个 name 属性。
用 <fieldset> 组合表单数据
<fieldset> 元素组合表单中的相关数据
<legend> 元素为 <fieldset> 元素定义标题。
action
属性定义提交表单时要执行的操作。
通常,当用户单击“提交”按钮时,表单数据将发送到服务器上的文件中。
在下面的例子中,表单数据被发送到名为 "action_page.php" 的文件。该文件包含处理表单数据的服务器端脚本:
提交后,将表单数据发送到 "action_page.php":
<form action="/action_page.php"> <label for="fname">First name:</label><br> <input type="text" id="fname" name="fname" value="Bill"><br> <label for="lname">Last name:</label><br> <input type="text" id="lname" name="lname" value="Gates"><br><br> <input type="submit" value="Submit"> </form>
提示:如果省略 action 属性,则将 action 设置为当前页面。
target
属性规定提交表单后在何处显示响应。
target
属性可设置以下值之一:
值 | 描述 |
---|---|
_blank | 响应显示在新窗口或选项卡中。 |
_self | 响应显示在当前窗口中。 |
_parent | 响应显示在父框架中。 |
_top | 响应显示在窗口的整个 body 中。 |
framename | 响应显示在命名的 iframe 中。 |
默认值为 _self
,这意味着响应将在当前窗口中打开。
此处,提交的结果将在新的浏览器标签中打开:
<form action="/action_page.php" target="_blank">
Method 属性
method 属性指定提交表单数据时要使用的 HTTP 方法。
表单数据可以作为 URL 变量(使用 method="get"
)或作为 HTTP post 事务(使用 method="post"
)发送。
提交表单数据时,默认的 HTTP 方法是 GET。
此例在提交表单数据时使用 GET 方法:
<form action="/action_page.php" method="get">
此例在提交表单数据时使用 POST 方法:
<form action="/action_page.php" method="post">
关于 GET 的注意事项:
- 以名称/值对的形式将表单数据追加到 URL
- 永远不要使用 GET 发送敏感数据!(提交的表单数据在 URL 中可见!)
- URL 的长度受到限制(2048 个字符)
- 对于用户希望将结果添加为书签的表单提交很有用
- GET 适用于非安全数据,例如 Google 中的查询字符串
关于 POST 的注意事项:
- 将表单数据附加在 HTTP 请求的正文中(不在 URL 中显示提交的表单数据)
- POST 没有大小限制,可用于发送大量数据。
- 带有 POST 的表单提交无法添加书签
提示:如果表单数据包含敏感信息或个人信息,请务必使用 POST!
Autocomplete 属性
autocomplete
属性规定表单是否应打开自动完成功能。
启用自动完成功能后,浏览器会根据用户之前输入的值自动填写值。
启用自动填写的表单:
<form action="/action_page.php" autocomplete="on">
Novalidate 属性
novalidate
属性是一个布尔属性。
如果已设置,它规定提交时不应验证表单数据。
未设置 novalidate 属性的表单:
<form action="/action_page.php" novalidate>
<input> 元素
最重要的表单元素是 <input> 元素。
<input> 元素根据不同的 type 属性,可以变化为多种形态。
注释:下一章讲解所有 HTML 输入类型。
<select> 元素(下拉列表)
<select> 元素定义下拉列表:
<select name="cars"> <option value="volvo">Volvo</option> <option value="saab">Saab</option> <option value="fiat">Fiat</option> <option value="audi">Audi</option> </select>
<option> 元素定义待选择的选项。
列表通常会把首个选项显示为被选选项。
您能够通过添加 selected 属性来定义预定义选项。
<option value="fiat" selected>Fiat</option>
<textarea> 元素
<textarea> 元素定义多行输入字段(文本域):
<textarea name="message" rows="10" cols="30"> The cat was playing in the garden. </textarea>
<button> 元素
<button> 元素定义可点击的按钮:
HTML5 表单元素
HTML5 增加了如下表单元素:
- <datalist>
- <keygen>
- <output>
注释:默认地,浏览器不会显示未知元素。新元素不会破坏您的页面。
HTML5 <datalist> 元素
<datalist> 元素为 <input> 元素规定预定义选项列表。
用户会在他们输入数据时看到预定义选项的下拉列表。
<input> 元素的 list 属性必须引用 <datalist> 元素的 id 属性。
输入类型:text
<input type="text"> 定义供文本输入的单行输入字段:
输入类型:password
<input type="password"> 定义密码字段:
注释:password 字段中的字符会被做掩码处理(显示为星号或实心圆)。
输入类型:submit
<input type="submit"> 定义提交表单数据至表单处理程序的按钮。
表单处理程序(form-handler)通常是包含处理输入数据的脚本的服务器页面。
在表单的 action 属性中规定表单处理程序(form-handler):
如果您省略了提交按钮的 value 属性,那么该按钮将获得默认文本:
radio
<input type="radio"> 定义单选按钮。
checkbox
<input type="checkbox"> 定义复选框。
复选框允许用户在有限数量的选项中选择零个或多个选项
button
<input type="button> 定义按钮。
输入类型:number
<input type="number"> 用于应该包含数字值的输入字段。
您能够对数字做出限制。
根据浏览器支持,限制可应用到输入字段。
输入类型:date
<input type="date"> 用于应该包含日期的输入字段。
根据浏览器支持,日期选择器会出现输入字段中。
输入类型:color
<input type="color"> 用于应该包含颜色的输入字段。
根据浏览器支持,颜色选择器会出现输入字段中。
输入类型:range
<input type="range"> 用于应该包含一定范围内的值的输入字段。
根据浏览器支持,输入字段能够显示为滑块控件。
输入类型:month
<input type="month"> 允许用户选择月份和年份。
根据浏览器支持,日期选择器会出现输入字段中。
输入类型:week
<input type="week"> 允许用户选择周和年。
根据浏览器支持,日期选择器会出现输入字段中。
输入类型:time
<input type="time"> 允许用户选择时间(无时区)。
根据浏览器支持,时间选择器会出现输入字段中。
输入类型:datetime
<input type="datetime"> 允许用户选择日期和时间(有时区)。
根据浏览器支持,日期选择器会出现输入字段中。
输入类型:datetime-local
<input type="datetime-local"> 允许用户选择日期和时间(无时区)。
根据浏览器支持,日期选择器会出现输入字段中。
输入类型:email
<input type="email"> 用于应该包含电子邮件地址的输入字段。
根据浏览器支持,能够在被提交时自动对电子邮件地址进行验证。
某些智能手机会识别 email 类型,并在键盘增加 ".com" 以匹配电子邮件输入。
输入类型:search
<input type="search"> 用于搜索字段(搜索字段的表现类似常规文本字段)。
输入类型:tel
<input type="tel"> 用于应该包含电话号码的输入字段。
输入类型:url
<input type="url"> 用于应该包含 URL 地址的输入字段。
根据浏览器支持,在提交时能够自动验证 url 字段。
某些智能手机识别 url 类型,并向键盘添加 ".com" 以匹配 url 输入。
value 属性规定输入字段的初始值:
readonly 属性规定输入字段为只读(不能修改):
readonly 属性不需要值。它等同于 readonly="readonly"。
disabled 属性规定输入字段是禁用的。
被禁用的元素是不可用和不可点击的。
被禁用的元素不会被提交。
disabled 属性不需要值。它等同于 disabled="disabled"。
size 属性规定输入字段的尺寸(以字符计):
maxlength 属性规定输入字段允许的最大长度:
如设置 maxlength 属性,则输入控件不会接受超过所允许数的字符。
该属性不会提供任何反馈。如果需要提醒用户,则必须编写 JavaScript 代码。
注释:输入限制并非万无一失。JavaScript 提供了很多方法来增加非法输入。如需安全地限制输入,则接受者(服务器)必须同时对限制进行检查。
autocomplete 属性规定表单或输入字段是否应该自动完成。
当自动完成开启,浏览器会基于用户之前的输入值自动填写值。
提示:您可以把表单的 autocomplete 设置为 on,同时把特定的输入字段设置为 off,反之亦然。
autocomplete 属性适用于 <form> 以及如下 <input> 类型:text、search、url、tel、email、password、datepickers、range 以及 color。
提示:在某些浏览器中,您也许需要手动启用自动完成功能。
novalidate 属性属于 <form> 属性。
如果设置,则 novalidate 规定在提交表单时不对表单数据进行验证。
autofocus 属性是布尔属性。
如果设置,则规定当页面加载时 <input> 元素应该自动获得焦点。
form 属性规定 <input> 元素所属的一个或多个表单。
提示:如需引用一个以上的表单,请使用空格分隔的表单 id 列表。
formaction 属性规定当提交表单时处理该输入控件的文件的 URL。
formaction 属性覆盖 <form> 元素的 action 属性。
formaction 属性适用于 type="submit" 以及 type="image"。
formenctype 属性规定当把表单数据(form-data)提交至服务器时如何对其进行编码(仅针对 method="post" 的表单)。
formenctype 属性覆盖 <form> 元素的 enctype 属性。
formenctype 属性适用于 type="submit" 以及 type="image"。
formmethod 属性
formmethod 属性定义用以向 action URL 发送表单数据(form-data)的 HTTP 方法。
formmethod 属性覆盖 <form> 元素的 method 属性。
formmethod 属性适用于 type="submit" 以及 type="image"。
formnovalidate 属性
novalidate 属性是布尔属性。
如果设置,则规定在提交表单时不对 <input> 元素进行验证。
formnovalidate 属性覆盖 <form> 元素的 novalidate 属性。
formnovalidate 属性可用于 type="submit"。
formtarget 属性规定的名称或关键词指示提交表单后在何处显示接收到的响应。
formtarget 属性会覆盖 <form> 元素的 target 属性。
formtarget 属性可与 type="submit" 和 type="image" 使用。
height 和 width 属性规定 <input> 元素的高度和宽度。
height 和 width 属性仅用于 <input type="image">。
注释:请始终规定图像的尺寸。如果浏览器不清楚图像尺寸,则页面会在图像加载时闪烁
list 属性引用的 <datalist> 元素中包含了 <input> 元素的预定义选项。
min 和 max 属性规定 <input> 元素的最小值和最大值。
min 和 max 属性适用于如需输入类型:number、range、date、datetime、datetime-local、month、time 以及 week。
multiple 属性是布尔属性。
如果设置,则规定允许用户在 <input> 元素中输入一个以上的值。
multiple 属性适用于以下输入类型:email 和 file。
pattern 属性规定用于检查 <input> 元素值的正则表达式。
pattern 属性适用于以下输入类型:text、search、url、tel、email、and password。
提示:请使用全局的 title 属性对模式进行描述以帮助用户。
提示:请在我们的 JavaScript 教程中学习更多有关正则表达式的知识。
placeholder 属性规定用以描述输入字段预期值的提示(样本值或有关格式的简短描述)。
该提示会在用户输入值之前显示在输入字段中。
placeholder 属性适用于以下输入类型:text、search、url、tel、email 以及 password。
required 属性是布尔属性。
如果设置,则规定在提交表单之前必须填写输入字段。
required 属性适用于以下输入类型:text、search、url、tel、email、password、date pickers、number、checkbox、radio、and file.
step 属性规定 <input> 元素的合法数字间隔。
示例:如果 step="3",则合法数字应该是 -3、0、3、6、等等。
提示:step 属性可与 max 以及 min 属性一同使用,来创建合法值的范围。
step 属性适用于以下输入类型:number、range、date、datetime、datetime-local、month、time 以及 week。
form 属性
input 的 form
属性规定 <input>
元素所属的表单。
此属性的值必须等于它所属的 <form> 元素的 id 属性。
input 的 formaction
属性规定当提交表单时,对输入(数据)进行处理的文件的 URL。
注释:该属性会覆盖 <form>
元素的 action
属性。
formaction
属性适用于以下输入类型:submit 和 image。
input 的 formenctype
属性指定提交时应如何编码表单数据(仅适用于 method="post" 的表单)。
注释:此属性将覆盖 <form>
元素的 enctype 属性。
formenctype
属性适用于以下输入类型:submit 和 image。
input 的 formmethod
属性定义了将表单数据发送到 action URL 的 HTTP 方法。
注释:此属性将覆盖 <form>
元素的 method 属性。
formmethod
属性适用于以下输入类型:submit 和 image。
表单数据可以作为 URL 变量(method="get")或作为 HTTP post 事务(method="post")发送。
关于 GET 的注意事项:
- 以名称/值对的形式将表单数据追加到 URL
- 永远不要使用 GET 发送敏感数据!(提交的表单数据在 URL 中可见!)
- URL 的长度受到限制(2048 个字符)
- 对于用户希望将结果添加为书签的表单提交很有用
- GET 适用于非安全数据,例如 Google 中的查询字符串
关于 POST 的注意事项:
- 将表单数据附加在 HTTP 请求的正文中(不在 URL 中显示提交的表单数据)
- POST 没有大小限制,可用于发送大量数据。
- 带有 POST 的表单提交无法添加书签
提示:如果表单数据包含敏感信息或个人信息,请务必使用 POST!
input 的 formtarget
属性指定一个名称或关键字,该名称或关键字规定在提交表单后在何处显示收到的响应。
注释:此属性将覆盖 <form>
元素的 target 属性。
formtarget
属性适用于以下输入类型:submit 和 image。
input 的 formnovalidate
属性规定提交时不应验证 <input> 元素。
注释:此属性将覆盖 <form>
元素的 novalidate 属性。
formnovalidate
属性适用于以下输入类型:submit。
novalidate
属性是 <form>
属性。
如果已设置,novalidate 属性规定在提交时不应验证所有表单数据。