diff --git a/files/zh-cn/learn/html/howto/add_a_hit_map_on_top_of_an_image/index.md b/files/zh-cn/learn/html/howto/add_a_hit_map_on_top_of_an_image/index.md index 22c13e36f56377..7894d1393865b8 100644 --- a/files/zh-cn/learn/html/howto/add_a_hit_map_on_top_of_an_image/index.md +++ b/files/zh-cn/learn/html/howto/add_a_hit_map_on_top_of_an_image/index.md @@ -3,114 +3,115 @@ title: Add a hit map on top of an image slug: Learn/HTML/Howto/Add_a_hit_map_on_top_of_an_image translation_of: Learn/HTML/Howto/Add_a_hit_map_on_top_of_an_image --- -
-

现在我们将学习如何设置图像映射,先讨论他的缺点。

-
+现在我们将学习如何设置图像映射,先讨论他的缺点。 - - - - - - - - - - + + + + + + + + + +
前提:你应该已经知道如何create a basic HTML document 以及add accessible images to a webpage.
目标:学习如何将一张图片的不同区域链接到不同页面。
前提: + 你应该已经知道如何create a basic HTML document + 以及add accessible images to a webpage. +
目标:学习如何将一张图片的不同区域链接到不同页面。
-
-

警告: 本文仅讨论客户端图像映射。不要使用服务器端图像映射,这需要用户拥有鼠标。

-
+> **警告:** 本文仅讨论客户端图像映射。不要使用服务器端图像映射,这需要用户拥有鼠标。 -

图像映射和它的缺点

+## 图像映射和它的缺点 -

当你在{{htmlelement('a')}}标签中嵌套图像, 整个图像是链接到一个网页的。但在图像映射中,包含多个活动区域(称为“热点”),可以链接到不同的资源地址。

+当你在{{htmlelement('a')}}标签中嵌套图像, 整个图像是链接到一个网页的。但在图像映射中,包含多个活动区域(称为“热点”),可以链接到不同的资源地址。 -

图像映射原本非常流行于导航策略,但是前提需要考虑它的性能和可访问性。

+图像映射原本非常流行于导航策略,但是前提需要考虑它的性能和可访问性。 -

Text links (perhaps styled with CSS) 比图像映射更具优势:文本链接更轻量级、好维护、更易于 SEO,而且支持更多形式需求的访问(如,屏幕阅读器、纯文本浏览器、翻译服务等)。

+[Text links](/en-US/Learn/HTML/Howto/Create_a_hyperlink) (perhaps styled with CSS) 比图像映射更具优势:文本链接更轻量级、好维护、更易于 SEO,而且支持更多形式需求的访问(如,屏幕阅读器、纯文本浏览器、翻译服务等)。 -

如何正确的插入一张图像映射

+## 如何正确的插入一张图像映射 -

步骤 1: 图片

+### 步骤 1: 图片 -

不是所有图片都合适。

+不是所有图片都合适。 - +- 图片必须明确表明当用户跟随图片链接时会发生什么。 `alt` 属性是必须的, 但很多人注意不到。 +- 图片必须明确指出热点的开始和结束位置。 +- 在任何尺寸的视口下,热点都需要足够大,方便用户可以点击。多大足够呢?[72 × 72 CSS pixels 是一个推荐的最小尺寸,](http://uxmovement.com/mobile/finger-friendly-design-ideal-mobile-touch-target-sizes/) 包括触摸目标之间额外的间隙。在 [50languages.com](http://www.goethe-verlag.com/book2/) (as of time of writing) 上的世界地图可以完美诠释这一点。 用户点击 Russia 或 North America 要比 Albania 或 Estonia 容易得多。 -

插入图片的方式 和通常一样 (用 {{htmlelement("img")}} 标签 和 {{htmlattrxref("alt",'img')}} 文本). 如果图片只是用作导航容器, 你可以设置图片的 alt="", 改在后面{{htmlelement('area')}} 的{{htmlattrxref("alt",'area')}} 中提供合适的文本。

+插入图片的方式 [和通常一样](/en-US/Learn/HTML/Howto/Add_images_to_a_webpage) (用 {{htmlelement("img")}} 标签 和 {{htmlattrxref("alt",'img')}} 文本). 如果图片只是用作导航容器, 你可以设置图片的 `alt="", 改在后面`{{htmlelement('area')}} 的{{htmlattrxref("alt",'area')}} 中提供合适的文本。 -

你将需要一个特殊的 {{htmlattrxref("usemap","img")}} 属性。 为图像映射提供一个唯一标识,这个标识不能包含空格。将这个标识 (preceded by a hash) 作为 usemap 属性的值:

+你将需要一个特殊的 {{htmlattrxref("usemap","img")}} 属性。 为图像映射提供一个唯一标识,这个标识不能包含空格。将这个标识 (preceded by a hash) 作为 `usemap` 属性的值: -
<img
+```html
+
+  usemap="#example-map-1" />
+```
 
-

步骤 2: 激活你的热点

+### 步骤 2: 激活你的热点 -

在这一步中, 将所有代码放置 {{htmlelement('map')}} 标签中。<map> 只需要一个属性, 设置{{htmlattrxref("name","map")}} 和上面usemap属性一样的map值:

+在这一步中, 将所有代码放置 {{htmlelement('map')}} 标签中。`` 只需要一个属性, 设置{{htmlattrxref("name","map")}} 和上面`usemap属性一样的map值:` -
<map name="example-map-1">
+```html
+
 
-</map>
+
+``` -

在<map> 元素中,我们需要嵌套 {{htmlelement('area')}} 元素。一个 <area> 元素对应一个热点.。为保持键盘导航的直观, 请确保<area> 的源顺序和视觉上的热点顺序一致。

+`在` 元素中,我们需要嵌套 {{htmlelement('area')}} 元素。一个 `` 元素对应一个热点.。为保持键盘导航的直观, 请确保`` 的源顺序和视觉上的热点顺序一致。 -

<area> 元素是空元素, 但是需要包含 4 个属性:

+`` 元素是空元素, 但是需要包含 4 个属性: -
-
{{htmlattrxref('shape','area')}} {{htmlattrxref('coords','area')}}
-
-

shape 有 4 个值:circle, rect, poly, and default. ( default <area> 表示除去您定义的其他热点的剩余空间.) 根据你选择的形状需要在 coords 中提供对应的坐标信息。

+- {{htmlattrxref('shape','area')}} {{htmlattrxref('coords','area')}} -
    -
  • 对于 circle, 提供中心的 x、y 坐标,还需要提供半径。
  • -
  • 对于 rectangle, 提供左上角和右下角的 x、y 坐标。
  • -
  • 对于 polygon, 提供每个角的 x、y 坐标(至少 6 个值)。
  • -
+ - : `shape` 有 4 个值:`circle`, `rect`, `poly`, and `default`. ( `default` `` 表示除去您定义的其他热点的剩余空间.) 根据你选择的形状需要在 `coords` 中提供对应的坐标信息。 -

坐标用 CSS 像素 px 表示。

+ - 对于 circle, 提供中心的 x、y 坐标,还需要提供半径。 + - 对于 rectangle, 提供左上角和右下角的 x、y 坐标。 + - 对于 polygon, 提供每个角的 x、y 坐标(至少 6 个值)。 -

In case of overlap, source order carries the day.

-
-
{{htmlattrxref('href','area')}}
-
您需要链接的资源地址。 如果您不希望当前区域链接到任何地方 (比方说,如果您正在创建一个空心圆),您可以将这个属性保留为空。
-
{{htmlattrxref('alt','area')}}
-
一个必选属性,告诉用户链接的指向或功能说明。alt 文本仅在图像不可用时显示。请参阅我们的guidelines for writing accessible link text。如果 href 属性为空并且整个图像已经具备了 alt 属性,则可以设置 alt=""。 -
-
+ 坐标用 CSS 像素 px 表示。 -
<map name="example-map-1">
-  <area shape="circle" coords="200,250,25"
-    href="page-2.html" alt="circle example" />
+    In case of overlap, source order carries the day.
 
+- {{htmlattrxref('href','area')}}
+  - : 您需要链接的资源地址。 如果您不希望当前区域链接到任何地方 (比方说,如果您正在创建一个空心圆),您可以将这个属性保留为空。
+- {{htmlattrxref('alt','area')}}
+  - : 一个必选属性,告诉用户链接的指向或功能说明。`alt` 文本仅在图像不可用时显示。请参阅我们的[guidelines for writing accessible link text](/en-US/Learn/HTML/Howto/Create_a_hyperlink#Writing_accessible_link_text)。如果 `href` 属性为空并且整个图像已经具备了 `alt` 属性,则可以设置 `alt=""`。
 
-  <area shape="rect" coords="10, 5, 20, 15"
-    href="page-3.html" alt="rectangle example" />
+```html
+
+  circle example
 
-</map>
-

步骤 3: 确保它的可用范围

+ rectangle example -

你还并没有完成除非你很严格的在多个浏览器和终端测试图像映射功能。尝试仅用键盘操作。尝试关掉图片。

+
+``` -

如果你的图像映射宽度大于 240px,你将需要进一步调整来适应网站的响应式。仅调整小屏幕下的图片是不够的,因为不变的坐标无法适应这样的图像。

+### 步骤 3: 确保它的可用范围 -

如果必须使用图像映射, 您可以看看Matt Stow's jQuery plugin.。另外,Dudley Storey 示范了一种方法 use SVG for an image map effect,以及后来的ombined SVG-raster hack for bitmap images.

+你还并没有完成除非你很严格的在多个浏览器和终端测试图像映射功能。尝试仅用键盘操作。尝试关掉图片。 -

Learn more

+如果你的图像映射宽度大于 240px,你将需要进一步调整来适应网站的响应式。仅调整小屏幕下的图片是不够的,因为不变的坐标无法适应这样的图像。 - +如果必须使用图像映射, 您可以看看[Matt Stow's jQuery plugin.](https://github.com/stowball/jQuery-rwdImageMaps)。另外,Dudley Storey 示范了一种方法 [use SVG for an image map effect](http://thenewcode.com/696/Using-SVG-as-an-Alternative-To-Imagemaps),以及后来的[ombined SVG-raster hack](http://thenewcode.com/760/Create-A-Responsive-Imagemap-With-SVG) for bitmap images. + +## Learn more + +- {{htmlelement("img")}} +- {{htmlelement("map")}} +- {{htmlelement("area")}} +- [Online image map editor](http://www.maschek.hu/imagemap/imgmap) +- [Advice on handling email clients](http://blog.goolara.com/2014/06/05/image-maps-revisited/) diff --git a/files/zh-cn/learn/html/howto/author_fast-loading_html_pages/index.md b/files/zh-cn/learn/html/howto/author_fast-loading_html_pages/index.md index 4b94f16ddc2239..5327428495cb6b 100644 --- a/files/zh-cn/learn/html/howto/author_fast-loading_html_pages/index.md +++ b/files/zh-cn/learn/html/howto/author_fast-loading_html_pages/index.md @@ -8,174 +8,159 @@ tags: translation_of: Learn/HTML/Howto/Author_fast-loading_HTML_pages original_slug: Web/Guide/HTML/Tips_for_authoring_fast-loading_HTML_pages --- -

以下技巧都是基于通用的知识和经验。

+以下技巧都是基于通用的知识和经验。 -

一个好的页面不仅要给访客提供一个更有交互性的站点,同时也需要降低你的服务器压力和网络请求。后者对于那些高访问量的站点,或在有爆炸性新闻出现等特殊情况下会出现流量突增的站点来说尤为关键。

+一个好的页面不仅要给访客提供一个更有交互性的站点,同时也需要降低你的服务器压力和网络请求。后者对于那些高访问量的站点,或在有爆炸性新闻出现等特殊情况下会出现流量突增的站点来说尤为关键。 -

页面加载性能的优化不仅仅是针对那些带宽有限的拨号上网或移动设备用户需要看的内容,对于提供给宽带用户访问的内容同样重要并且可以导致巨大的提升,哪怕对于那些拥有最快网速的访客。

+页面加载性能的优化不仅仅是针对那些带宽有限的拨号上网或移动设备用户需要看的内容,对于提供给宽带用户访问的内容同样重要并且可以导致巨大的提升,哪怕对于那些拥有最快网速的访客。 -

Tips

+## Tips -

减小页面的大小

+### 减小页面的大小 -

直至今日,页面的大小仍是页面加载性能的最重要因素。

+直至今日,页面的大小仍是页面加载性能的最重要因素。 -

通过压缩——排除不必要空格,注释,和将脚本、CSS 放入外部文件等减小页面的大小,可以在页面结构改变很小的情况下提高下载性能。

+通过压缩——排除不必要空格,注释,和将脚本、CSS 放入外部文件等减小页面的大小,可以在页面结构改变很小的情况下提高下载性能。 -

诸如 HTML Tidy 这类的工具可以从有效的 HTML 源文件中自动截去行首空格和额外的空行,其它工具则可以通过重新格式化源代码来压缩 JavaScript 或者通过混淆源码将长标识符替换为短标识符来减小文件大小。

+诸如 [HTML Tidy](http://tidy.sourceforge.net/) 这类的工具可以从有效的 HTML 源文件中自动截去行首空格和额外的空行,其它工具则可以通过重新格式化源代码来压缩 JavaScript 或者通过混淆源码将长标识符替换为短标识符来减小文件大小。 -

最小化文件数量

+### 最小化文件数量 -

减少一个页面引用的文件数量可以降低在下载一个页面的过程中需要的HTTP请求数量,从而减少这些请求的收发时间。

+减少一个页面引用的文件数量可以降低在下载一个页面的过程中需要的[HTTP](/en-US/docs/HTTP)请求数量,从而减少这些请求的收发时间。 -

根据其缓存设置,浏览器可能会为每个所引用的文件发送一个带 If-Modified-Since 的请求给网络服务器,以查询这些文件自上次加载后是否有被修改。查询引用文件上次修改时间会花费太多时间,导致网页首屏延迟,这是因为在渲染页面之前浏览器必须确认每个文件的修改时间。

+根据其缓存设置,浏览器可能会为每个所引用的文件发送一个带 [If-Modified-Since](/zh-CN/docs/Web/HTTP/Headers/If-Modified-Since) 的请求给网络服务器,以查询这些文件自上次加载后是否有被修改。查询引用文件上次修改时间会花费太多时间,导致网页首屏延迟,这是因为在渲染页面之前浏览器必须确认每个文件的修改时间。 -

If you use background images a lot in your CSS, you can reduce the number of HTTP lookups needed by combining the images into one, known as an image sprite. Then you just apply the same image each time you need it for a background and adjust the x/y coordinates appropriately. This technique works best with elements that will have limited dimensions, and will not work for every use of a background image. However, the fewer HTTP requests and single image caching can help reduce page-load time.

+If you use background images a lot in your CSS, you can reduce the number of HTTP lookups needed by combining the images into one, known as an image sprite. Then you just apply the same image each time you need it for a background and adjust the x/y coordinates appropriately. This technique works best with elements that will have limited dimensions, and will not work for every use of a background image. However, the fewer HTTP requests and single image caching can help reduce page-load time. -

使用 CDN

+### 使用 CDN -

For the purposes of this article, a CDN is a means to reduce the physical distance between your server and your visitor. As the distance between your server origin and visitor increases, the load times will increase. Suppose your website server is located in the United States and it has a visitor from India; the page load time will be much higher for the Indian visitor compared to a visitor from the US.

+For the purposes of this article, a CDN is a means to reduce the physical distance between your server and your visitor. As the distance between your server origin and visitor increases, the load times will increase. Suppose your website server is located in the United States and it has a visitor from India; the page load time will be much higher for the Indian visitor compared to a visitor from the US. -

A CDN is a geographically distributed network of servers that work together to shorten the distance between the user and your website. CDNs store cached versions of your website and serve them to visitors via the network node closest to the user, thereby reducing latency.

+A CDN is a geographically distributed network of servers that work together to shorten the distance between the user and your website. CDNs store cached versions of your website and serve them to visitors via the network node closest to the user, thereby reducing [latency](http://www.webperformancetoday.com/2012/04/02/latency-101-what-is-latency-and-why-is-it-such-a-big-deal/). -

Further reading:

+Further reading: - +- [Understanding CDNs](https://www.incapsula.com/cdn-guide/what-is-cdn-how-it-works.html) -

减少域名查找

+### 减少域名查找 -

每个独立的域名都会消耗 DNS 查找的时间,页面加载时间会随着独立域名数量、CSS 链接数量、JavaScript 还有图片资源的数量增加而增加。

+每个独立的域名都会消耗 DNS 查找的时间,页面加载时间会随着独立域名数量、CSS 链接数量、JavaScript 还有图片资源的数量增加而增加。 -

这条可能算不上实用,然而,在你的页面中尽量少的使用来自不同域名的资源链接。

+这条可能算不上实用,然而,在你的页面中尽量少的使用来自不同域名的资源链接。 -

缓存重用的内容

+### 缓存重用的内容 -

确保任何内容可以被缓存,并且拥有一个合理的有效期。

+确保任何内容可以被缓存,并且拥有一个合理的有效期。 -

特别要注意 Last-Modified 头,它会让页面高效的缓存。自上次修改之后,这部分 header 指示将信息传递给用户代理(要加载这些信息的文件)。大部分网页服务器会自动追加 Last-Modified header 部分到静态页面(如 .html.css),基于上次修改的日期储存在文件系统中。至于动态页面(如 .php.aspx),便无法做到,这部分请求的头也就不会被发送出去。

+特别要注意 `Last-Modified` 头,它会让页面高效的缓存。自上次修改之后,这部分 header 指示将信息传递给用户代理(要加载这些信息的文件)。大部分网页服务器会自动追加 `Last-Modified` header 部分到静态页面(如 `.html`,`.css`),基于上次修改的日期储存在文件系统中。至于动态页面(如 `.php`,`.aspx`),便无法做到,这部分请求的头也就不会被发送出去。 -

所以,特别是动态产生的页面,花点时间研究一下这个课题会是有益的。或许有些什么关联,无论怎样,这么做在那些不能被缓存的网页中都会节省很多的页面请求。

+所以,特别是动态产生的页面,花点时间研究一下这个课题会是有益的。或许有些什么关联,无论怎样,这么做在那些不能被缓存的网页中都会节省很多的页面请求。 -

更多信息:

+更多信息: -
    -
  1. HTTP Conditional Get for RSS Hackers
  2. -
  3. HTTP 304: Not Modified
  4. -
  5. HTTP ETag on Wikipedia
  6. -
  7. Caching in HTTP
  8. -
+1. [HTTP Conditional Get for RSS Hackers](http://fishbowl.pastiche.org/2002/10/21/http_conditional_get_for_rss_hackers) +2. [HTTP 304: Not Modified](http://annevankesteren.nl/archives/2005/05/http-304) +3. [HTTP ETag on Wikipedia](http://en.wikipedia.org/wiki/HTTP_ETag) +4. [Caching in HTTP](http://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html) -

高效地排列页面组件

+### 高效地排列页面组件 -

在页面最初显示时,会首先下载页面内容以及所需的 CSS 和 JavaScript,这样在页面加载时用户可以最快获得外观的反馈。由于内容通常都是文本,有利于在传输过程中压缩,因此给用户以更快的响应。

+在页面最初显示时,会首先下载页面内容以及所需的 CSS 和 JavaScript,这样在页面加载时用户可以最快获得外观的反馈。由于内容通常都是文本,有利于在传输过程中压缩,因此给用户以更快的响应。 -

页面中任何具有动态特性的资源需要在页面被完全加载后才可以使用,所以最好在初始化时关闭动态特性(disable dynamic features),等页面加载完后再打开它。这样 JavaScript 就会在网页内容之后才加载,有助于提升页面加载的整体表现。

+页面中任何具有动态特性的资源需要在页面被完全加载后才可以使用,所以最好在初始化时关闭动态特性(disable dynamic features),等页面加载完后再打开它。这样 JavaScript 就会在网页内容之后才加载,有助于提升页面加载的整体表现。 -

减少内联脚本的数量

+### 减少内联脚本的数量 -

内联脚本在页面加载过程中消耗很多资源,因为解析器认为内联脚本会改变页面结构。通常,尽量少的使用内联脚本和减少用document.write()来输出内容,在一定情况下可以加速整体页面的载入。现在浏览器中一般使用现代的 W3C DOM 方法操作页面内容,优于使用document.write()的传统方法。

+内联脚本在页面加载过程中消耗很多资源,因为解析器认为内联脚本会改变页面结构。通常,尽量少的使用内联脚本和减少用`document.write()`来输出内容,在一定情况下可以加速整体页面的载入。现在浏览器中一般使用现代的 W3C DOM 方法操作页面内容,优于使用`document.write()`的传统方法。 -

使用现代 CSS 和合法标记

+### 使用现代 CSS 和合法标记 -

使用现代 CSS 减少标记(markup)的用量,可以减少对(spacer)图片的需求。在布局方面,图片通常可以用风格化的文本(text)来替代,这样会“节省”许多资源。

+使用现代 CSS 减少标记(markup)的用量,可以减少对(spacer)图片的需求。在布局方面,图片通常可以用风格化的文本(text)来替代,这样会“节省”许多资源。 -

使用合法标记还有其它优点。首先,浏览器在解释 HTML 时无需做错误校正(除了一些哲理性的问题,例如,是允许用户输入格式不一致,而后再用程序“校准”或统一化呢?还是加强约束规则,限制用户输入的格式?)。

+使用合法标记还有其它优点。首先,浏览器在解释 HTML 时无需做错误校正(除了一些哲理性的问题,例如,是允许用户输入格式不一致,而后再用程序“校准”或统一化呢?还是加强约束规则,限制用户输入的格式?)。 -

再者,合法标记可以让那些给你的网站做预处理的工具功能最大化。例如,HTML Tidy 可以移除空白(whitespace)和可选的末尾标记(ending tags);然而,在有严重的错误标记的网页中这些工具便无法工作。

+再者,合法标记可以让那些给你的网站做预处理的工具功能最大化。例如,[HTML Tidy](http://tidy.sourceforge.net/) 可以移除空白(whitespace)和可选的末尾标记(ending tags);然而,在有严重的错误标记的网页中这些工具便无法工作。 -

给内容分块

+### 给内容分块 -

使用 table 布局是一种不应该再采用的传统方法,而应运用 floats, positioning, flexbox, 或 grids 来布局。

+使用 table 布局是一种不应该再采用的传统方法,而应运用 [floats](/zh-CN/docs/Learn/CSS/CSS_layout/Floats), [positioning](/zh-CN/docs/Learn/CSS/CSS_layout/Positioning), [flexbox](/zh-CN/docs/Learn/CSS/CSS_layout/Flexbox), 或 [grids](/zh-CN/docs/Learn/CSS/CSS_layout/Grids) 来布局。 -

当然,table 仍是不失为一种有效的展示表格数据的方式。为了帮助浏览器更快速的渲染你的页面,你应该避免嵌套 table。

+当然,table 仍是不失为一种有效的展示表格数据的方式。为了帮助浏览器更快速的渲染你的页面,你应该避免嵌套 table。 -

相较于这种深度的嵌套:

+相较于这种深度的嵌套: -
<table>
-  <table>
-    <table>
+```html
+
+  
+
... - </table> - </table> -</table> +
+ + +``` -

用下图这样的非嵌套结构更好一些:

+用下图这样的非嵌套结构更好一些: -
<table>...</table>
-<table>...</table>
-<table>...</table>
+```html +...
+...
+...
+``` -

可参见 CSS Flexible Box LayoutCSS Grid Layout 规范。

+可参见 [CSS Flexible Box Layout](https://www.w3.org/TR/css-flexbox-1/) 和 [CSS Grid Layout](https://www.w3.org/TR/css-grid-1/) 规范。 -

Minify and compress SVG assets

+### Minify and compress SVG assets -

SVG produced by most drawing applications often contains unnecessary metadata which can be removed. Configure your servers, apply gzip compression for SVG assets.

+SVG produced by most drawing applications often contains unnecessary metadata which can be removed. Configure your servers, apply gzip compression for SVG assets. -

Minify and compress your images

+### Minify and compress your images -

Large images cause your page to take more time to load. Consider compressing your images before adding them to your page, using compression features built into image-manipulation tools such as Photoshop, or using a specialized tool such as Compress Jpeg or Tiny PNG,.

+Large images cause your page to take more time to load. Consider compressing your images before adding them to your page, using compression features built into image-manipulation tools such as Photoshop, or using a specialized tool such as [Compress Jpeg](https://compressjpeg.com/) or [Tiny PNG](https://tinypng.com/),. -

指定图像和表格的大小

+### 指定图像和表格的大小 -

如果浏览器可以即时决定你的照片(images)和表格(tables)宽高,它在展示网页时就不必进行内容重新排版。这不仅可以加速网页的显示,还能在网页完成加载的过程中防止恼人的布局改变。因此,图片的 heightwidth 应尽可能确定下来。

+如果浏览器可以即时决定你的照片(images)和表格(tables)宽高,它在展示网页时就不必进行内容重新排版。这不仅可以加速网页的显示,还能在网页完成加载的过程中防止恼人的布局改变。因此,图片的 `height` 和 `width` 应尽可能确定下来。 -

表格可以使用 CSS 选择器:综合性能:

+表格可以使用 CSS 选择器:综合性能: -
table-layout: fixed;
+```css +table-layout: fixed; +``` -

<col><colgroup> 元素来指定列宽。

+用 [``](/en-US/docs/Web/HTML/Element/col) 和 [``](/en-US/docs/Web/HTML/Element/colgroup) 元素来指定列宽。 -

合理的选择 user-agent

+### 合理的选择 user-agent -

为使页面设计得到极大提升,应确保在工程中指定一个合理的 user-agent。不要奢求你的内容在所有浏览器中都完美的展现,特别是在那些低版本的浏览器中。

+为使页面设计得到极大提升,应确保在工程中指定一个合理的 user-agent。不要奢求你的内容在所有浏览器中都完美的展现,特别是在那些低版本的浏览器中。 -

理想情况下,你的页面运行的最小环境要基于现代浏览器,这个浏览器起码要支持一些相关的标准(如 html5 标准)。可以是最近版本的火狐,IE,谷歌 Chrome,Opera 还有 Safari。

+理想情况下,你的页面运行的最小环境要基于现代浏览器,这个浏览器起码要支持一些相关的标准(如 html5 标准)。可以是最近版本的火狐,IE,谷歌 Chrome,Opera 还有 Safari。 -

需要注意一下,这篇文章当中的许多 tips 都是些技术性常识,可以不必担心浏览器的支持需求而应用到任何 user-agent 和网页中去。

+需要注意一下,这篇文章当中的许多 tips 都是些技术性常识,可以不必担心浏览器的支持需求而应用到任何 user-agent 和网页中去。 -

尽可能使用 async 和 defer

+### 尽可能使用 async 和 defer -

确保 JavaScript 脚本兼容 asyncdefer,任何时候都要尽可能使用 async ,特别是当你有较多的 script 标签时。

+确保 JavaScript 脚本兼容 [async](/en-US/docs/HTML/Element/script#Attributes) 和 [defer](/en-US/docs/HTML/Element/script#Attributes),任何时候都要尽可能使用 [async](/en-US/docs/HTML/Element/script#Attributes) ,特别是当你有较多的 script 标签时。 -

这样在加载 JavaScript 的过程中页面就不会重新绘制,否则,浏览器在不具有这些特性的 script 标签后就不会重绘任何东西。

+这样在加载 JavaScript 的过程中页面就不会重新绘制,否则,浏览器在不具有这些特性的 script 标签后就不会重绘任何东西。 -

注意:这些特性在页面第一次加载时会有所帮助,你可以这样用但不能指靠它在所有的浏览器中起作用。如果你遵循指南(guidelines)写出了非常优秀的 JavaScript 代码,也不必要再去修改它了。

+注意:这些特性在页面第一次加载时会有所帮助,你可以这样用但不能指靠它在所有的浏览器中起作用。如果你遵循指南(guidelines)写出了非常优秀的 JavaScript 代码,也不必要再去修改它了。 -

页面结构示例

+## 页面结构示例 -