****
`
使用 Vimeo
Vimeo 界面比新的 You Tube 界面更容易理解和使用。对于这两种在线服务,代码很容易下载并嵌入到页面中。他们的表现似乎没有什么不同。
Vimeo 视频的基础版是免费的,但不能用于商业广告,比如销售产品或服务。允许个人使用、非商业和小规模生产单位。对于商业用途,pro 版本的费用为每年 60 美元或每月 9.95 美元。
无论你注册哪个,Vimeo 都会提供一个简单的上传程序。首先阅读网站上的三条规则,然后点击顶部菜单上的上传项目。您将看到一个窗口,该窗口允许您浏览硬盘以找到该视频。嵌入代码很简单,只需将鼠标悬停在视频上或单击它,然后单击视频开始帧上的嵌入按钮(右边第二个)。代码将会出现。将代码复制并粘贴到您的网页中。你可以选择播放器的颜色和大小。Vimeo 可能是最容易使用和定制的服务。
清晰的建议见[
vimeo.com/faq#what_is_embedding](http://vimeo.com/faq#what_is_embedding)
。
就在我写完这本书的时候,Vimeo 发布了一个更新的网站。该网站的所有细节都不太完整,但注册和上传过程似乎与前面的说明类似。
图 6-5 显示了使用清单 6-5 嵌入的 Vimeo 托管的蝴蝶电影。
图 6-5。 Vimeo 主持的视频。请注意 Vimeo 徽标。
图 6-5 的嵌入式 Vimeo 代码可以在清单 6-5 中找到(为了安全起见,我修改了一些细节)。和 YouTube 一样,在没有语义视频标签或后备的情况下,单独使用 Vimeo 代码时,视频页面可以非常简单。这是一种将视频放到网站上的简单方法,因为它避免了将视频文件转换成三种文件格式.mp4
、.webm
和.ogg
。
该文件不会在 HTML5 验证器中进行验证,因为有些不推荐使用的属性(如webkitallowfullscreen
)不允许与<iframe>
标签一起使用。然而,只要视频在播放,您的客户可能就不会关心它是否有效。
清单 6-5 包含在本章的可下载文件中,但是视频不能在 IE 7 或 IE 8 中播放。出于安全考虑,清单中的 Vimeo 身份号码已被替换为xxxxxxxx
。然而,使用包含<video>
标签的版本,你仍然可以在 IE 7 和 IE 8 之外的任何浏览器中观看视频。此外,如果您将自己的 Vimeo 托管视频插入到该文件中,您将能够在任何浏览器中试验和查看结果。
您可以单独使用 Vimeo 剪辑,也可以在使用 HTML5 <video>
标签的页面中使用 Vimeo 剪辑作为后备。
要单独使用 Vimeo 剪辑,只需删除清单 6-5 中粗体显示的代码。无论哪种方式,使用您自己的 Vimeo 托管的视频,该视频将在所有浏览器中显示,包括 IE 7 和 IE 8。
清单 6-5。 使用 HTML5 视频标签嵌入 Vimeo 视频(【video-tag-and-vimeo.html】??) **
`<!doctype html>
HTML5 video tag with Vimeo fallback code
html5 video tag with vimeo fallback
****
****
****
****
Butterfly and orange from
Fred Bloggs on
Vimeo
** **
`
下一节描述了两个简单的 JavaScript 方法,允许视频在任何浏览器中观看,包括 IE 7 和 IE 8。他们都需要一两个小的 JavaScript 文件,这些文件可以从本书的页面[www.apress.com](http://www.apress.com)
下载
Flowplayer 和操作系统 FLV 在 IE 7 和 IE 8 上有所退步
如果您的客户不希望使用 YouTube 或 Vimeo,接下来将介绍另外两种解决方案。这些使用 HTML5 视频标签和一小段 JavaScript:
Adobe Shockwave Flash 在 Flowplayer 和每个人的视频技术的一点帮助下播放.mp4
视频文件。
Free JavaScript player OS FLV (with or without <video>
tag).
Adobe 声称 98%的 Windows 电脑都安装了 Adobe Flash 视频播放器。因此,Shockwave Flash 文件可以用作 IE 7 和 IE 8 的后备文件。只有当浏览器无法播放任何 HTML5 源文件时,Flash 视频播放器才会被激活。IE 7 和 IE 8 不理解 HTML5 视频标签;因此,它们将忽略 HTML5 源元素并播放回退视频。
使用人人视频(VfE)解决方案
IE 7 和 IE 8 的后备文件是一个。借助 Flowplayer 中的 JavaScript 片段,在 Shockwave 播放器中启用的 mp4
文件。这个解决方案是由 Kroc Camen 设计的,他将其命名为人人视频。他发明了 VfE 来鼓励开发者使用 HTML5 和 IE 7 和 IE 8 的后备,并阻止他们依赖 Flash 和在 Flash 容器中包装.mp4
(又名 H.264)。引用卡门的话:“令人震惊的是,这么多网站已经有了他们想展示给你的 H.264 视频文件,却坚持将它们包装在一个不可靠、缓慢的 Flash 外壳中,没有任何退路。”
他发明 VfE 的第二个原因是 iPhones 和 iPads 的出现,它们不使用 Flash。他还敦促开发者提供链接,作为下载视频文件的最后手段。VfE 非常成功,但正如 Kroc Camen 所说,“视频对每个人来说都是一个正在消失的媒介。它的存在是为了弥合 Flash 和 HTML5 之间的差距。”
不幸的是,在写作时,他的网站只显示 HTML 代码,而不是网页。他的网址是[
camendesign.co.uk/code/video_for_everybody.html](http://camendesign.co.uk/code/video_for_everybody.html)
。
视频将出现如图图 6-6 所示。
图 6-6。 视频出现在 IE 7 和 IE 8 中。请注意图片下方列出的可下载视频文件。
Jonathan Neal 为每个人制作了一个有趣且内容丰富的在线视频代码生成器。它在[
sandbox.thewikies.com/vfe-generator/](http://sandbox.thewikies.com/vfe-generator/)
以下是 Kroc Camen 解决方案的要求:
Poster : Create a picture or title page as the opening picture of the video. To use the still image in the video, run the video and stop at the appropriate point. Right-click it to save the picture as a .jpg
file.
Three video files : Use your file converter to make three versions of videos and generate files in .mp4
, .ogv
and .webm
formats. Listing 6-5 assumes that the poster and three video files are located in a folder named video
.
Flowplayer 文件 :到 flow player 网站
[
flowplayer.org/download/index.html](http://flowplayer.org/download/index.html)
或者在本书的页面[
www.apress.com](http://www.apress.com)
从配套网站下载免费版的 Flowplayer .免费版本可用于商业用途。还提供更全面的商业版本。将两个文件flowplayer-3.2.7.swf
和flowplayer.controls-3.2.5.swf
放在最终包含该网页的文件夹中。(当您阅读本文时,FlowPlayer 版本号可能已经更改)。
网页 : 清单 6-6 是为大家改编的 Kroc Camen 的视频。它创建了一个典型的 web 页面,但是为了清楚起见,该页面只包含视频。该页面在 W3C HTML5 验证器中进行验证。
清单 6-6。【camen-flowplayer-wagon.html 使用 VfE 创建嵌入视频的页面
`<!doctype html>
Camen-flowplayer-wagon
Download video: MP4 format | Ogg format | WebM format ` `
`
注意 视频适用于 IE 7 和 IE 8,以及所有现代浏览器。然而,当 Adobe 更新 Flash 播放器的安全设置时,我有时会在 IE 7 和 IE 8 中遇到一个问题。这可能会导致一条错误消息,指出它找不到。 mp4
文件,它建议您应该尝试“放松安全设置”这意味着访问:
www . macromedia . com/support/documentation/en/flash player/help/settings _ manager 04 . html # 117502
在那里您会找到一个在线安全管理器面板。选择总是允许单选按钮,然后单击编辑位置。添加一个位置(即保存视频文件的文件夹),然后等待,直到下方窗口中出现一个带有白色勾号的绿色圆圈。这意味着您的安全设置被重置。这也是我会很高兴和 Flash Player 说再见的原因之一。
我们现在来看看另一个 JavaScript 解决方案,让 IE 7 和 IE 8 用户欣赏你的视频。该方法可以在有或没有语义视频标签的情况下使用。
OS FLV 免费视频播放器
免费的开源播放器 OS FLV 由 Jambo Media 制作和赞助。这是一个完整的代码生成器。生成的代码可以很容易地嵌入到网页中。这工作没有任何麻烦,也没有显示出品牌标志。但我的兴奋是短暂的,因为我最终发现了一些错误。此外,网站管理员似乎不再回答问题。作为一个自由程序和开源软件,制作者没有义务维护他们的论坛,直到反馈解决了大部分的错误。
最烦人的 bug 导致重播按钮被点击后还留在视频上。另一个错误是音量控制需要双击才能关闭。此外,进度指示器在到达其槽的末端之前突然停止。
找到了。然后我偶然发现了一个来自意大利网页设计师 Gianluca Guarini 的 RSS feed。他已经修复了漏洞,并向任何人免费提供修改后的代码。这个解决方案开箱即用。它也可以在任何浏览器和 HTML 版本 4 和 5 中运行。
Gianluca Guarini 已经友好地允许我在本书的第[
www.apress.com](http://www.apress.com)
页将 OS FLV 文件包含在伙伴网站中。当您下载本章的 zip 文件时,这些文件将被包含在内。詹卢卡·瓜里尼的网站可以在[
www.gianlucaguarini.com](http://www.gianlucaguarini.com)
找到,原来的 OS FLV 项目可以在找到,http:// www.osflv.com
注 Gianluca Guarini 不为他的代码提供任何支持;这本书的配套网站也没有。不过,这应该不是问题,因为代码很容易应用,而且运行起来没有任何障碍。
图 6-7a 和 6-7b 展示了这位玩家的行动。它有一套类似 Chrome 的控件。
图 6-7a。 OS FLV 播放器的开屏
图 6-7b。 显示进度条
程序
对于这个视频播放器,您需要将一些脚本文件插入到包含您的视频代码的 HTML 页面的文件夹中。它们是 FLV 操作系统的 JavaScript 文件,将为你的视频提供动力,让每个人都可以观看,包括 IE 7 和 IE 8 的用户。遵循这些步骤并不困难,但是你需要从本书的第[
www.apress.com](http://www.apress.com)
页的配套网站下载本章的文件
在网站的根文件夹中创建一个名为osflv-folder
的文件夹。
在本章的下载中,您会发现一个名为osflv-player
的文件夹。
打开名为osflv-player
的文件夹,将其文件复制到您的osflv-folder
中。
osflv-folder
的内容现在应该如下所示:
两个 JavaScript 文件:AC_RunActiveContent.js
和rac.js
三个显示文件:Osplayer.as
、Osplayer.fla
、Osplayer.swf
代码生成器:firefox_codegen.html
将您的视频文件转换为.flv
格式,并将其放在osflv-folder
中。
在名为images
的文件夹中创建并放置海报,并将该文件夹放置在osflv-folder
中(可选)。我的列表中的海报是butterfly.jpg
。
使用 Mozilla Firefox 查看firefox_codegen.html
。 填写表单生成代码。
或者,一个更快的方法是从配套网站下载我的代码,并插入你自己的文件名来替换清单 6-7a 中粗体显示的项目。只有两个文件名需要替换。
将生成的(或下载的)代码嵌入到您的网页中。
将您的网页及其 CSS 文件添加到osflv-folder
。
清单 6-7a 显示了嵌入到 HTML5 页面中的生成代码。我已经将生成的脚本的第一部分移到了<head>
部分(生成器将它放在了<body>
部分)。清单 6-7a 在每个浏览器中都提供了相同的控件。
清单 6-7a。 使用 OS FLV 脚本播放视频(【osflv-butterfly-identical-controls.html】) **
`<!doctype html>
osflv-butterfly-identical-controls
`
注意为了方便起见,我把所有相关的文件都放在了一个文件夹里。设置连接到视频页面的菜单按钮,使其链接到正确的文件夹。
OS FLV 播放器会覆盖每个浏览器中包含的播放器。这导致每个浏览器中的控件完全相同。一些网站设计者更喜欢这样;但有些用户可能不会 。一些用户在使用他们喜欢的浏览器时更喜欢看到他们习惯的控件。IE 7 和 IE 8 显示操作系统 FLV 播放器控件,但是为了确保用户的传统控件在其他浏览器中显示,请在 HTML5 页面中使用生成的代码,就像这样。
清单 6-7b 使用 IE 9、Mozilla Firefox、Chrome、Safari 和 Opera 保留浏览器的原生控件。在 IE 7 和 IE 8 中,外观将与图 6-7a 和 6-7b 相同。将视频的.mp4
、.webm
和.ogg
版本放在一个名为video
的文件夹中,并将该文件夹放入您的osflv-folder
中。
清单 6-7b。 使用操作系统 FLV 脚本作为带有视频标签的后备(【osflv-butterfly-native.html】) **
`<!doctype html>
osflv-butterfly-native-controls
<object width='320' height='265' id='flvPlayer'> <param name='allowFullScreen' value='true'> <param name='movie' value='OSplayer.swf?movie=video/**butterfly-movie.flv**&btncolor=0x333333&![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/prac-h5-proj/img/U002.jpg) accentcolor=0x20b3f7&txtcolor=0xffffff&volume=70&previewimage=previewimageurl&autoload=on'> <embed src='OSplayer.swf?movie=video/**butterfly-movie.flv**&btncolor=0x333333&accent![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/prac-h5-proj/img/U002.jpg) color=0x20b3f7&txtcolor=0xffffff&volume=70&previewimage=previewimageurl&autoload=on' ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/prac-h5-proj/img/U002.jpg) width='320' height='265' allowFullScreen='true' type='application/x-shockwave-flash'> </embed> </object>
`
在 HTML5 页面中使用清单 6-7b ,视频将在所有主流浏览器中播放,包括 Internet Explorer 7 和 8。Opera 11 有一个阻止控件工作的 bug,但是这个已经在 11.5 版本中修复了。它也可以在 iPhones 和 iPads 上运行。Mozilla Firefox、Chrome 和 Safari 的用户不再需要安装 Flash。最终,当用户停止使用 IE 7 和 IE 8 时,我们可以省去后备元素(哦,快乐的一天!).
提示 还有其他几个免费玩家可用,包括 Kaltura([
www.kaltura.org)](http://www.kaltura.org))
jwp player([
www.longtailvideo.com/players/jw-flv-player/](http://www.longtailvideo.com/players/jw-flv-player/)
)和 SWFObject。JS ( [
hubpages.com/hub/-MP4-Flash-Video](http://hubpages.com/hub/Embed-SWF-FLV-MP4-Flash-Video)
)。
测试您的视频和 MIME 类型
测试视频时,请确保您的 Flash 播放器和 QuickTime 播放器运行正常,并且在您的服务器上设置了适当的 MIME 类型。
哑剧类型 ?这意味着多用途互联网邮件扩展。你不高兴你问了吗?
尽管 MIME 类型最初是作为邮寄项目出现的,但它已经发展成为一种在互联网上传输非 HTML 格式文件的方法。浏览器使用它们来确定媒体内容类型。除非在服务器中设置了正确的 MIME 类型,否则视频不会播放。
我读过的每一本计算机手册都强调了 MIME 类型的重要性,但是它们没有告诉读者如何应用 MIME 类型。MIME 类型进入页面标记了吗?或者它们以某种方式被添加到服务器中?还是两者都有?经过大量的搜索,我发现答案各不相同。这取决于 MIME 类型的类别。
注意 为网站提供 HTML5 视频时,请务必联系您的主机服务器,请求为.ogv
、.mp4
、.flv
和.webm
视频文件设置 MIME 类型。如果你忽略了这一点,你的视频将无法在某些浏览器上播放。一些开明的主机允许网站设计者给服务器添加 MIME 类型的权限。有关 MIME 类型的更多信息,请参见附录。
下面的笔记是从.htaccess
和 MIME 数据的宝库中摘录的(见[
tomraftery.com/2005/01/15/creating-an-htaccess-file/](http://tomraftery.com/2005/01/15/creating-an-htaccess-file/)
)。
MIME 类型是大多数主机用来在其服务器上设置 MIME 类型的代码片段。它存在于一个名为.htaccess
的文件中,该文件可以包含以下部分或全部AddType
:
AddType video/ogg .ogv AddType video/mp4 .mp4 AddType video/webm .webm AddType video/x-flv .flv AddType application/x-shockwave-flash swf
编辑客户端的视频
如果客户的视频需要剪辑,你该怎么办?例如,它可能太长,需要缩短。它可能包含必须删除的剪辑,因为您不希望在您的网站上看到它们。有些剪辑可能需要删除,因为它们质量很差,例如模糊或抖动。客户可能希望添加或删除声音。客户端甚至可能会将摄像机交给您,并要求您下载和编辑内容。客户可能希望您添加一个带有叠加标题的静止图像,或者添加一个滚动的演职员表来结束视频。
如果您以前编辑过视频,您将能够接受客户端的视频剪辑并进行编辑。当然,你会提供一个成本的估计,并解释你需要做什么,使视频可以接受。
如果您以前从未编辑过视频,您有以下选择:
Ask the customer to let others edit the video.
It means that you have not edited the video before, but you are willing to give it a try.
后者要求你有一个视频编辑器,并能熟练使用它。你需要在硬盘上有足够的空间(或者你可以连接一个外置硬盘)。免费的 Windows Live 影音制作(WLMM)非常出色,帮助文件也不会太晦涩难懂。WLMM 随 Windows XP 和 Vista 一起安装在根启动菜单中。Windows 7 必须下载([
www.microsoft.com/downloads](http://www.microsoft.com/downloads)
)。然而,要注意的是,任何视频编辑程序都不像任何其他软件,它需要一些学习——但它是有创造性的,非常有趣。WLMM 自然是基于现实生活中的电影剪辑过程,在这个过程中,您有一组必须被修剪、以正确的顺序组合然后组合的电影剪辑。需要使用淡入淡出和叠化将一些剪辑混合到下一个剪辑中。
添加声音和片头并不太难,一个视频的结尾可以添加滚动的片尾。小心不要使用大声的声音。特别是,如果有人在说话,不要使用背景声音。这个恼人的噱头深受广告商和纪录片的喜爱,会毁了你的视频。主持人经常被不恰当的背景“音乐”弄得听不见他们的评论。
在 Windows Live 影音制作中,加载到程序中的视频在主窗格中显示为一系列剪辑或短片。可以在预览窗格中预览(播放)每个剪辑,并暂停以允许您修剪剪辑。两个主要特点是时间线和故事板。您可以重新排列剪辑的顺序,但是可以使用时间线来修剪剪辑或添加/移除声音。“帮助”按钮是位于右上角的蓝色圆圈中的白色问号。您必须联机才能查看帮助文件。
因为这本书是关于网页设计的,所以我不会在视频编辑上花更多的时间。尝试阅读詹姆斯·弗罗伊德·凯利的《Windows Live 影音制作入门》。
制作幻灯片
幻灯片有时比视频信息量更大,因为用户可以完全控制他们所看到的内容。可以暂停幻灯片放映,以便用户可以根据需要随时查看特定的幻灯片。本节给出了创建可嵌入网页的幻灯片放映的四种方法。
本节介绍了以下四种创建 web 嵌入式幻灯片放映的常用方法:
使用 BarelyFitz 设计的一段 Java Script 语言代码(见图 6-8 .
Use Animoto online slide production tool (see Figure 6-9 ).
Convert PowerPoint slides into videos.
Use Windows Live movie maker.
巴雷利菲兹设计的幻灯片
BarelyFitz Designs 的 Patrick Fitzgerald 为幻灯片制作了一个优秀的免费开源 JavaScript。他还在自己的网站上提供了一个非常有用的教程:
[
www.barelyfitz.com/projects/slideshow/](http://www.barelyfitz.com/projects/slideshow/)
图 6-8 显示了使用 BarelyFitz 技术制作的幻灯片截图。
图 6-8。 带控件的幻灯片
在下一节中,您将学习如何创建如图 6-8 所示的幻灯片。
制作 BarelyFitz 幻灯片
这种技术易于理解和实现。不需要 JavaScript 知识;只需修改列表,插入您自己的幻灯片。
访问 BarelyFitz 网站(``www.barelyfitz.com??),点击下载&示例选项卡,下载 JavaScript 脚本
slideshow.js。将脚本文件放在包含该网页的文件夹中,并将副本上传到将托管该网页的服务器文件夹中。
准备一个空白网页,并将其放在 JavaScript 代码所在的文件夹中。
收集用于幻灯片放映的图片,并将它们放在包含网页的文件夹的子文件夹中。最简单的方法是,让你的幻灯片都一样大。如果你想使用不同的尺寸,从标记中删除任何关于宽度和高度的内容;但是请注意,您将会有一个可以跳跃的幻灯片来适应不同的尺寸。为了减少跳跃,让图片高度相同。
图 6-8 的标记对于大多数目的来说是足够的。调整它以支持您自己的幻灯片。用您自己的图片替换粗体斜体的项目;添加任意数量的图片。然后将页面上传到您的服务器。本例假设幻灯片位于名为slides
的文件夹中。
使用清单 6-8 中的 HTML5 代码,幻灯片可以在所有浏览器中运行,包括 IE 7 和 IE 8。
清单 6-8 。(slide-show.html)
`<!doctype html>
Slide show for Figure 6-8 based on BarelyFitz Designs
`
要改变连续播放幻灯片的时间间隔,用记事本打开 JavaScript 文件slideshow.js
并找到“超时”部分。您将看到默认值是 3,000 毫秒(3 秒)。更改数字以加快或减慢幻灯片之间的间隔。
浏览 BarelyFitz 网站,然后选择 Tutorial 选项卡,了解在网页中嵌入和配置代码的更多详细信息。网站上有几个成功的例子;通过这些,您可以发现如何添加额外的功能,例如随着每次幻灯片更改而改变的描述性文本,或者幻灯片的下拉列表,或者不同的按钮控件。
Animoto 幻灯片制作人
Animoto Lite 版本只适合测试,因为它的设施有限,不能用于商业目的。如果试用后你想购买它,专业版有几个限制,并根据您的需要提供各种级别的许可。它还提供了一个 iPhone 应用。你会在[
animoto.com](http://animoto.com)
找到 Animoto。
该程序提供了广泛的开放屏幕和音乐,但它强迫你选择一些音乐。不幸的是,缺少的一个音乐选项是“无”你必须选择一个主题、一些音乐和一些文字,否则就不能进入下一步。大多数音乐一点也不好听,但是我在古典音乐区确实找到了一些好东西。上传幻灯片并选择主题和音乐后,单击创建视频按钮。最终,您会收到一封电子邮件,告诉您可以观看幻灯片的视频。您可以查看它并下载其代码以嵌入到网页中。
图 6-9 中显示了一个动画幻灯片。
图 6-9。 一场充满敌意的幻灯片秀
Animoto 下载的代码片段使用 Shockwave Flash,如下所示:
`<object id="vp13vUA9" width="432" height="240" classid=
"clsid:d27cdb6e-ae6d-11cf-96b8-444553540000">
`
将 PowerPoint 幻灯片转换成视频
这是一种创建幻灯片的有效方法,而且用途广泛。它将导入许多类型的输入,甚至是动画.gifs
。免费版本将视频转换为 MP4,WMV 和 AVI 视频,没有水印。如果您转换为任何其他文件类型,幻灯片将在左上角有一个水印。
从[
www.effectmatrix.com/PowerPoint-Video-Converter/Free-PowerPoint-Video-Converter.htm](http://www.effectmatrix.com/PowerPoint-Video-Converter/Free-PowerPoint-Video-Converter.htm)
下载 E.M. PowerPoint 转换器的免费版本
网站横幅是 Etinysoft,所以不要认为你到达了错误的来源。
使用 Windows Live 影音制作创建幻灯片
可以将图片导入 Windows Live 影音制作,然后按照所需的顺序排列。幻灯片将被保存为一个.wmv
文件。使用 Windows Live 影音制作将幻灯片创建为视频的过程如下:
将幻灯片放入文件夹中,以便您可以轻松找到它们。
打开 Windows Live 影音制作,然后单击“添加视频和照片”。导航到包含幻灯片的文件夹。
打开每张幻灯片,直到它们都显示在右侧窗格中。
单击菜单上的编辑,将幻灯片之间的时间间隔调整为 3 秒。
选项可用于各种过渡和渐变。
单击菜单上的主页,然后单击工具栏上的保存电影按钮。
为计算机选择,然后给文件命名。单击保存。
生成的.wmv
文件可以在任何播放器中查看,例如 Windows Media Player 或 QuickTime。要将其添加到网页中,可以将创建的文件上传到 YouTube,这样您就可以嵌入可下载的代码。生成的视频可以在任何浏览器中观看。图 6-10 显示了 YouTube 版本的幻灯片。
图 6-10。 在 Windows Live 影音制作中创建的幻灯片,然后存储在 YouTube 上。请注意,YouTube 框架的外观最近发生了一些变化。
清单 6-10 展示了可下载的 YouTube 版本的.wmv
文件是如何嵌入到 HTML5 网页中的。标记非常简单,但是如果你的客户不想使用 YouTube,,那么.wmv
文件可以被转换成其他格式,用于前面描述的嵌入视频的方法之一。
清单 6-10。【slides-video-YT.html 嵌入 Windows Live 影音制作文件的 YouTube 视频
`<!doctype html>
Embedded YouTube video of an .wmv slide show
`
总结
在本章中,您了解到新的 HTML5 <audio>
和<video>
标签允许 AV 在没有插件的情况下播放,但<audio>
和<video>
标签在 IE 7 和 IE 8 中不起作用。好消息是 IE 9 承诺支持<audio>
和<video>
标签。然而,IE 9 只能在使用 Vista 或 Windows 7 的电脑上运行。
你被提醒需要一些文件转换器,并且推荐了几个经过测试的转换器。向您展示了几种解决在 IE 7 和 IE 8 中显示视频问题的备用方法。提供了替代视频解决方案,如 YouTube 和 Vimeo。然后,您学习了如何使用两个简单的 JavaScript 解决方案来确保视频可以在任何浏览器中看到。本章最后描述了在网页中创建和嵌入幻灯片的四种方法。
在下一章,你会发现如何给框、网页和标签菜单加圆角。许多完整的项目都描述了新的 CSS3 圆角方法。
七、圆角
CSS3 将使网页设计者能够在不使用 JavaScript 的情况下制作圆角(用 CSS3 的话说就是圆角边框)。目前只有最新版本的 Mozilla Firefox、Chrome、IE 9 和 Safari 支持该功能;因此,对于包括 IE 7 和 IE 8 在内的较旧的浏览器,必须使用临时 JavaScript 方法。
本章包括:
Simple JavaScript solution to create rounded corners for basic rectangles and complex pages
Description of the new CSS3 fillet module
Summary of abbreviation code of CSS3 fillet
CSS3 fillet applied to tab menu
一个简单的 JavaScript 解决方案
Alessandro Fulciniti 开发了一个简单的 JavaScript 解决方案,在 GNU GPL 许可下是免费的(如果您使用该脚本,请注明作者)。它适用于包括 IE 6 在内的所有浏览器。完整的细节可以在他的网站上找到。
在图 7-1 中,两个面板使用 JavaScript 应用了圆角。
图 7-1。 JavaScript 应用的圆角
所见即所得设计程序可能无法正确显示边角。在浏览器中查看页面以查看圆角。
注 files niftyCube.js
和niftyCorners.css
必须从 Nifty Corners 网站或这本书的网页上下载。将文件包含在包含您的网页的文件夹中。HTML 没有链接到文件niftyCorners.css
,但是 JavaScript 文件引用了它。本章的文件可以从该书的网页上下载。所有文件都有内部样式,仅供教学使用。
清单 7-1 包含一个内部样式表,仅用于说明目的。
清单 7-1。【fig1-nifty.html】使用漂亮的边角在面板上创建圆角
`<!doctype html>
Nifty Corners: Javascript and CSS
****
**
Nifty Corners ` `
This method of producing rounded corners was devised by a clever Italian ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/prac-h5-proj/img/U002.jpg)
called Alessandro Fulciniti. This is the content panel.
Rounded corners without images
Until all browsers accept the CSS3 rounded corners tag then this javascript ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/prac-h5-proj/img/U002.jpg)
workaround is a good interim solution.
The rounded corners will be visible in all browsers from IE6 onwards.
Simple. Just Javascript and CSS.
This is another panel which could take a navigation menu
`
注意 每个被赋予圆角的元素必须是带有id
的<div>
,例如<div id="leftcol">
。您将无法对带有语义标签的项目进行圆角处理。因为 HTML5 不在乎你用语义标签还是<div>
s,这不是问题,用<div>
s 就行了,好消息是你也可以很容易的给你现有的 HTML4 和 XHTML 网页加圆角。
在进入使用漂亮边角的更复杂的例子之前,将提供如下一些基本规则:
一般规则
JavaScript 文件的链接(粗体显示)被插入到<head></head>
标签中。
给定圆角的元素如下所示:
Nifty ("#leftcol, #rightcol");
要给两列相同的高度,使用属性"same-height"
如下:
Nifty("#leftcol, #rightcol","same-height");
如果省略"same height"
参数,列的高度将与它们各自的内容相匹配。
圆角半径:圆角半径的大小由small
、normal
或big
指定。当没有指定大小时,默认为normal
。
对于大半径和相同高度的列,属性如下:
Nifty("#leftcol, #rightcol","same-height big");
除右上角外,所有角的半径都很大
Nifty("#leftcol", "tl bottom big");
这意味着给左上角和两个底角一个大的半径。右上角没有提到,所以它没有得到半径。
对于除左上角之外的所有角上的大半径
Nifty("#leftcol", "tr bottom big");
这意味着给右上角和两个底角一个大的半径。左上角没有提到,所以它没有得到半径。
对于除右下角之外的所有角上的大半径
Nifty("#leftcol", "bl top big");
这意味着给左下角和两个顶角一个大的半径。右下角没有提到,所以它没有得到半径。
带有圆形边框的网页
客户越来越多地要求网页上的圆形边框具有现代感。Nifty Corners 提供了一个易于实现的简洁解决方案。图 7-2 中的显示了白色框架上的圆角和框架内的一些角。
图 7-2。 显示圆角元素边框的整页
注意 <h1>
框的高度必须等于页眉图像的高度,减去任何顶部和底部的填充。中间面板(midcol
)必须略高于侧柱。不要在中间面板上添加圆角,因为这会导致中间面板在 Internet Explorer 8 中低于外部列。
清单 7-2 将漂亮的边角应用到有栏和边框的复杂页面上。
清单 7-2。【fig2-nifty.html】在复杂页面中创建圆角
`<!doctype html>
A whole page with rounded corners
** **
** **
Rounded Corners
Auxiliary Panel
This panel can be used for adverts, additional information, or items like ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/prac-h5-proj/img/U002.jpg)
validation certificates.
Middle panel for content
` `
Footer goes here
`
注 菜单链接显示为href="#"
。当然,这些必须更改为链接到您的页面。
带有圆形边框和圆形面板的网页
圆形边框可以扩展到页面边框内的项目,以给页面设计带来一致的感觉。图 7-3 是一个带有圆形边框和圆形内部面板的页面截图。
图 7-3。 包含三个通过无序列表定位的报价的页面。“阅读更多”按钮是带有指向相应页面的超链接的图像。
清单 7-3 将漂亮的边角应用到页面上,给出了圆形的边框和三个圆形的内部面板。
清单 7-3。【fig3-nifty.html 在内部面板上创建圆角
`<!doctype html>
A whole page with rounded corners and rounded panels
** **
** **
Rounded Corners
Footer goes here
`
标签菜单上漂亮的角落
圆形菜单标签非常流行,以前实现起来很棘手,因为它们需要几个带有透明角的图像。Nifty Corners 提供的简单解决方案如图图 7-4 所示。我把列表和完整的解释放在了第四章(滚动菜单上)我觉得它应该在的地方。
图 7-4。 使用漂亮边角的圆形标签
接下来的部分着眼于新的 CSS3 圆角模块,这不需要 JavaScript,但在 IE 7 和 IE 8 中圆角元素将默认为方角。
CSS3 圆角模块
CSS3 border-radius 模块在块元素(包括图像)上创建圆角,并且不需要 JavaScript。它还消除了对图像和多个
标签的需求。请在 http://www.css3.info/preview 查看 W3C 关于这个模块的最新细节。
截至 2011 年 11 月,以下浏览器支持 CSS3 圆角:- Opera、Safari 和 Chrome。新版 Mozilla Firefox 支持 CSS3 边框半径;旧版本需要前缀-moz-
。Internet Explorer 9 支持 CSS3 边框半径标记。IE 9 仅适用于 Vista 和 Windows 7。在 Windows XP、IE 6、IE 7 和 IE 8 中,边角不会变圆。JavaScript 解决方案适用于 IE 6、IE 7 和 IE 8。
图 7-5 显示了在彩色面板的每个角上使用 CSS3 圆角的结果。
图 7-5。 彩色面板上的圆角
这是一个最简单的盒子模型,它适用于除 IE 6、IE 7 和 IE 8 之外的所有浏览器。只有支持版本 5 之前的 Mozilla Firefox 才需要项目-moz-border-radius:20px;
。
在这个项目中,彩色面板的所有四个角都用相同的半径圆化(内部样式表仅用于演示;它通常是一个外部样式表)。在列表 7-5 中,圆角代码以粗体显示。一些填充是必要的,以防止内容从角落突出。
清单 7-5。【fig5-four-identical-on-panel.html】在矩形上创建圆角
`<!doctype html>
Four identical corners on a coloured panel Fig. 5
*meta content goes here*
An example of rounded corners on a panel
Each corner has a radius of 20 pixels This works with Safari, Opera and Chrome. Mozilla
currently requires the -moz- hack to make it work For IE 7 and 8 the Nifty Corners
Javascript solution must be used. Microsoft has promised that IE 9 will enable ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/prac-h5-proj/img/U002.jpg)
rounded corners
` `
`
图 7-6 显示了带圆角的彩色面板周围的黑色边框。
图 7-6。 黑色边框的彩色面板
在清单 7-6 中,黑色边框是用粗体显示的代码添加的..只有支持版本 5 之前的 Mozilla Firefox 才需要项目-moz-border-radius:20px;
。
清单 7-6。【fig6-panel-blackbdr.html】用黑色边框将矩形的角变圆
`<!doctype html>
Coloured panel with black border Fig. 7-6
*meta content goes here*
An example of four identical rounded corners
Each corner has a radius of 20 pixels This works with Safari, Opera and Chrome.
Mozilla needs the -moz- hack to make it work For IE 7 and 8 the Nifty Corners Javascript
solution must be used.
Microsoft has promised that IE 9 will enable rounded corners
`
图 7-7 显示了文本块周围的黑色边框。
图 7-7。 一块文字上的圆角
清单 7-7 用相同的半径对文本块的四个角进行圆角处理(内部样式表仅用于演示,通常是外部的)。只有支持版本 5 之前的 Mozilla Firefox 才需要项目-moz-border-radius:20px;
。
清单 7-7。【fig7-four-rounded-text.html】对文本块应用 CSS3 圆角 () **
`<!doctype html>
Text box with four rounded corners
meta content goes here
An example of four identical rounded corners
Each corner has a radius of 20 pixels This works with Safari, Opera and Chrome. ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/prac-h5-proj/img/U002.jpg)
Mozilla needs the -moz- hack to make it work For IE 7 and 8 the Javascript solution ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/prac-h5-proj/img/U002.jpg)
must be used. IE 9 has promised it will work with rounded corners
`
注 下一个 CSS3 边框半径项目有-moz
hacks。久而久之,Mozilla Firefox 将不需要–moz
黑客。尝试注释掉黑客,偶尔用 Mozilla Firefox 测试代码。黑客将允许支持旧版本的 Firefox,现代版本应该会忽略这一点。
CSS3 标记可以为每个角指定不同的半径。CSS3 规范给出了在每个角上创建不同半径的两种方法。第一种方法如下:
方法一。
#box-1 { border: *size color* solid; border-top-left-radius: *size*; border-top-right-radius: *size*; border-bottom-right-radius: *size*; border-bottom-left-radius: *size*; }
用像素或百分比替换单词 size
。百分比与盒子的相应尺寸有关;换句话说,在一个 200 像素见方的盒子上,10%的半径将给出 20 像素的角半径。
然而,Mozilla Firefox 目前并不理解这一点,即使有了-moz-
hack。Mozilla 确实理解这种方法的一种变体,下面用粗体表示。
#box-1 { border: *size color* solid; border-top-left-radius: size; **-moz-border-radius-topleft: size;** border-top-right-radius: size; **-moz-border-radius-topright: size;** border-bottom-right-radius: size; **-moz-border-radius-bottomleft: size;** border-bottom-left-radius: size; **-moz-border-radius-bottomright: size;** }
但是,Mozilla、Safari 和 Chrome 确实理解速记方法(第二种方法),如下所示:
方法二。
#box-1 { border: *size color* solid; border-radius: *size size size size*; }
标记从左上角开始按顺时针顺序指定框角半径,如下所示:
top left, top right, bottom right, bottom left
每个角可以有不同的半径。 图 7-8 显示了一个有两个像素宽的黑色边框的面板。该面板的左上角半径为 30 像素,右上角半径为 20 像素,右下角半径为零,左下角半径为 10 像素。
图 7-8。 四个不同的角落使用速记代码
清单 7-8 使用 CSS3 将选择的圆角应用到一个彩色面板上。在 IE 7 和 IE 8 中查看时,矩形会有尖角。
清单 7-8。 用 CSS3 圆角应用各种转角(【fig8-panel-4diff.html】??) **
`<!doctype html>
Fig. 8 Panel with four different rounded corners
meta content goes here
An example of four different corners ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/prac-h5-proj/img/U002.jpg)
Top left is 30 pixels radius, top right is 20 pixels, bottom right has no radius, ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/prac-h5-proj/img/U002.jpg)
bottom left has a 10 pixel radius. This works with Safari, Opera and Chrome. Mozilla ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/prac-h5-proj/img/U002.jpg)
needs the -moz- hack to make it work For IE 7 and 8 the Nifty Corners Javascript ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/prac-h5-proj/img/U002.jpg)
solution must be used.
`
带 CSS3 的椭圆角
使用两个尺寸值可以创建椭圆拐角。创建椭圆拐角需要两个半径。在下面的代码片段中,第一个大小固定垂直半径(30 像素),第二个大小(15 像素)固定水平半径。为了记住顺序,我使用了助记符 V 值 H int(垂直然后水平)。
#box-1 { border-top-left-radius: 30px 15px; } #identifier { border-*top/bottom*-*left/right*-radius: *vertical size* *horizontal size*; }
图 7-9 显示了各种椭圆拐角。
图 7-9。 四个不同的椭圆角
清单 7-9 向你介绍 CSS3 椭圆角应用于黑边面板。在 IE 7 和 IE 8 中查看时,面板会有尖角。
清单 7-9。【fig9-elliptical-corners.html】应用 CSS3 椭圆角的选择
`<!doctype html>
Box with a different ellipse on each corner
*meta content goes here*
`
【CSS3 圆角速记规则汇总
CSS3 圆角为快速标记提供了一个简化版本,简化标记的规则如下:
规则 A: 如果一个值为零,那么角将是方形的,而不是圆形的。
规则 B: 速记属性可以用来同时定义所有四个角。属性接受由正斜杠分隔的一组或两组值,每组由一个、两个、三个或四个长度或百分比组成。如果提供了所有四个值,顺序将是左上、右上、右下和左下。
规则 C: 第一组值(在正斜杠之前)定义了四个角的垂直半径。
规则 D: 正斜杠后的第二组(可选)值定义了所有四个角的水平半径。
规则 E: 如果只有一组值,这些值同等地确定垂直和水平半径。
规则 F: 如果省略了值,则遵循此规则:如果省略了左下方的维度,则与右上方的维度相同;如果省略了右下的尺寸,它将与左上的尺寸相同。
规则 G: 如果只提供了一个值,则用于相等地设置所有四个半径。
以下是一些例子:
#box-1 { border-radius: 10px 15px 10px 15px / 15px 10px 15px 10px;
(四个椭圆角)
#box-1 { border-radius: 10px
;(四个相同的圆角)
现在是真正的大脑弯曲:
#box-1 { margin:auto; text-align:center; border:30px #FFCC66 solid; width:250px; ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/prac-h5-proj/img/U002.jpg) height:150px; border-radius: 10px 20px/**20px**; }
在“brain bender”代码中,角半径可以翻译如下:所有角的水平半径为 20 像素,由正斜杠(粗体显示)后的单个大小决定。左上角被修改了 10 个像素的垂直半径,因此它是椭圆形的。
第二维度(20 像素)使右上角的水平半径为 20 像素,因为它已经具有 20 像素的垂直半径。它不是椭圆,但该角具有 20 像素的简单半径。
规则 F 起作用是因为只有两个维度被给定在正斜杠的左边。这使得右下角与左上角相同。规则 F 也使左下角与右上角相同。结果看起来像图 7-10 。
图 7-10。 用尽可能简短的标记创建圆角和椭圆角
清单 7-10 使用 CSS3 在面板上选择圆角和椭圆。在 IE 7 和 IE 8 中查看时,矩形会有尖角。
清单 7-10。【fig10-brain-bender.html】使用速记应用 CSS3 圆角和椭圆
`<!doctype html>
Fig. 10 Brain bender shorthand
*meta content goes here*
`
我们现在将演示 CSS3 圆角在标签菜单中的应用
使用 CSS3 的圆角标签
带有圆形标签的菜单非常流行,以前很难实现。下面列出了 CSS3 圆角边框模块提供的简单解决方案,最终结果如图 7-11 所示。该模块在 IE 7 和 IE 8 中不工作,但它优雅地后退,如图图 7-12 所示。
图 7-11。 CSS3 选项卡菜单上的圆角
图 7-11 中的 CSS3 圆形标签可以在 Mozilla Firefox、Safari、Opera 和 Chrome 中使用,但不能在 IE 6、IE 7 或 IE 8 中使用。稍后我们将使用一个有条件的 IE 样式表作为方形角的后备(见图 7-13 )。IE 9 应该显示圆角。在图 7-11 中,第一页的页签被选中,变成白色并与内容面板合并。当鼠标悬停在选项卡上时,选项卡会改变颜色。光标显示为悬停在标签 3 上。
注意 标签 3 比其他的都长。标签会自动放大或缩小以适应文本。
活动元素从一页到另一页改变以匹配活动页面,活动元素在清单 7-11a 中以粗体显示。HTML 清单 7-11a 是图 7-11 、 7-12 和 7-13 的标记。有条件的后退链接(粗体显示)将允许使用 IE 7 和 IE 8 进行可接受的显示,但标签角会很尖。
清单 7-11a。【fig11-css3-tabs-rounded.html】用 CSS3 创建圆形标签
`<!doctype html>
CSS3 rounded tabs
*meta content goes here*
****
This is the content area
`
注意 每个href="#"
当然必须被你的页面的 URL 所取代。必须在每个页面上更改活动链接的id
以匹配页面。例如,在第 5 页上,活动链接的 id 将出现在第 5 页链接的旁边,即<li><a class="tab" **id="activelink"** href="#">Tab5</a></li>
,在该页上,第一个选项卡将变成<li><a class="tab" href="#">Tab1</a></li>
。图 7-13 显示了结果。
清单 7-11b 是图 7-11 中所示圆形标签菜单的 CSS3 样式表。
清单 7-11b。 为清单 7-11a (css3-tabs.css) 创建 CSS 标记
`#header { width:500px; height:100px; background-image:url('img/bluepan.jpg');
background-repeat:no-repeat; background-position:center; color:white; text-align:center;
margin-bottom:-27px;
}
h1 { font-size:150%; font-weight:bold; padding-top:20px;
}
h2 { font-size:125%;
}
nav ul {width:400px; position:relative; top:-14px;
}
ul li { text-decoration:none; display:inline;
}
ul li a.tab { font-family:Arial; color:black; font-size :medium; font-weight:bold;
background-color:#ffff00;
/-moz-border-radius-topleft:8px;É-moz-border-radius-topright:8px; /
border-top-left-radius:8px; border-top-right-radius:8px; border:2px solid black;
padding:5px; padding-bottom:5px;margin :-2px; text-decoration:none; border-bottom:none;
}
.tab:hover { background-color:lime; color:black;
}
activelink {background-color:white; border-bottom:0; padding-bottom:7px;
}
content {margin-top:-25px; padding:10px; width:476px; border:2px solid black;
}`
注意 CSS 样式表中粗体显示的注释掉的行清单 7-11b 对于 Mozilla Firefox 以后的版本是不需要的。粗体文本中的项目现在可以省略,但是如果你也想迎合 Firefox 的早期版本,请删除注释符号。
图 7-12 显示了选择 tab5 时的菜单。
图 7-12。 第五页的标签已经被选中
图 7-13 显示了标签菜单在 IE 7 和 IE 8 中是如何出现的。
图 7-13。 IE 7 和 IE 8 中的标签有方角
由于在清单 7-11a 中包含了 IE 条件,条件 CSS 标记清单 7-13 在 IE 7 和 IE 8 中给出了可接受的显示,如图图 7-13 所示。然而,标签将有方角。
清单 7-13 中的条件 CSS 对一些元素的边距进行了调整。
清单 7-13 显示了 IE 条件 CSS。
清单 7-13。 允许 IE 7 和 IE 8 可接受的标签菜单的条件 CSS(css3-tabs-IE . CSS)
`#header { margin-bottom:-25px;
}
content {margin-top:-25px;
}`
总结
在这一章中,你学习了如何使用 Alessandro Fulciniti 的简单 JavaScript 解决方案在盒子(面板)上创建圆角。然后,这种技术被应用到整个网页的边框和面板上。然后向您介绍了应用于盒子的 CSS3 圆角;介绍了这种技术的全部可能性。最后,您学习了如何将 CSS3 圆角应用于选项卡菜单。
在下一章中,你会发现如何将投影应用到图像和文本块上,使它们看起来漂浮在页面上。你也可以看到如何用阴影包围一个网页。然后将向您介绍将 CSS3 投影应用到图像、文本框和文本的项目。
八、投影
投影可以将图片和文本块变成醒目的插图,看起来好像悬浮在页面表面。CSS3 建议包括一个新的投影功能,这将在本章中首先介绍。Internet Explorer 7 和 8 不支持 CSS3 因此,本章的其余部分给出了 CSS2 变通办法的说明,这将使 IE 7 和 IE 8 用户看到阴影。图像和文本框的投影可以通过以下三种方法实现:
Use the new CSS3 projection (this doesn't work in IE 7 or IE 8).
Use graphics packages to apply shadows directly to images or text. This chapter describes how to use the free open source program Gimp (known as GIMP in the version before 2.6) to generate projections quickly and easily.
Use CSS2 and a background map of .png
shadow, which stretches or shrinks to match the size of the picture (this is Big John's method; There will be more introduction later in this chapter). Shadows can be viewed in all browsers including IE 8. This method will create double-sided or four-sided shadows by using one or more shadow background images. This chapter gives instructions on creating shadow images in the free GIMP graphics program.
CSS3 阴影不需要阴影图像
CSS3 框阴影 模块是一个创建投影的新功能。它可以应用于任何框,如图像或段落。这个模块提供了一个更简单的方法来创建阴影,因为不需要阴影图像 。除了 IE 7 和 IE 8 之外,所有浏览器都支持该功能。
提示 关于 CSS3 盒子阴影的更多信息见[
www.css3.info/preview/box-shadow/](http://www.css3.info/preview/box-shadow/)
在新的框阴影模块中指定的属性由三个维度组成(四个维度用于四边阴影)。属性展开 和颜色 有额外的可选尺寸。属性和维度如下:
阴影的水平偏移量。 正偏移将阴影放在方框的右边;负偏移将阴影放在框的左侧。
阴影的垂直偏移量。 正偏移量将阴影放在方框下方。负偏移会将阴影放在方框上方。
阴影的模糊半径。 数值越高,阴影会越模糊。如果设置为零,阴影将被尖角化。
当使用 CSS3 的圆角功能时,阴影将跟随圆角。
可选属性可用,例如,展开 (阴影的大小)和插入 (创建内部阴影)。详情请见网站[
www.css3.info/preview/box-shadow/](http://www.css3.info/preview/box-shadow/)
。
注意 一定要把图像的尺寸放在样式表中。例如,一个 296 像素宽、196 像素高的图像需要一个 CSS 语句,如下所示:
#shadow { box-shadow: 6px 6px 6px #888; **width: 296px; height:196px;** }
彩色段落的 CSS3 阴影显示在图 8-1 中。
图 8-1。 CSS3 阴影添加到彩色段落
清单 8-1a 创建一个简单的彩色段落,两边有阴影。
清单 8-1a。【css3-para-shadow.html】创建一个两边都有阴影的彩色段落
`<!doctype html>
This is a colored paragraph with CSS3 drop shadow
This is a paragraph with CSS3 drop shadow
`
清单 8-1b 中的 CSS 代码创建了一个模糊半径为 4 像素的阴影,位于段落右侧 6 像素,下方 6 像素。
清单 8-1b。 清单 8-1a 的 CSS 样式表(css3-para-shadow.css)
#para-shadow p { box-shadow: 6px 6px 8px #888; padding: 5px 5px 5px 15px; width:300px; ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/prac-h5-proj/img/U002.jpg) background-color:#66FF99; color:black; font-weight:bold; }
图 8-2 显示了一张图片的 CSS3 阴影。本章中使用的科利河照片是由科林·海恩斯许可的。
图 8-2。 这个例子的 CSS3 给出了一个模糊半径为 5 像素的投影,位于图像右侧 6 像素,下方 6 像素。
Internet Explorer 9、Mozilla Firefox、Safari 和 Opera 都支持这种 CSS3 框影。在清单 8-2a 中,CSS3 的目标是 <div id="shadow">
为图片添加阴影。
清单 8-2a。【css3-image2.html 创建一个模糊半径为 5 像素的阴影
**`<!doctype html>
An image with a CSS3 drop shadow
****
**
**
`
清单 8-2b 针对包含阴影id
的<div>
。
清单 8-2b。 清单 8-2a 的 CSS 样式表(css3-image1.css)
`body { color: #fff;
}
shadow { box-shadow: 6px 6px 6px #888; width: 296px; height:196px;
}`
CSS3 投影也可以产生白色边框,如图图 8-3 所示。
图 8-3。 CSS3 代码给出了一个带有白色边框和阴影的图像,模糊半径为 6 个像素,位于图像右侧 6 个像素,下方 6 个像素。
添加了背景色,以便您可以清楚地看到白色框架的顶部。阴影颜色可能需要调整以匹配背景颜色。在清单 8-3a 中,粗体显示的<div>
是 CSS 样式表产生阴影的目标。
清单 8-3a。【css3-image-whitebdr.html】在图像周围创建阴影和白色边框
`<!doctype html>
Image with CSS3 drop shadow and white border
****
**
**
`
在清单 8-3b 中,白色边框是由粗体显示的标记创建的;这条线的其余部分产生了阴影。
清单 8-3b。 清单 8-3a 的 CSS 样式表(css3-image-whitebdr.css)
`body { background-color:#99CCFF;
}
shadow-bdr { background-color:#fff; padding:10px; box-shadow: 6px 6px 6px #78b;
width: 296px;
}`
CSS3 四边形阴影
CSS3 box-shadow 模块可以通过零偏移和一个额外的属性来提供四边投影。典型的例子如图 8-4 所示。相关代码如清单 8-4a 和清单 8-4b 所示。
图 8-4。 一个 CSS3 的四边落影
清单 8-4a。 在图像的四周放置阴影 ( css3-image-4sides)
`<!doctype html>
Image with a 4 sided CSS3 drop shadow
`
在清单 8-4b 中,将粗体显示的样式(注意两个零)与前一个双边示例的样式进行比较。
清单 8-4b。 清单 8-4a 的 CSS 样式表( css3-image-4sides.css)
`body { color: #fff;
}
shadow { margin:20px auto 0 auto;
}
shadow { box-shadow: 0 0 6px 6px #888; width: 298px; height:196px;
}`
CSS3 为文字投下阴影
这适用于除 IE 6、IE 7、IE 8、IE 9 和 IE 10 测试版之外的所有当前浏览器。在 Internet Explorer 中,影子代码将被忽略,文本将显示为图 8-5 。不要在同样苍白的背景上使用苍白的颜色,因为如果没有阴影,Internet Explorer 将无法清楚地显示文本。
图 8-5。 在 IE 6、7、8、9 和 10(测试版)中查看文本时不显示阴影
在 IE 6、IE 7、IE 8、IE 9 以外的浏览器中的效果如图 8-5b 所示。
图 8-6。 CSS3 在 Mozilla、Opera、Safari 和 Chrome 中出现时会产生阴影
清单 5a 和 5b 显示了图 8-5 和图 8-6 的 HTML 和 CSS 代码。在 CSS 清单 8-5b 中,在清单 8-5a 中以粗体显示的<div>
是 CSS 样式表产生阴影的目标。
清单 8-5a。【css3-text-shadow.html】对文本应用阴影 () **
`<!doctype html>
This gives text with a CSS3 drop shadow
****
This is a CSS3 drop shadow on text
****
`
在清单 8-5b 中,阴影是由粗体显示的标记创建的。
清单 8-5b。 清单 8-5a 的 CSS 样式表(css3-text-shadow . CSS)
`body {background-color:#99CCFF;
}
banner h1 { color: #fff; padding: 50px 0 0 20px; margin: 0; font-size: 2.6em;
text-shadow: 0.1em 0.1em 0.2em black;
}`
这转化为:阴影向右偏移 0.1 em,阴影在图像下方偏移 0.1 em,模糊半径 0.2 em,阴影颜色为黑色。
为 IE 7 和 IE 8 创建投影
因为 IE 7 和 IE 8 不支持 CSS3 投影,所以必须使用一种临时技术。有两种可能性:
使用图形包为图像或文本添加投影。
在背景中使用阴影背景图像。
使用图形包
直到最近,在图形包中创建投影还是一个名副其实的障碍。下面描述了一些以前的包的典型过程。
将图像加载到程序中。
在四周添加 30 像素宽的边框。
选择图层 新建光栅图层。
回到第一层。
用魔棒点击新边框,用白色填充。
单击选择并反转选择。
选择效果 3D 效果 投影。
在下一个对话框中设置尺寸和不透明度。
将图像移动到阴影上,直到您对外观满意为止。
选择选择 选择无。
选择图层 合并图层(展平)。
裁剪顶部和左侧的白色边框。
保存图像。
唷!结果是一个很好的投影,可以在 IE 7、IE 8 和所有更新的浏览器中看到,如图 8-7 所示。
图 8-7。 典型图形包产生的阴影
大多数软件包都涉及到了对层 和选择 功能的处理。幸运的是,现在大多数程序都在简化程序并提供更好的指导。
我使用 GIMP 快速轻松地创建投影。这个免费的软件包充满了先进的功能,易于下载和安装。撰写本文时的最新版本是 GIMP 2.6 。 你也可以下载一本精美的图文并茂的手册。该网站位于[
www.gimp.org/downloads](http://www.gimp.org/downloads)
将使用 GIMP 的以下步骤与前面描述的过程进行比较:
将图像加载到 GIMP 中。
选择滤镜 光影。
单击投影。
就这样!没有摆弄层,没有选择。图 8-8 显示了用 GIMP 2.6 和更早版本添加投影的结果。
图 8-8。 使用 GIMP 创建的阴影
如果您使用不同的图形程序,请浏览帮助文件以获得关于投影的说明。我的另一个图形包附带的 500 页的手册中有一句关于阴影的无用的句子。如果你的程序有类似的手册,你可以通过访问与你的图形程序相关的论坛找到有用的建议。
图 8-9 显示了使用 GIMP 在文本上创建投影的结果。
图 8-9。 GIMP 可以在文本上创建阴影。
尝试以下练习:
打开 GIMP,点击文件 新建。
单击风景图标;将宽度设置为 500 像素,高度设置为 35 像素。
点击工具箱中的图标。
在工具箱中,单击“字体”旁边的图标。从下拉列表中,选择无粗斜体。
选择字体的大小和颜色;让我们试试 24pt 黑色。编辑窗口中将出现一个文本框。
输入文本,然后单击菜单上的过滤器。
选择光线和阴影,然后选择投影。
在下一个对话框中,尝试以下设置:
偏移 x: 2
偏移 y: 2
模糊半径:2
将颜色保留为默认黑色;将不透明度设置为 70%。
点击确定。
要保存文件,在“文件”菜单项中选择“另存为”,并将其保存为.jpg
或.png
图像。
使用背景图片和 CSS2 创建阴影
背景阴影图像可以自动扩展和收缩,以适应各种图像尺寸。我非常感谢大约翰发表了这个 CSS2 技术的阴影。实现例 8-10 至 8-15 遵循他的技术。一定要在 http:// www.positioniseverything.net
访问大约翰的优秀网站(注意.net
域名)。
这个网站对这种方法的工作原理有非常有用的解释。该网站也是 CSS 实用信息的宝库。
通过用包含阴影图像的<div>
包围诸如段落或图像的块,该方法可以在两侧或四侧提供阴影。我们将从两边的阴影开始。
使用 CSS2 背景阴影图像的双面阴影
图 8-10 显示了图像两侧的阴影。有两个,相关的代码示例显示在清单 8-10a 和清单 8-10b 中。
图 8-10。 一个两边都有阴影的简单图像
清单 8-10a 中的三个<div>
持有三个阴影图像的一部分。这些由两个角阴影图像和主阴影图像组成。第四个<div>
持图。这些<div>
以粗体显示。
清单 8-10a。 围绕一个两边都有阴影的图像。(【two-shadowfig10.html】??) **
`<!doctype html>
2 sided drop shadow Fig 8-10
*meta details go here*` `
**** **
** **
** **
** **
** **
**
`
CSS 清单 8-10b 中的图 8-10 使用了三张背景图片,top-rightcorner.png
、bottom-leftcorner.png
和main-shadow.png
。图 8-10 、 8-11 和 8-12 都使用相同的阴影图像。这些可以从这本书的网页上下载。使用 CSS 中的position:relative;
将图片定位在背景阴影中。
清单 8-10b。 清单 8-10a 的 CSS 样式表为( *two-shadow fig 10 . CSS)*
.top-right-corner { background:url(top-rightcorner.png) right top no-repeat; width: 305px; } .bottom-left-corner { background:url(bottom-leftcorner.png) left bottom no-repeat; ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/prac-h5-proj/img/U002.jpg) padding-top:8px; padding-left:8px; } .shadowbox { background:url(main-shadow.png) bottom right; } .innerbox { position: relative; left:-8px; top:-3px; }
您可能需要稍微调整.innerbox
位置,以确保不会出现白边;例如,起初我有这样的设置:.innerbox { position:relative; left:-8px; top:-8px; }
,但是在图片的底部出现了一个像素的白边。通过改成top:-7px
;,白边被移除。
在有白框的图像周围放置一个阴影,如图 8-11 所示。
图 8-11。 一个两边都有阴影和白色边框的图像
这个例子有一个彩色的背景,这样可以清楚地看到白色边框的顶部和左侧。相关代码见下一个清单 8-11a 至 8-11d 。
方法一:添加白色边框
图像必须首先给一个白色的边界。在本例中,使用图形程序添加了一个 10 像素的白色边框。然后图像以新名称colrivblu-whitebdr.jpg
保存。这些边框将图像的尺寸增加了 20 个像素;新的尺寸是 318 像素× 216 像素,这些数字被仔细地记录下来,为下一步做好准备——清单 8-11a 。
清单 8-11a。 添加阴影和白色边框(【twoshad-whitebdr1.html】) **
`<!doctype html>
Figure8-11\. Two sided drop shadow. Pic has whiteborder
*meta details go here*
**
` `Two sided shadow with white border
`
清单 8-11b。 清单 8-11a 的 CSS 样式表( twoshad-whitebdr1.css)
body { background-color:#CCFFCC; font:black arial medium; } .top-right-corner { background:url('img/top-rightcorner.png') no-repeat right top; ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/prac-h5-proj/img/U002.jpg) width: 326px; } .bottom-left-corner { background:url('img/bottom-leftcorner.png') no-repeat left bottom; ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/prac-h5-proj/img/U002.jpg) padding-top:8px; padding-left:8px; } .shadowbox { background:url('img/main-shadow.png') right bottom; } .innerbox { position: relative; left:-8px; top:-4px; }
方法 2:使用 CSS 添加白色框架
带有现成边框的图像提供了一个解决方案,但是 CSS 可以用来添加白色边框。CSS 方法更可取,因为它加载速度更快,并且避免了使用画图程序添加边框的麻烦。然而,可能需要对样式表进行一些修改才能使其正确。
清单 8-11c 给出了与图 8-11 相同的外观。名为.frame
的类被添加到图像中,以便添加白色边框;这以粗体显示。
清单 8-11c。【使用类提供白色边框(twoshad-whitebdr2.html ??)】
`<!doctype html>
Two sided drop shadow and CSS white border
Two sided shadow with white border
`
HTML 中使用了类.frame
来定位图像,以便添加白色边框。这个新行img.frame { border:10px white solid; }
被添加到 CSS 清单 8-11d (以粗体显示)。
清单 8-11d。 定义类的 CSS 样式表。innerbox
( *two shad-white BDR 2 . CSS)*
body { background-color:#CCFFCC; font:black arial medium; } .top-right-corner { background:url('img/top-rightcorner.png') no-repeat right top; ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/prac-h5-proj/img/U002.jpg) width: 326px; } .bottom-left-corner { background:url('img/bottom-leftcorner.png') no-repeat left bottom; ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/prac-h5-proj/img/U002.jpg) padding-top:8px; padding-left:8px; } .shadowbox { background:url('img/main-shadow.png') right bottom; } .innerbox { width:298px; **height:216px;** position: relative; left:-8px; top:-8px; } **img.frame { border:10px white solid;** }
CSS2 文本的双面阴影
图 8-12 显示了给文本块添加阴影的效果。
图 8-12。 一个段落的双面投影可以使用与图像相同的技术来实现。
清单 8-12a 中的 HTML 与之前的项目几乎相同,除了使用了一段文本而不是一张图片。
清单 8-12a。【two-shadowtext.html】在文本块周围放置双面投影
`<!doctype html>
Paragraph with 2 sided drop shadow
A paragraph can have a drop shadow. The shadow grows and shrinks ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/prac-h5-proj/img/U002.jpg)
automatically to accommodate varying amounts of text
` `
`
图 8-12 在文本和段落内容框之间有 5 个像素的填充。这在下一个清单中以粗体显示。200 像素宽的内容加上左右填充给出了 220 像素的总宽度,这被添加到了top-right-corner
的样式中(在清单 8-12b 中以粗体显示)。文本块被赋予一条细的银色边框,这样顶部和左侧的边缘清晰可见。
清单 8-12b。 清单 8-12a 的 CSS 样式表(two-shadow text . CSS)
body { background-color:#FFF; font:black arial medium; } .top-right-corner { background:url('img/top-rightcorner.png') no-repeat right top; ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/prac-h5-proj/img/U002.jpg) **width:220px;**
} .bottom-left-corner { background:url('img/bottom-leftcorner.png') no-repeat left bottom; ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/prac-h5-proj/img/U002.jpg) padding-top:8px; padding-left:8px; } .shadowbox { background:url('img/main-shadow.png') right bottom; } .innerbox { position: relative; left:-8px; top:-8px; } .innerbox p { margin:0; padding:5px; width:200px; border:1px silver solid; }
CSS2 四边阴影
使用 CSS 背景图片可以在图片的四周放置阴影。较宽的背景阴影可能看起来不太真实,因为拐角处的阴影半径对于尖角图片的阴影来说可能显得太大。
图 8-13 和图 8-14 显示了两种不同阴影宽度的效果。
图 8-13。 窄窄的四面垂影
图 8-14。 四面广坠影
图 8-13 、 8-14 和 8-15 仅使用一个矩形阴影图像。
提示 可以从书的网页上下载有限数量的投影图像,或者你可以使用图形处理软件包创建自己的图像。投影图像必须是透明的.png
文件。
清单 8-13a 有四个<div>
并再次使用 CSS 背景图片属性。<div>
s 的定位及其关闭的</div>
s 极其重要。这个 10 像素阴影的例子最适合 XHTML 列表。阴影在所有现代浏览器中都可以工作,但在 IE 6 或 IE 7 中不能正确显示。
注意 在清单中,corner a
是右上角,corner b
是左下角。
清单 8-13a。用四个 10 像素宽的阴影包围一幅图像 (【fourside-drop10px.html】) **
`
<title>A 10 pixel wide drop shadow on 4 sides</title>
*meta content goes here…*
<link rel="stylesheet" type="text/css" href="fourside-drop10px.css">
</head>
<body>
**<div class="shadow-one">**
** <div class="corner-a"></div>**
** <div class="corner-b"></div>**
**<div class="shadow-two">**
**<div class="shadow-three">**
**<div class="shadow-four">**
<img title=”River Coly” alt="River Coly" height="197" src="img/colriv.jpg"![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/prac-h5-proj/img/U002.jpg)
width="301" margin="0" padding="0">
**</div>**
**</div>**
**</div>**
**</div>**
</body>
</html>`
清单 8-13b 使用单一矩形阴影图像、shadow10p.png
和 CSS 定位。
清单 8-13b。 清单 8-13a 的 CSS 样式表( fourside-drop10px.css)
.shadow-one { position:absolute; padding-top:20px; padding-left:20px; }
.corner-a { position:absolute; right:0; top:0; width:20px; height:20px; ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/prac-h5-proj/img/U002.jpg) background:url('img/shadow10p.png') right top no-repeat; } .corner-b { position:absolute; left:0; bottom:0; width:20px; height:20px; ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/prac-h5-proj/img/U002.jpg) background:url('img/shadow10p.png') left bottom no-repeat; } .shadow-two { position:relative; background :url('img/shadow10p.png') ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/prac-h5-proj/img/U002.jpg) right bottom no-repeat; } .shadow-three { position:relative; left:-20px; top:-20px; ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/prac-h5-proj/img/U002.jpg) background:url('img/shadow10p.png') left top no-repeat; } .shadow-four { position:relative; left:10px; top:10px; }
注意 在图 8-13 中,.png
图像上阴影区域的宽度为 10 像素。CSS 清单中的 20 像素尺寸是.png
阴影宽度的两倍。阴影四与.png
阴影区域的宽度相同(10 像素)。
在图 8-14 的中显示了一个更宽的阴影。清单 8-14a 有四个<div>
并再次使用 CSS 背景图片属性。<div>
s 的定位及其关闭的</div>
s 极其重要。阴影最好使用 XHTML 而不是 HTML5。该阴影可以在所有现代浏览器中查看,包括 IE 8,但它不能在 IE 6 或 IE 7 中正确显示。
清单 8-14a。【fourside-drop30px.html】在四边放置一个 30 像素宽的阴影
`
Wider drop shadow on 4 sides
** **
**
**
**
**
**
**
**
**
**
**
**
**
**
**
**
**
**
**
`
CSS 清单 8-14b 使用单一矩形阴影图像、shadow30p.png
和 CSS 定位。
清单 8-14b。 清单 8-14a 的 CSS 样式表
.shadow-one { position:absolute; padding-top:60px; padding-left:60px; } .corner-a { position:absolute; right:0; top:0; width:60px; height:60px; ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/prac-h5-proj/img/U002.jpg) background:url('img/shadow30px.png') right top no-repeat; } .corner-b { position:absolute; left:0; bottom:0; width:60px; height:60px; ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/prac-h5-proj/img/U002.jpg) background:url('img/shadow30px.png') left bottom no-repeat; } .shadow-two { position:relative; background :url('img/shadow30px.png') ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/prac-h5-proj/img/U002.jpg) right bottom no-repeat; } .shadow-three { position:relative; left:-60px; top:-60px; ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/prac-h5-proj/img/U002.jpg) background:url('img/shadow30px.png') left top no-repeat; } .shadow-four { position:relative; left:30px; top:30px; }
注意 在图 8-14 中,.png
图像上阴影区域的宽度为 30 像素。60 像素的尺寸是.png
阴影宽度的两倍。阴影四与.png
阴影区域的宽度相同(30 像素)。
段落周围的四边阴影
通过使用投影,可以使段落看起来好像漂浮在页面表面上。图 8-15 显示了一个没有边框但被阴影包围的段落。
图 8-15。 在一段文字周围放置四边阴影时,使用一个段落,并给段落一个宽度,这样阴影就有东西可以附着。
该过程与之前的项目完全相同,但使用了一个段落而不是一张图片(见清单 8-15a 和 8-15b )。
清单 8-15a。 将阴影应用到文本块的四边( *shadow-paragraph.html)*
`<!doctype html>
Paragraph with shadow round all four sides
**
**
**
**
**
**
**
**
**
**
**
**
Rare bureaucrat discovered Bureaucrats and other public 'servants' ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/prac-h5-proj/img/U002.jpg)
*…some text has been ommitted from this markup to save space…*
present in bureaucrats and jobsworths of all nationalities.
**
**
**
**
**
**
**
**
`
清单 8-15b。 清单 8-15a 的 CSS 样式表( shadow-paragraph.css)
`/SET 4 SIDED SHADOW /
.shadow-one { position:absolute; padding-top:60px; padding-left:60px;
}
.corner-a { position:absolute; right:0; top:16px; width:60px; height:60px;
background:url('img/shadow30px.png') right top no-repeat;
}
.corner-b { position:absolute; left:0; bottom:16px; width:60px; height:60px;
background:url('img/shadow30px.png') left bottom no-repeat;
}
.shadow-two { position:relative;
background :url('img/shadow30px.png') right bottom no-repeat;}
.shadow-three { position:relative; left:-60px; top:-60px;
background:url( 'img/shadow30px.png' ) left top no-repeat; }
.shadow-four {position:relative; left:30px; top:30px; }
wrapper { width:420px;
}
p {width:400px; padding:10px;
}`
排除清单 8-13 至清单 8-15 中的阴影
如果你对刚才讨论的阴影有任何问题,这部分的信息应该可以帮助你。对于初学者,总是从拐角 a 和拐角 b 的高度设置为零开始,如下所示:
.corner-a {position:absolute; right:0; **top:0;** width:60px; height:60px; ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/prac-h5-proj/img/U002.jpg) background:url('img/shadow30px.png') right top no-repeat; } .corner-b {position:absolute; left:0; **bottom:0;** width:60px; height:60px; ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/prac-h5-proj/img/U002.jpg) background:url('img/shadow30px.png') left bottom no-repeat; }
角 a 是一个盒子的右上角;角 b 是一个盒子的左下角。零位设置导致拐角 a 和 b 出现问题,如图图 8-16 所示。
.corner-a { position:absolute; right:0; top:16px; width:60px; height:60px; ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/prac-h5-proj/img/U002.jpg) background:url('img/shadow30px.png') right top no-repeat; } .corner-b { position:absolute; left:0; bottom:16px; width:60px; height:60px; ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/prac-h5-proj/img/U002.jpg) background:url('img/shadow30px.png') left bottom no-repeat; }
图 8-16 显示了故障角 a 和 b 。
图 8-16。 A 角和 b 角的问题
纠正故障
通过反复试验,改变角点 a 和 b 的顶部和底部像素。在本例中,解决方案是将零点改为 16 像素。
.corner-a { position:absolute; right:0; **top:16px;** width:60px; height:60px; ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/prac-h5-proj/img/U002.jpg) background:url('img/shadow30px.png') right top no-repeat; } .corner-b { position:absolute; left:0; **bottom:16px;** width:60px; height:60px; ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/prac-h5-proj/img/U002.jpg) background:url('img/shadow30px.png') left bottom no-repeat; }
。 png 阴影图像
哪里可以获得.png
阴影图像?少量可以从大约翰的网站上下载([www.positioniseverything.net](http://www.positioniseverything.net)
) 。 我在这本书的网页下载包里放了一些阴影。你可以使用免费的 GIMP 图形程序设计自己的.png
阴影图像。这些指令相当复杂,但是您不需要在使用其他一些包时所必需的插件。关于 GIMP 的信息可以在 http://www.gimp.org/获得,你也可以从 GIMP 网站下载程序和帮助文件。
创建。 GIMP 中的 png 阴影图片
这个部分的目的是在一个空的矩形周围产生一个四边的阴影。
打开 Gimp,点击文件 新建。
在下一个对话框中,单击高级选项。
单击左侧图标(位于高度选项下方)选择纵向。指定所需阴影的大小(例如 640 像素宽× 400 像素高)。在色彩空间字段中,选择灰度(它具有英国英语拼写)。
Select Fill With Transparency, then click OK. The empty image is created; it is covered with a checkerboard pattern that denotes transparency. Figure 8-17 shows the GIMP’s Toolbox window.
图 8-17 。GIMP 的工具箱窗口。白色样本与黑色样本重叠。
现在选择白色,单击弯曲的双箭头,以确保白色方块与黑色方块重叠。顶部颜色代表填充颜色,而黑色(位于所选的下部颜色上)是背景颜色。在工具箱窗口中,单击桶填充图标。单击白色方块,然后返回到棋盘图像,并左键单击它使其变成白色。
点击图层 新建图层。确保选中透明度单选按钮,接受所有默认设置,然后单击确定。
在菜单中,单击窗口 可停靠对话框 图层对话框。这将在屏幕上出现一个对话框,显示层。
确保棋盘格图案的图层总是被选中(当它被选中时会有一个浅色背景;未选择的层将是白色的)。
现在我们将决定阴影图像的宽度,假设它是 20 像素。
点击选择 全部。现在你会看到虚线轮廓像一排行进的蚂蚁一样移动。
点击选择 缩小。一个对话框将允许您选择图像的缩小量;假设是 30 像素。
确保勾选了标记为“从图像边框收缩”的框。单击确定。
现在你会看到内部和外部图像有虚线边框。只有内在的形象才会有行进的蚂蚁。点击滤镜 光影 投影。
在对话框中,将偏移设置为零,模糊半径为 20 像素,不透明度为 70。
Make sure the box labeled Allow Resizing is unchecked. Click OK. You will see a third layer, called Drop Shadow, has appeared; just ignore it. The docked Layers window is illustrated in Figure 8-18.
图 8-18。 GIMP 图层对话框
不要保存它, 但是在图层对话框中点击与背景图层相关的眼球。现在你可以在编辑面板中看到投影,棋盘再次显露出来。
点击文件 另存为,选择保存位置。在对话框的顶部 ,给文件命名,并确保通过在文件名中添加.png
来包含文件类型(例如:mydropshadow.png
)。
点击保存 按钮。将弹出一个标有导出文件的对话框。确保选中标记为“合并可见层”的单选按钮。然后单击导出按钮。接受下一个对话框中的默认设置,然后单击保存按钮。
这样创建的阴影图像可用于之前的背景阴影图像示例中,并且可对其进行切片,以给出本节稍后所需的图像 8-21a 、 8-21b 和 8-21c 。尝试各种尺寸,但始终包括偏移的两个零。最终你可以创建一个阴影尺寸库;请记住,当阴影收缩或膨胀以填充<div>
时,较大的阴影尺寸可用于较小的图像。但是,如果您对其周围的图像使用过小的阴影,它将隐藏在图像后面。我们刚刚创建的阴影如图 8-19 所示。
图 8-19。 使用 GIMP 创建的阴影
在网页的主面板周围添加阴影
本例中的技术最适用于固定宽度的布局,但是使用.png
阴影图像来缩放以匹配框元素,半流动页面也是可能的。图 8-20 显示了一个固定宽度页面的四边都有阴影的整页。
图 8-20。 阴影环绕整个页面的白色边框。这适用于所有浏览器。
注意 通过使用新的 CSS3 模块,在标题面板的白色字体上添加了阴影。清单 8-20 、 8-22 和 8-23 中的 CSS3 文本阴影在 Internet Explorer 6、7、8 和 9 中不工作。IE 6 中的.png
阴影是不透明的。
清单 8-20a 适用于 960 像素的固定宽度和 1024 像素水平分辨率的屏幕。使用的阴影宽度和深度为 1024 像素。
清单 8-20a。【shadow-fullpage.html】在网页边框周围创建阴影
`
Complete page with shadow around wrapper
** **
**
**
**
**` ` **
**
**
**
**
**
Shadow all around main white frame
Latest News
Rare bureaucrat discovered
Bureaucrats and other public 'servants' normally have all traces of common
*Some of the text has been omitted here to save space*
and jobsworths of all nationalities.
Man bites dog
Cedric Sidebottam age 46, mistook his Yorkshire terrier for a hamburger; he
spread mustard on the dog and then bit it. The dog recovered but Cedric
was admitted to hospital suffering from shock and food poisoning.
Menu
**
**
**
**
**
**
**
**
**
**
`
清单 8-20b。 清单 8-20a 的 CSS 样式表( shadow-fullpage.css)
`body { text-align: center; background: #e6e6e6;
}
/add display attributes for the semantic tags /
header, footer, section, article, nav { display:block;
}
wrapper { margin: -20px auto 0 auto; width: 940px; border:10px white solid; padding:0;
}
header { width: 940px; height: 154px; margin: 0; border-bottom:10px white solid;
background: url(img/bluepan.jpg);
}
article { margin-left:10px; width:40%; display:inline; float:left; text-align:left;
}
mainContent {margin:0; width: 940px; float: left; background-color:#aac9f6;
}
nav { width: 120px; margin-right:10px; padding: 0 5px 5px 0; float: right;
}
footer { margin:0; text-align:center; clear: both; background-color:#aac9f6;
}
br.clear { clear:both;
}
body { font: 76%/1.6 "Lucida Grande", Geneva, Verdana, sans-serif;
}
a { font-weight: bold; color: navy; text-decoration: none; border-bottom: 1px solid navy;
}
a:hover {color:#906; border-bottom: 1px solid #906;
}
header h1 { color: #fff; padding: 50px 0 0 20px; margin: 0; font-size: 2.6em;
text-shadow: 0.1em 0.1em 0.2em black;
}
h2, h3, h4 { margin-top: 0; color: black; font-weight: bold;
}
h2 { font-size: 2.2em; margin-bottom:0;
}
h3, nav h2 { font-size: 1.6em; margin-bottom:0;
}
h4 { font-size: 1.2em; margin-bottom:0;
}
p { margin-top:0; margin-bottom:6px;
}
mainContent p, #mainContent h2, #mainContent h3, #mainContent h4, #mainContent ul,
{ margin-left: 10px; margin-right: 10px; background-color:#aac9f6;
}
nav ul, nav ul li { list-style: none; margin: 0 0 2px 10px; padding: 0;
}
/SET 4 SIDED SHADOW STYLES /
.shadow-one {position:absolute; padding-top:60px; padding-left:60px;
}
.corner-a {position:absolute; right:0; top:-20px; width:60px; height:60px;
background:url('img/shadow30px.png') right top no-repeat;
}
.corner-b {position:absolute; left:0; bottom:0; width:60px; height:60px;
background:url('img/shadow30px.png') left bottom no-repeat;
}
.shadow-two { position:relative;
background:url('img/shadow30px.png') right bottom no-repeat;
}
.shadow-three { position:relative; left:-60px; top:-60px;
background:url('img/shadow30px.png') left top no-repeat;
}
.shadow-four { position:relative; left:30px; top:30px;
}`
谨慎 这种方法虽然有效,但是有一个很大的弊端。此页面的垂直长度受到您选择的阴影图像尺寸的限制。图 8-7 中使用的 1024 像素阴影将页面的垂直高度限制为 980 像素,内容面板的垂直高度限制为 780 像素。在主页上不会有问题,主页不应该超过浏览器窗口的高度;但这可能会严重妨碍后续页面。
克服身高限制
有以下三种解决方案可供选择:
Use a larger shadow image. This will mean finding or creating a larger shadow image; However, even if the vertical height is extended, it will still be limited.
Use slice shadow images.
Use shadows on both sides; No top or bottom shadows.
使用切片阴影图像
这个例子改编自安迪·巴德( ` `www.andybudd.com`` )为《博客设计解决方案》(编辑之友,2006)一书创建的模板。这个例子是一个 800 × 600 的屏幕,虽然对于今天的屏幕来说太小了,但它可以用来演示这项技术。使用更大的阴影文件,它可以适应大屏幕和高分辨率。
图 8-22a 到 8-22c 显示了使用绘画程序分割成三个项目的阴影图像。
***图 8-21a、8-21b、8-21c。【标签为 top-shadow.png、middle-shadow.png 和 bottom-shadow.png 的 ***
在此示例中,切片的高度如下:顶部切片为 20 像素,中间切片为 64 像素,底部切片为 20 像素。图 8-22 中的截图展示了一个可扩展阴影的工作示例。
图 8-22。 垂直延伸到任何高度的阴影
顶部和底部的阴影是固定的。在清单 8-22a 中,CSS 样式表让包装器应用侧面阴影。
清单 8-22a。 在网页边框周围放置可延伸的阴影(【shadow-fullpage-extendable.html】??) **
`<!doctype html>
Complete page with extendable shadow around wrapper
**
**
****
Shadow all around main white frame ` `
Latest News
Rare bureaucrat discovered
Bureaucrats and other public 'servants' normally have all traces of common
*some text omitted here to save space*
usually present in bureaucrats and jobsworths of all nationalities.
Man bites dog
Cedric Sidebottam age 46, mistook his Yorkshire terrier for a hamburger; he ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/prac-h5-proj/img/U002.jpg)
spread mustard on the dog and then bit it. The dog recovered but Cedric ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/prac-h5-proj/img/U002.jpg)
was admitted to hospital suffering from shock and food poisoning.
**
**
**
**
`
侧面阴影切片垂直重复以匹配包装的长度;这在清单 8-22b 中通过将包装器作为目标来实现。
清单 8-22b。 清单 8-22a 的 CSS 样式表(shadow-full page-extended . CSS)
`/This css template is derived from a template created by Andy Budd (www.andybudd.com)
for the book "Blog Design Solutions", and is released under a Creative Commons
Attribution-NonCommercial-ShareAlike 2.5 License /
body { margin: 0; padding: 0; text-align: center; background: #e6e6e6;
font: 76%/1.6 "Lucida Grande", Geneva, Verdana, sans-serif;
}
/add display attributes for the semantic tags /
header, footer, section, article, nav { display:block;
}
wrapper, #top, #bottom { margin: 0 auto; padding: 0 10px; width: 720px;
}
/apply shadows /
#wrapper { background: url(img/middle.png) repeat-y;
}
#top { height: 20px; margin-top: 20px; background: url(img/top.png) no-repeat;
}
#bottom { height: 20px; background: url(img/bottom.png) no-repeat;
}
header { width: 700px; height: 154px; margin: 0; margin-left:10px;
border-bottom:10px white solid; background: url(img/bluepan.jpg);
}
leftcol { margin: 0 10px; display:inline; /* fix IE double margin float bug */
float: left; width: 500px; text-align:left;
}
mainContent {margin:0 0 0 10px; border:0 10px 0 10px white solid; width: 700px;
float: left; background-color:#aac9f6;
}
nav { width: 140px; margin-right:10px; padding: 0 5px 5px 0; float: right;
}
footer { margin:0; text-align:center; clear: both;
}
br.clear { clear:both;
}
a { font-weight: bold; color: navy; text-decoration: none; border-bottom: 1px solid navy;
}
a:hover {color:#906; border-bottom: 1px solid #906;
}
header h1 { color: #fff; padding: 50px 0 0 20px; margin: 0; font-size: 2.6em;
text-shadow: 0.1em 0.1em 0.2em black;
}
h2, h3, h4 { margin-top: 0; color: navy; font-weight: bold;
}
h2 { font-size: 2.2em; margin-bottom:0;
}
h3, nav h2 { font-size: 1.6em; margin-bottom:0;
}
p { margin-top:0; margin-bottom:6px;
}
mainContent p, #mainContent h2, #mainContent h3, #mainContent h4, #mainContent ul,
mainContent ol { margin-left: 10px; margin-right: 10px
}
nav ul li { list-style: none; margin:0; padding: 0;
}
`
仅在包装纸的侧面使用阴影
对于这种技术,包装器必须接触浏览器窗口的顶部。如果可能的话,尽量让包装的底部接触到浏览器窗口的底部。
图 8-23 显示了带有侧阴影的页面。
图 8-23。 仅添加到网页侧面的阴影
在清单 8-23a 中,顶部和底部阴影位置被省略,包装器通过 CSS 表单中的顶部边距移动到页面顶部。在清单 8-23b 中,CSS 让包装器将侧面阴影放置为垂直重复的图块。
清单 8-23a。【side-shadow-fullpage-extendable.html 仅在网页侧面添加阴影
`<!doctype html>
Complete page with extendable shadow down the sides of the white border
****` `
Extendable shadow at the sides only
Latest News
Rare bureaucrat discovered
Bureaucrats and other public 'servants'
*some text has been omitted to save space*
usually present in bureaucrats and jobsworths of all nationalities.
Man bites dog
Cedric Sidebottam age 46, mistook his Yorkshire terrier for a hamburger; he
spread mustard on the dog and then bit it. The dog recovered but Cedric
was admitted to hospital suffering from shock and food poisoning.
**
**
`
清单 8-23b。 清单 8-23a 的 CSS 样式表(side-shadow-full page-extended . CSS)
`/This css template is adapted from a template created by Andy Budd (www.andybudd.com)
for the book"Blog Design Solutions", and is released under a Creative Commons Licence /
body { margin: 0; padding: 0; text-align: center; background: #e6e6e6;
font: 76%/1.6 "Lucida Grande", Geneva, Verdana, sans-serif;
}
/add display attributes for the semantic tags /
header, footer, section, article, nav { display:block;
}
wrapper{ margin: 0 auto -20px auto; padding: 0 10px; width: 720px; clear:both;
}
/apply drop shadows to sides /
#wrapper { background: url(img/middle.png) repeat-y;
}
header { width: 700px; height: 154px; margin: 0; margin-left:10px;
background: url(img/bluepan.jpg); border-top:10px white solid;
}
leftcol { margin: 0 10px; display:inline; /* fix IE double margin float bug */
float: left; width: 500px; text-align:left;
}
#mainContent {margin:0; width: 700px; float: left; background-color:#aac9f6;
border:10px white solid; min-height:425px;
}
nav { width: 140px; margin-right:10px; padding: 0 5px 5px 0; float: right;
}
footer { margin:0; text-align:center; clear: both; background-color:#aac9f6;
}
br.clear { clear:both;
}
a { font-weight: bold; color: navy; text-decoration: none; border-bottom: 1px solid navy;
}
a:hover {color:#906; border-bottom: 1px solid #906;
}
header h1 { color: #fff; padding: 50px 0 0 20px; margin: 0; font-size: 2.6em;
text-shadow: 0.1em 0.1em 0.2em black;
}
h2, h3, h4 { margin-top: 0; color: navy; font-weight: bold;
}
h2 { font-size: 2.2em; margin-bottom:0;
}
h3, nav h2 { font-size: 1.6em; margin-bottom:0;
}
p { margin-top:0; margin-bottom:6px;
}
mainContent p, #mainContent h2, #mainContent h3, #mainContent h4, #mainContent ul,
mainContent ol {margin-left: 10px; margin-right: 10px
}
nav ul li { list-style: none; margin:0; padding: 0;
}`
使用形状拼贴软件
这个软件可以产生很好的边框和阴影,如图图 8-24 所示。
图 8-24。 在形状拼贴中创建的阴影和白色边框
可以从 http:// www.shapecollage.com
下载形状拼贴的免费试用版。它可以产生有或没有白框的阴影,如左图 8-25 所示。
如果在探索之后,你认为它可能有用,你可以花大约 29 美元(26 英镑)购买它,然后你将能够制作没有水印的图像,以及解锁几个额外的功能。顾名思义,该程序还可以创建拼贴画。
我发现形状拼贴一开始很难使用。以下是测试免费试用版的基本指南。
在打开形状拼贴之前,请记下以下信息:
需要投影的图像的大小。
图像在硬盘上的位置。
您打算放置已完成图像的网页的背景颜色。
打开形状拼贴,然后关闭 nag 屏幕。
在下一个面板上,在“形状选择矩形”下,将拼贴大小设置为比图像宽度宽大约 50 %,并将高度设置为比图像高度大大约 50%。
在所示的示例中,图像宽 296 像素,高 196 像素。我把拼贴尺寸设为 450 × 300。
在“照片大小”下,单击“手动”,并将实际图像大小设置为 296 像素。
在“照片”下,将数量更改为 1。
单击外观选项卡。
在背景字段中,单击白色字段。您将看到一个颜色选择器。选择网页的背景颜色。
用同样的方法选择边框颜色。将默认边框宽度保留为 3.3%。如果不希望图片周围有边框,请将其更改为零。
单击高级选项卡并选择旋转为无和 0,0。
对于阴影偏移,选择 1。
点击文件 添加文件。
导航到文件的位置并选择它,然后点按“好”。
你将回到主屏幕。在中央面板的底部,单击“创建”按钮。
在下一个屏幕上,您可以选择一个文件夹并命名文件。你可以选择三种文件格式.jpg
、.png
或.psd
(Photoshop 文件)。
单击保存。
会出现一个小弹出窗口,询问您想要什么质量。默认就可以了,所以单击 Save。
总结
在这一章中,你学习了几种创建阴影的方法,使你的图片和文本块看起来像浮在页面上。本章首先描述了新的 CSS3 盒阴影模块,你学习了如何应用 CSS3 阴影到图像和文本。然后,因为 IE 7 和 IE 8 不支持 CSS3 框阴影,有人建议可以使用图形包来应用投影。特别是,GIMP 2.6 被推荐为一个免费的综合程序,具有极其简单的投影功能。然后演示了一种替代方法;它使用了阴影背景图像,可以在所有现代浏览器和 IE 8 中看到。
在下一章,你将学习几种创建拼贴画的方法,以及如何构建一个带标题的图片库。**
九、创建拼贴画和画廊
静态拼贴和图库是显示多幅图像的流行方式(除了在第二章中描述的翻转图库)。拼贴画更具装饰性,通常没有标题。画廊图像通常需要标题;这些可以使用 CSS 或者使用新的 HTML5 <figure>
标签来添加。然而,最后一种方法需要使用一些 JavaScript 来使 IE 7 和 IE 8 能够理解<figure>
标签。
在 1998 年推出 CSS 之前,图片组排列在一个表格中。这导致了大量的 HTML 标记。表格现在已经被弃用,CSS 被用来轻松地创建图片的行和列,而 HTML 标记要少得多。网页设计者自然倾向于立即想到代码或图形软件来创建拼贴画。一些低技术含量的方法是可用的,它们在某些场合是有用的。本章从其中的两种方法开始。
制作一个纸糊拼贴画,然后扫描它
一些客户给了我一堆从他们的贸易小册子上剪下的东西,并让我用它们做一个拼贴画放在他们的主页上。
这可能会相当混乱,因为它涉及到纸、剪刀和浆糊。与其他布局相当死板的技术相比,这种方法允许以有趣的方式排列图像。
当混乱的部分完成后,剪贴拼贴被扫描,生成的图像保存在你的网站文件夹中。使用图像处理包用颜色填充空白的角落空间,以匹配您的网页的背景颜色。或者,您可以将其保存为带有透明背景的.gif
或.png
文件。
使用文字处理器
客户有时会在文字处理器上设计拼贴画,然后把文件交给我。我可以向他们索要原始图片,然后根据这些图片创作拼贴画,但他们可能会感到不快,因为这暗示着他们的作品不够好。
文字处理器似乎不太可能是制作拼贴画的方式;但是,如果您熟悉在页面上插入和排列图像,这个过程会很容易。尽可能避免使用桌子;但是如果您应该使用表格,请在边框和底纹选项中选择无。
图 9-1 说明了这样一个事实,即使用文字处理器创建的拼贴画不必局限于一个矩形。本章中使用的教堂照片由威廉·卢埃林善意许可。
图 9-1。 用微软 Word 制作的拼贴画
文字处理器方法如下:
将图像插入文字处理文档,并将其排列成拼贴画。
使用 Shift+单击选择图片的组 。
将该组复制并粘贴到 Microsoft Paint 或其他画图程序中。
将群组保存为.tif
文件,并根据需要进行编辑。
将其导出为压缩的.jpg
文件或.png
文件。
这在白色背景下效果最好。如果放在纯色背景上,在将拼贴画插入网页之前,必须用背景色填充构成图 9-1 中拼贴画四个角的矩形空间。
你可以下载一个 MS Word 拼贴模板,但是我个人觉得这些模板限制太多了一点。试试[
www.microsoft.com/canada/home/memories-and-crafts/articles/-photo-collage.aspx](http://www.microsoft.com/canada/home/memories-and-crafts/articles/create-a-digital-photo-collage.aspx)
的模板。
使用 CSS 在页面上定位不同的图像
可以使用 HTML 和 CSS 构建一个拼贴来定位图像(见图 9-2 )。
图 9-2。 图像间有小缝隙的拼贴画
大多数拼贴软件只会产生一个长方形的拼贴。要制作出像图 9-2 那样的布局,最好的方法是使用 CSS2 和一些<div>
(见清单 9-2a 和 9-2b )。这个项目有小间隙,一些业主更喜欢这样,因为每个图像都被清晰地定义。
清单 9-2a 。创建一个图像之间的默认间隙拼贴(collage-churches-gaps.html)
`<!doctype html>
Collage of five churches-with gaps
*meta details go here*
`
除了 Opera 之外,所有主要浏览器中的图像排列良好且一致;在 Opera 中,图像的下一行与上一行重叠大约三个像素。注意换行<br>
;插入它是为了将两个图像向下推,以创建第二行图像。
清单 9-2b。【collage-churches-gaps.html】清单 9-2a 的 CSS 样式表
`body { width:960px; min-width:780px; margin:auto;
}
img { border:0; margin:0; padding:0;
}
container { text-align:center; margin:10px auto 0 auto;
}
collage { margin:0 auto 0 auto; text-align:center;
}`
消除差距
尽管没有边界或空白,但在图 9-2 的中,每幅图像之间都有两个像素的间隙。一些客户更喜欢这样,但是那些希望图片相互对接的客户怎么办呢?在 IE 6、IE 7 和 IE 8 中,以及除 Opera 之外的所有其他浏览器中,使用负边距可以很好地缩小差距。下一个项目,清单 9-3 ,展示了使用负边距作为一种精确定位图像的方式,从而消除了空白。
图 9-3 显示了同样的拼贴画,通过使用 CSS 标记来闭合缝隙。
图 9-3。 使用负边距消除图像之间的间隙
这链接到一个不同的样式表(churches-style2.css
),它包含闭合间隙的负边距(以粗体显示)。标记还包含一个 IE 条件(见清单 9-3a )。
清单 9-3 a .使用负边距消除间隙(collage-churches.html)
`<!doctype html>
Collage of five churches-with no gaps
*meta details go here*
`
清单 9-3b。 清单 9-3a 的样式表(churches-style2.css)
`/position body and table at horizontal centre of screen /
body {width:960px; font-family:"times new roman"; font-size:medium;
color:navy; margin:auto; min-width:780px;
}
img { border:0; margin:0; padding:0;
}
container { text-align:center; margin:10px auto 0 auto;
}
collage { margin:0 auto 0 auto; text-align:center;
}
collage img { margin-top: -3px; margin-bottom:-2px; margin-left:-2px;
margin-right:-2px;
}`
在 IE 6、IE 7 和 IE 8 中,图像的底部行现在与顶部行重叠一个像素,因此 IE 条件位于 HTML5 标记的头部。IE 的条件样式表是collage-ie.css
,它只包含一行,如下所示:
#collage img { margin:-2px; }
IE 6、IE 7、IE 8、Mozilla Firefox、Safari 和 Chrome 现在可以无重叠地对接在一起。在 Opera 中,底行与顶行重叠三个像素。因为 Opera 在浏览器市场的份额非常小,所以这个解决方案是一个合理的妥协。
合并图像
一个客户可能会要求我模糊单个图像的边缘,以制作一幅图片相互融合的拼贴画。我觉得这给人一种整体混乱的感觉,但客户永远是对的。花几个小时修饰边缘并试图重叠它们不是我的乐趣所在,尤其是最终结果可能会让客户失望。如果客户坚持合并图像,有三种解决方案:
如果客户希望使用其销售手册中的合并拼贴画,扫描手册图像并在网页上使用。
用纸粘贴,然后扫描结果。然而,这看起来并不专业;示例如图图 9-4 和图 9-5 所示。
使用专有软件。
图 9-4。 裁剪出比最终图像应该大的图像。把它们大致摆好。
如图 9-4 所示,在边缘重叠的地方,将其中一个图像的边缘切割成弯曲的形状或制作一个锯齿边缘。将所有图像粘贴在一起,扫描组装好的拼贴画。然后,在绘画程序中使用克隆画笔(或模糊工具),柔化锯齿或曲线的边缘。
最终结果应该类似于图 9-5 。
图 9-5。 使用纸张、粘贴和扫描合并图像
图 9-5 是一个糟糕的例子,因为它有复杂的图像和花哨的颜色。如果你使用不那么杂乱的照片,选择柔和的颜色,合并后的图像就不会那么杂乱。
使用专有软件
一些绘画/照片处理程序允许将几幅图像合并成一幅大图像;然而,我发现这个过程比 MS Word 方法或 CSS 方法更费时,也更受限制。
我在本节中介绍的程序并不直观,所以请准备好花一些时间来探索它们。所有的程序产生一个矩形拼贴画。如果您需要像图 9-3 、 9-4 和 9-5 这样的非矩形图像,请使用 MS Word 方法或 CSS 方法,放弃模糊邻接区域的所有希望。
微软贴牌
微软自动拼贴程序产生类似于图 9-6 所示的拼贴画。对于 Windows XP,Vista 和 Windows 7,30 天免费试用版是有用的,但它是带水印的。售价 20 美元(英国 18 英镑)。
图 9-6。 使用微软自动拼贴的拼贴画
该程序适合拼贴风格的横幅标题,但该软件有以下两个缺点:
拼贴画中使用的最少图片数量是七张。对于打印的拼贴画来说,这可能是可以接受的,但是在电脑屏幕上,超过六张图片看起来就像蔬菜店里的爆炸。
放置照片需要大量的反复试验。
要下载 Microsoft AutoCollage,请转到[
explore.live.com/windows-live-photo-gallery](http://explore.live.com/windows-live-photo-gallery)
。选择一种语言,然后单击“立即下载”按钮。双击下载的文件wlsetup-web.exe
安装程序。打开程序,在菜单栏的右侧找到标有 Extras 的项目。单击向下的小箭头并选择自动充值 2008。将打开一个网页;单击立即下载。在左侧面板上,单击下载 30 天试用版。主页上的一个视频解释了如何使用该软件,但评论不是很清晰。
提示 在使用任何这些程序或项目之前,准备好将图像的副本放在一个新的文件夹中,这样你就可以很容易地找到它们。
形状拼贴
形状拼贴的免费试用版有局限性,但您可能希望研究它。如果您掌握了试用版并发现它很有用,则可以以合理的价格获得完整版。网站位于[
www.shapecollage.com](http://www.shapecollage.com)
。
提示 Shape Collage 的免费试用版水印严重。在撰写本文时,无水印的 Pro 版本价格约为 75 美元。形状拼贴也适用于 iPhone 和 iPad。
Picasa 3.0
Picasa 3.0 是制作各种拼贴格式的免费软件;但是它不支持如图图 9-6 所示的合并图片。这个程序的工具栏很不寻常,因为它位于屏幕的底部。在工具栏上,您可以找到拼贴图标。
Picasa 最大的秘密是如何保存完成的拼贴画。奇怪的是,你不用保存图像。当您单击创建拼贴时,它会自动将其保存在 Picasa 项目文件夹中。Picasa 3.0 只为偶数张照片制作拼贴画,完成的拼贴画始终是一个长方形。
其他资源
以下程序提供了类似的功能:
Photo visit ([
www.photovisi.com](http://www.photovisi.com)
): Free of charge. Some color changes may occur when using this program.
Smilebox ([
smilebox.com](http://smilebox.com)
): Free of charge. Mute your speakers before the interview to avoid disco-style noise.
IFoxSoft photo collage www.ifoxsoft.com
): Free trial, then 26 dollars (23.50 pounds).
Phoix ( www.photomix.com
): Free trial, then 29 dollars (26 UK).
Picture collage maker ( www.picturecollagesoftware.com
): Free trial, then 30 dollars (27 UK).
使用图形程序创建拼贴画
大多数图形包可以创建一个拼贴画,但是很难找到说明,这个过程有时会比使用 HTML5 或 CSS 花费更长的时间(例如清单 9-3a 和 ?? b)。然而,更微妙的效果往往可以通过使用图形包来实现;图像可以移动到其他图像的后面或前面,允许重叠。此外,通过降低每层的不透明度,重叠的图像可以相互融合,并且每个图像可以具有模糊的边缘以增强融合。下一个项目告诉你如何用 GIMP,一个免费的图形程序制作基本的拼贴画。最终结果如图图 9-7 所示。
图 9-7。 用 GIMP 创建的拼贴画
用 GIMP 创建拼贴画
对于这个项目,准备好图片,把它们放在一个新的文件夹里,这样你就可以很容易地找到它们。对于图 9-7 ,这五张图片的尺寸被调整为 200 像素宽。顶行中的三幅图片将给出 600 像素的水平总数。因此,拼贴需要一个至少 600 像素宽(3 × 200)和大约 400 像素高(2 × 200)的背景层。注意,在 GIMP 中,“单词对话”是按照欧洲的方式拼写的。这些阶段如下:
打开 GIMP,点击 Windows 可停靠对话框 图层。这将把层对话面板放在屏幕上。点击文件 新建。
在下一个对话框中,单击横向图标,选择 640 像素宽× 400 像素高,然后单击确定。在工具箱面板上,单击交叉的双箭头选择“移动”。
在菜单上,单击文件 打开 作为新层打开。导航到文件夹,按住 Ctrl 键选择图像,同时单击所有图像。然后点击打开按钮,自动将它们全部复制到新图层。
现在你会看到层对话框面板中列出的层。第一幅图像将出现在图像窗口中。您可以将图像移动到窗格的左侧和顶部。单击“层”对话框中的下一层。一个虚线框将出现在第一个图像的顶部。向右滑动虚线矩形,您将看到下一个图像出现。
点击图层对话框中的下一个图层,将生成的虚线矩形从上一个图像移开。现在,您将在顶行看到三个可见图像。对剩下的两个图像重复此操作,并将它们移动到顶行下面的位置。
从现在开始,要滑动图像,首先你需要在图层对话框面板中点击它的图层。您将能够滑动它们,并选择是重叠它们还是保持它们彼此相邻。如果它们重叠,并且您希望切换重叠的图像,使其位于另一个图像之上,请在“层”对话框中单击该图像的层。在“层”对话框中,单击绿色向上箭头(或绿色向下箭头,如果您希望将其移动到另一个图像下方)。
你现在可以保存拼贴画了。在另存为对话框面板中点击文件 另存为,在面板顶部输入文件名。一定要给它加上一个后缀,比如.png
。
导航到要存储拼贴画的文件夹,然后单击“保存”按钮。将出现一个导出对话框;确保选中“合并可见层”单选按钮。单击导出按钮。
在下一个 PNG 对话框中,接受默认设置并单击保存。
提示 你可以在[www.gimp.org/downloads/](http://www.gimp.org/downloads/)
下载 GIMP 及其图解手册。 我还推荐阅读《GIMP 入门:从新手到专业人士》一书,作者是 Akkana Peck (Apress,2008)。
带标题的图片库
标题可以极大地增强图片库的效果;添加的文本可以提供关于图片的有用信息,并提供更有趣的网页。图 9-8 显示了一个设置为图库的页面。每张图片都有说明。尽管字幕很少,信息也不丰富,但它们起到了演示技术的作用。
图 9-8 。使用 CSS2 给图片添加标题的图片画廊
我要感谢肖像艺术家安·罗·琼斯,她友好地允许我使用她令人印象深刻的肖像照片,以及我为她设计的网页的一部分。在[
www.annroejones-artist.co.uk](http://www.annroejones-artist.co.uk)
访问她的网站。
第一章描述了 HTML5 是如何让图片拥有标题的,无论图片被移动到哪里,标题都会附着在图片上。这也可以通过在没有语义标签的 HTML5 页面中使用 CSS2 来实现,如下一个项目所示。这意味着 IE 7 和 IE 8 的用户可以查看图库,网页设计师不必将 Remy Sharp 的 JavaScript 片段插入代码,如清单 9-8a 所示。
提示 此时,HTML5 纯粹主义者会惊恐地喘息。不要害怕。我在清单 9-8c 中展示了一个纯 HTML5 版本。无论是使用列表 9-8a 和列表 9-8b 还是列表 9-8c 和列表 9-8d ,拼贴画的外观都是一样的。
清单 9-8a。【portraits.html】显示带字幕的图片集(??)
`<!doctype html>
Gallery pictures with attached captions
*meta details go here*
Ann L Roe SWAc
SOME PORTRAITS BY ANN ROE (JONES) SWAc
All of Ann's portraits are painted in oils on canvas.
For information on commissioning a portrait, click the 'Commissions![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/prac-h5-proj/img/U002.jpg)
' button
Click the 'Contact Ann' button to request more detailed information.
*Footer goes here*
`
清单 9-8b。 清单 9-8a 的 CSS 样式表
`body { min-width:980px; font-family:"times new roman"; font-size:medium;
color:black; margin:auto; max-width:1000px;
}
hdr { width:100%; margin:auto; height:60px; text-align:center;
}
/* use display:inline to remove IE6 double margin bug from side menu*/
leftcol { float:left; margin-left:0; width :135px; display:inline; padding:0; zoom:1;
}
img { border:none;
}
midcol-portraits {margin-left:175px; margin-right:15px; zoom:1;
}
div .figure { float:left; margin-right:5px; display:inline;
}
.figure p { font-size:80%; height: 15px; margin:0 auto 0 auto; text-align:center;
width:200px;
}
gallery img { margin-right:20px; margin-top:5px;
}
aside { float:left; width:260px;
}
ftr {clear:both; text-align:center;
}
/* set side menu position /
ul#menu { float:left; margin-left:0; width:120px;
}
/ set general side button styles /
li.btn { margin-bottom: 4px; text-align: center; list-style:none;
}
/ set general anchor styles /
li.btn a { display: block; color: white; background:#D20B0D; font-weight: bold;
text-decoration: none
}
/ specify state styles /
/ mouseout (default) /
li.btn a { background: #D20B0D; border: 4px outset #FFAAAA;
}
/ mouseover /
li.btn a:hover { background: maroon; border: 4px outset maroon;
}
/ onmousedown */
li.btn a:active { background:#AECBFF; border: 4px inset #AECBFF;
}
h1 {font-size:300%; font-weight:bold; color:#D20B0D; margin-top:0; margin-bottom:0;
font-family:"Calligraph421 BT"; font-style:italic; text-align:center;
}
span.swac {font-size:x-large; font-weight:bold; color:#D20B0D; font-style:italic;
text-align:center;
}
h3,h4 { margin-top:0; margin-bottom:0;
}
h2 {font-size:x-large; font-weight:bold; margin-top:0; margin-bottom:0;
}`
对于 HTML5 纯粹主义者来说
现在对于纯 HTML5。清单 9-8c 使用语义标签和 JavaScript 片段,允许 IE 8 用户查看页面。包含 HTML5 标题;这些使用标签<figure>
和<figcaption>
。
清单 9-8c。 使用 HTML5 标签显示带有标题的图片画廊(肖像-html 5-标题)
`<!doctype html>
Gallery pictures with HTML5 attached captions
meta details go here
SOME PORTRAITS BY ANN ROE (JONES) SWAc
All of Ann's portraits are painted in oils on canvas.
For information on commissioning a portrait, click the ' ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/prac-h5-proj/img/U002.jpg)
Commissions' button
Click the 'Contact Ann' button to request more detailed information.
`
清单 9-8d 展示了 HTML5 图库的 CSS。
清单 9-8d。 清单 9-8c 的 CSS 样式表
`/set attributes for consistent appearance in all browsers /
p, ul, li, h1, h2 { margin:0; padding:0;
}
img { border:0;
}
/add display attributes for the semantic tags /
header, footer, section, article, nav { display:block;
}
wrapper{min-width:980px; font-family:"times new roman"; font-size:medium; color:black;
margin:auto; max-width:1000px;
}
header {width:100%; margin:auto; height:60px; text-align:center;
}
midcol-portraits {margin-left:165px; margin-right:15px; zoom:1;
}
div .figure { float:left; margin-right:5px; display:inline;
}
.figure p { font-size:80%; height: 15px; margin:0 auto 0 auto; text-align:center; width:200px;
}
gallery img { margin-right:20px; margin-top:5px;
}
aside { float:left; width:260px;
}
footer {clear:both; text-align:center;}
/* set side menu position /
nav {float:left; margin-left:0; width :135px; padding:0; zoom:1;}
/ set general side button styles /
nav ul li{ margin-bottom: 4px; text-align: center; list-style:none; }
/ set general anchor styles /
nav ul li a { color: white; background:#D20B0D; font-weight: bold; text-decoration: none }
/ specify state styles /
/ mouseout (default) /
nav li a { background: #D20B0D; border: 4px outset #FFAAAA; display:block; }
/ mouseover /
nav li a:hover { background: maroon; border: 4px outset maroon;}
/ onmousedown */
nav li a:active { background:#AECBFF; border: 4px inset #AECBFF }
h1 {font-size:300%; font-weight:bold; color:#D20B0D; margin-top:0; margin-bottom:0;
font-family:"Calligraph421 BT"; font-style:italic; text-align:center;
}
span.swac {font-size:x-large; font-weight:bold; color:#D20B0D;
font-family:"Calligraph421 BT"; font-style:italic; text-align:center;
}
h3,h4 { margin-top:0; margin-bottom:0;}
h2 {font-size:x-large; font-weight:bold; margin-top:0; margin-bottom:0;}`
总结
在这一章中,你发现了几种创建拼贴画的方法和两种制作带标题图片库的方法。你可能想探索给图库图片添加阴影的可能性,这是你在第八章中学到的技巧。或者也许你可以尝试在第二章中描述的翻转图库。现在,您有几种方法来呈现图像集合。
在下一章,你将学习如何在网站上添加 PayPal 支付系统。
十、添加 PayPal
支付商品和服务的 PayPal 系统非常受欢迎,非常安全,受到大多数用户的信任。自从 PayPal 增加了使用信用卡/借记卡的功能,这项服务蓬勃发展,现在它是最被接受的支付和接收付款、订阅或捐款的方法之一。
PayPal 支付系统可以很容易地集成到网页中,这样人们就可以支付商业网站上提供的商品和服务。起初,你可能会对建立一个 PayPal 账户感到紧张,因为你在和钱打交道,尤其是你可能在和你客户的钱打交道。然而,贝宝已经使这一过程,你可以很容易地回溯,甚至取消,并重新开始。你在 PayPal 表格中输入的几乎所有内容都可以在以后更改。
PayPal 是如何运作的?
PayPal 是银行吗?PayPal 虽然不是传统银行,但却是互联网银行。其实就是一家只做线上操作的银行;它没有分支。由于没有分支机构或分支人员,PayPal 可以为网站所有者和网站用户提供非常经济的现金处理服务。PayPal 甚至处理货币兑换,这在处理国际商务时非常有用。此外,通过 PayPal,商家可以接受多种形式的支付,包括所有主要的信用卡。
PayPal 对每笔交易收取少量费用。这只适用于网站所有者,不适用于客户。在撰写本文时,典型的收费是 0.32 美元(在英国是 0.20 美元),外加 3%的交易成本。例如,如果你卖 16 美元(10 英镑)的东西,总费用可能是 0.80 美元(0.50 英镑)。这些费用现在可能已经过时了,但它们确实表明 PayPal 的费用非常实惠。此外,费用因国家、账户类型和交易而异;在美国,这一比例从总额的 1.9%到 2.9%不等,外加 0.30 美元。
货币兑换是要收费的。从小额的月销售额的 3.4%到超过 93,000 美元(55,000 英镑)的月销售额的 1.4%不等。
PayPal 从您的 PayPal 账户向您的个人银行账户转账时扣除非常少的费用。
好吧,PayPal 实际上是免费的,那么它是如何生存的呢?2.2 亿 PayPal 账户拥有者在 PayPal 账户中有存款。这些钱大部分是由付费客户存到那里的。这笔钱为贝宝赚取利息。此外,广告商向 PayPal 付费,让它偶尔向你发送广告。
要从您的 PayPal 帐户向您的个人银行帐户转账,您必须访问您的 PayPal 帐户,并告知 PayPal 要转账的金额(参见本章末尾的“管理 PayPal 帐户”一节)。
小心 贝宝非常安全,但要提防声称来自贝宝的电子邮件。当 PayPal 给你发邮件时,它会注明你的全名 ,并且永远不会 询问你的 PayPal 个人信息。伪造的 PayPal 电子邮件发送给“亲爱的会员”或“亲爱的 PayPal 会员”,它们是针对您的帐户信息的网络钓鱼。将伪造的电子邮件转发给spoof@paypal.com
以帮助追踪这些罪犯。
设置 PayPal 账户
一旦你知道要寻找什么,一点常识将指导你安全地通过注册和配置步骤。此外,PayPal 在[
www.paypal.com/help](https://www.paypal.com/help)
有一个帮助中心网站。在[
www.paypal.com/webapps/mpp/merchant](https://www.paypal.com/webapps/mpp/merchant)
中简要描述了设置商业账户和下载支付按钮的步骤。在那里,您可以找到五种可供下载的支付按钮。对英国读者来说,最好的起点可能是[
www.paypal-business.co.uk/pdf/website-payments-standard.pdf](https://www.paypal-business.co.uk/pdf/website-payments-standard.pdf)
的一份 PDF 文档。
该过程假设您的客户需要一个商业帐户。仔细记下您输入的所有详细信息,包括商家帐户 ID。仔细地把细节归档,这样你就能很快很容易地找到它们。第一步是为网站所有者建立一个 PayPal 账户。本节将指导您完成这一过程。
美国读者应该去[
www.paypal.com/webapps/mpp/merchant](https://www.paypal.com/webapps/mpp/merchant)
。
英国读者应该访问[www.paypal.co.uk/uk](http://www.paypal.co.uk/uk)
并点击注册按钮。 在主页上为您的企业选择 PayPal,然后点击开始按钮。
美国读者应该点击“开始”按钮。在下一个屏幕上,您可以升级;选择升级或单击“不,谢谢”按钮。
在下一个屏幕上,美国读者会看到对接下来三个步骤的解释。单击创建新帐户按钮。
在下一个屏幕上,美国和英国的读者都可以注册一个商业帐户。单击“开始”按钮。
在注册屏幕中单击相应的开始按钮后,您将进入另一个注册屏幕,再次显示三个步骤。在这里,您可以从下拉菜单中选择国家和语言,然后单击“创建新帐户”按钮。使用下拉列表选择业务类型。在接下来的三个步骤中,您将添加客户的初步信息以设置帐户,并确认客户的电子邮件地址。PayPal 将向您的客户发送一封包含简单说明的电子邮件。
On the next screen you will find a drop-down menu where you must choose a Payment Solution. No advice is provided by PayPal, but the choices are explained at the HomeBusinessWiz.com web site at [
www.homebusinesswiz.com/2010/04/paypal-business-accounts-standard-or-pro.html](http://www.homebusinesswiz.com/2010/04/paypal-business-accounts-standard-or-pro.html)
网站建议您选择网站支付标准。 使用这种支付解决方案,客户可以通过 PayPal 或借记卡/信用卡支付。当顾客付款时,他们来到 PayPal 托管的支付页面。标准付费方案是免费的,但专业方案有月租费。选择付款方式后,点击继续。
填写下一张表格,然后单击继续。提供所需信息的下一项以完成注册。您将收到一封给出最终指示的电子邮件。然后你将有一个贝宝帐户。
要链接到您的银行帐户,请访问您的 PayPal 帐户并设置您的个人银行信息。作为一种帐户验证方法,PayPal 会将少量资金存入您的银行帐户,然后要求您验证这笔钱是否已存入。
现在帐户设置好了,下一步就是登录帐户,调整客户的 PayPal 档案,以反映客户的偏好。
使用个人资料调整您客户的账户详情
档案是你微调客户的个人和付款细节。PayPal 帐户设置了默认的个人资料。您可能需要对此进行调整。例如,您可能希望添加增值税/销售税详细信息。要修改您的个人资料,请访问 PayPal 主页并登录您的帐户或您客户的帐户。
在蓝色标签行的正下方,找到 Profile 并单击它。
对于美国帐户,单击个人资料,然后找到销售税,并单击屏幕最右侧的更新链接。销售税选项允许您按州创建销售税,也可以按国家创建国际交易的销售税。单击添加新销售税,选择地区,然后输入销售税的百分比。使用美国的国际销售税选项,输入邮政编码并选择州。如果邮费也要缴纳销售税,请勾选标记为“将费率应用于邮费金额”的框。
在英国,查找 VAT,然后单击屏幕最右侧的更新链接。在下一个屏幕中,输入增值税的百分比。如果邮资也要缴纳增值税,请勾选标记为“将费率应用于邮资金额”的框。
单击黄色的继续按钮并注销。
现在您已经有了一个帐户并设置了客户端的个人资料偏好设置,您可以选择并下载安全支付按钮。
下载加密的支付宝按钮
曾经,流氓买家可以侵入贝宝支付按钮代码,输入降价信息。PayPal 提供了一种加密方法,但是非常复杂,无法编辑。现在 PayPal 有一个按钮加密程序,非常简单,账户持有人可以轻松编辑。按钮的代码现在安全地存放在 PayPal 网站上,而不是网页上。黑客们再也买不起这些价格了。如果你的网站有旧的、易受攻击的按钮,它们将需要被重新创建。
PayPal 提供两种下载托管安全按钮的方法:
The new button is used to create a new website page.
Add a new button to a web page where one or more buttons have been saved and hosted.
第一步:访问 PayPal 按钮工厂
要访问 PayPal 按钮工厂,请按照以下步骤操作:
访问[
www.paypal.co.uk](http://www.paypal.co.uk)
(在英国)或[www.paypal.com](http://www.paypal.com)
(在美国)。
登录您的 PayPal 帐户。
单击英国帐户中的个人资料。对于美国帐户,请转到商家服务选项卡和我的已保存按钮。
寻找 PayPal 按钮 管理我的支付按钮。单击最右侧的相关更新链接。
在下一个屏幕上,单击右侧相关项目框中的新建按钮。
在下一个屏幕上,从下拉菜单中选择一个按钮类型。当您选择一个按钮时,图像将出现在标题为“您的客户视图”的框中。按钮列表包括“立即购买”、“购物车”、“礼券”、“捐赠”、“订阅”、“自动结算”和“分期付款”。如果您单击“我应该选择哪个按钮”项,您将会看到每个按钮的插图以及对其用途的解释。请务必选择标题“商家帐户 ID”下的“使用我的安全商家帐户 ID”。 这会屏蔽您客户的电子邮件地址,防止垃圾邮件发送者找到它。
在标有“自定义按钮”的框中,您可以修改按钮,甚至添加您自己的图像。
填写剩余的详细信息。当你感到满意时,点击创建按钮,然后你就可以将代码复制并粘贴到你的网页中。
如果您对按钮感到满意,您可以通过单击页面底部的 Create Button 为它生成 HTML 代码。
第二步:跟踪库存、利润和损失(可选)
你会在屏幕底部找到这个可选项目。它为按钮提供跟踪和库存选项。要使用此功能,请勾选标记为跟踪库存、利润和损失的框。
You can now choose whether to track the inventory level by project or by option. In both cases, you must enter the previously entered project ID.
For Inventory Quantity, enter the item quantity that you currently stock. If you select the inventory level option under "Reminder Quantity", PayPal will send an e-mail to inform you that the product is out of stock.
您将被要求指定是否允许客户购买缺货的商品。如果您选择“是”,客户可以照常购买缺货商品。如果您选择“否”,他们将无法购买该商品。您可以选择将客户重定向到一个网页,通知他们该商品缺货;当用户单击“继续购物”时会出现这种情况。
在这个屏幕上,PayPal 还提供了一个报告系统来跟踪利润和损失。
第三步:定制按钮的高级功能
在此步骤中,您可以执行以下操作:
Allow your customers to add messages to the order.
Let you get the customer's postal address.
Set up a webpage for your customer to return after completing or canceling the checkout procedure.
Experienced designers can add other advanced variables to buttons. Advanced variables provide many useful functions for more complicated ordering process, including sending information back to your website (if you want a special after-sales page).
复制并保存按钮
完成前面的步骤后,您可以单击页面底部的“创建”按钮。
代码出现在下一个窗口中。单击选择代码按钮。然后使用 Ctrl+C 将代码复制到内存中。或者,如果您希望进行一些更改,请单击“返回编辑此按钮”链接。
注意 将每个按钮的代码粘贴到记事本等文本编辑器中。用容易识别的名称保存。这是一个安全预防措施,以防你弄乱了网页,不得不重新开始。你不会想要从头再下载所有按钮的麻烦。
在页面中嵌入 PayPal 按钮
提示 我建议你先练习使用默认按钮。熟悉 PayPal 界面后,尝试更复杂的按钮。请记住,您可以通过创建按钮、嵌入按钮、然后删除按钮来练习。
嵌入 PayPal 按钮只需从 PayPal 网站下载生成的代码,并将其粘贴到您的页面上。
设计您的 PayPal 订单页面并保存。这将是一个基于您网站上其他页面样式的页面。留下空白区域,当你下载了 PayPal 按钮后,你将最终粘贴它们。
在“代码”视图中将页面加载到 web 设计程序中。然后将按钮代码复制并粘贴到页面代码中。
如果您有添加到购物车按钮,您还需要下载查看购物车按钮。选择它的代码并将其复制到网页 HTML。您可以在页面上添加第一个按钮后执行此操作,它将适用于该页面上所有后续添加的按钮。在一个页面上,您只需要一个查看购物车按钮。“查看购物车”按钮在您所在国家的界面上可能不太明显;它可能无法从主菜单中获得。在这种情况下,要创建一个查看购物车按钮,您需要在单击购物车按钮的 Create Button 之后转到代码页。您可以选择创建一个查看购物车按钮(代码窗口下面的第二个项目)。
注 图 10-1 中的截图是离线创建的;因此,PayPal 按钮尚不可见。
图 10-1 。未连接到互联网的页面
PayPal 按钮在图 10-1 中不可见,因为它们是由 PayPal 动态加载的。在一个离线运行的所见即所得程序中,你的页面会出现如图 10-1 所示。当你上网时,按钮出现,如图图 10-2 所示。
图 10-2 。连接到互联网时的页面。这些按钮是由贝宝动态插入的。
我非常感谢艺术家安·罗·琼斯允许我使用图 10-1 和图 10-2 中的图片。这个网页可以在我为她设计制作的网站上看到
([
www.annroejones-artist.co.uk](http://www.annroejones-artist.co.uk)
)。
注意 出于安全原因,本例中的 PayPal 代码块被故意改动。下载的 PayPal 代码以粗体显示。
清单 10-1a 创建如图图 10-1 和图 10-2 所示的页面。该清单显示了粘贴到页面中的四个 PayPal 按钮。它们用粗体表示。第一个按钮是“查看购物车”按钮,接下来的三个是“添加到购物车”按钮。
清单 10-1a。 用加密的贝宝按钮创建网页(【pay-cards.html】??) **
`<!doctype html>
A PayPal payment page
` `
A PayPal Example
Validated by the World Wide Web ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/prac-h5-proj/img/U002.jpg)
Consortium
![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/prac-h5-proj/img/U002.jpg)
Go to top of page
Pay by PayPal OR Credit/Debit Card
Price includes envelopes
**
**
Pack of 5 cards for £4.50 ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/prac-h5-proj/img/U002.jpg)
(free UK delivery)
**
**
Pack of 5 cards for £4.50 (free UK delivery) ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/prac-h5-proj/img/U002.jpg)
**
**
Pack of 5 cards for £4.50 (free UK delivery) ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/prac-h5-proj/img/U002.jpg)
**
**
`
注意 每个按钮的 PayPal 代码通常包含属性border="0"
。 这个边框最好用 CSS 标记去掉;因此,请从列表中删除边框属性,以便您的页面可以验证。
这个清单 10-1b 是清单 10-1a 的 CSS 样式表。它为图像和 PayPal 按钮创建框,而不使用废弃的表格。
清单 10-1b。 清单 10-1a 的 CSS 样式表( pay-cards.css)
`/add display attributes for the semantic tags /
header, footer, section, article, nav { display:block;
}
body {font-family:"times new roman"; font-size:medium; color:black;
background:white url('img/yellowgradient2.gif') repeat-x;
}
container {min-width:960px; max-width:1100px; padding:0; margin:auto;
}
header {width:100%; margin:auto; height:60px; text-align:center;
}
nav { float:left; margin:0; width :125px; display:block; padding:0; border:0 zoom:1;
}
rightcol {float:right; width:120px; text-align: left; display:inline; margin:0; border:0
}
/* set general side button styles /
nav ul { margin-left:30px; padding-left:0;width:120px; list-style-type:none;
}
nav ul li { margin-bottom: 4px; text-align: center;
}
/ set general anchor styles /
nav li a { display: block; color: white; background:#D20B0D; font-weight: bold;
text-align:center;
}
/ specify state styles. /
/ mouseout (default) /
nav li a { background: #D20B0D; border: 4px outset #FFAAAA; text-decoration: none;
}
/ mouseover /
nav li a:hover { background: maroon; border: 4px outset maroon; }
/ onmousedown */
nav li a:active { background:#AECBFF; border: 4px inset #AECBFF
}
p.redarrow {text-align:center; padding-top: 250px;
}
.box { margin:0 150px 0 190px; padding:5px; text-align:center; border:1px solid black;
border-bottom:0;
}
.box-bottom { margin:0 150px 0 190px; padding:5px; text-align:center; border:1px solid black;
}
img { border:0;
}
footer {clear:both; text-align:center;
}
h1 {font-size:xx-large; color:red; margin-top:10px; margin-bottom:5px; text-align:center;
}
h2 {font-size:x-large; font-weight bold; margin-top:5px; margin-bottom:5px;
font-weight:bold;
}
span.tiny {text-align: center; font-family: Arial; font-size: xx-small; color: #000;
}
p {margin-top:5px; margin-bottom:5px;
}
p.cntr {text-align:center;
}
p.lft {text-align:left;
}`
添加捐赠按钮
捐赠按钮允许用户向您的组织捐赠。在这种情况下,用户指定他们希望捐赠的金额。按钮代码从 PayPal 网站下载;和“立即购买”按钮一样,它是加密的,完全安全。使用标题下给出的说明访问 PayPal 按钮工厂。遵循这些步骤,但是选择捐赠按钮。 填写表格,并确保勾选 PayPal 保存按钮旁边的方框(这将保护按钮免受欺诈性更改)。点击创建按钮。
PayPal 捐款按钮代码将会出现;将它复制并粘贴到您的文本编辑器中,并用一个容易记住的名称保存它。然后将代码粘贴到您希望按钮出现的网页中。
提示 使用相同的过程,可以下载订阅按钮并设置各种选项,如金额和续订日期。
安全捐赠按钮如图 10-3 所示。
图 10-3 。我的免费电脑帮助网站上的捐赠页面。贝宝捐款按钮是加密的,以防止黑客篡改。
对于图 10-3 ,PayPal 代码被下载并插入到 HTML 代码中。当在线查看该页面时,它会动态加载一个黄色按钮以及借记卡/信用卡标志。
下载的按钮代码如下所示(为安全起见,该值已改为1234567ABC
):
`
`
请付款按钮
当客户需要在处理订单之前获得商品报价时,可以使用捐赠按钮。如果报价可以接受,客户可以通过捐赠按钮付款。捐赠按钮可以使用您自己的图像和文本进行定制。
图 10-4 所示的请付款按钮是使用图形程序定制的;代码是从贝宝下载的。
图 10-4。 支付与报价相符的金额
设计一个自定义按钮,如下所示:
在图形程序中设计一个.gif
格式的请付款按钮,并把它放在网站根文件夹的 images 文件夹中。记下按钮图像的 URL。
登录客户的帐户,对于英国,点击个人资料中的我的销售偏好。美国帐户进入我的销售工具,然后贝宝按钮更新。或者更简单地,尝试商家服务标签。
单击创建新按钮,并从下拉列表中选择捐赠按钮。
填写字段。
在标题“自定义按钮”下,单击“使用您自己的按钮图像”。
输入您设计的按钮的 URL。
单击创建按钮,然后将代码复制并粘贴到您的网页中。
当客户同意供应商的报价时,客户在点击“请付款”按钮后输入金额。在清单 10-4 中,定制下载支付按钮的代码以粗体显示(出于安全考虑,PayPal 参考号已改为12345ABC
)。
(此列表没有可下载的文件)
清单 10-4。 在网页上添加一个定制的贝宝按钮
`<!doctype html>
Please Pay
Thank you for accepting our quotation
You can pay by one of two methods:-
1\. Click CHECK . A form will appear. Please
fill it out and mail it with your check
OR
2\. By PayPal or Debit/Credit card,
click the
Please Pay button
**
**
`
测试您的 PayPal 按钮
一旦下载的代码被添加到您的网站,一些支付过程可以进行测试。然而,由于 PayPal 不允许会员向自己付款,因此无法使用单一账户测试完整的支付流程。
注 会员可以同时拥有一个个人账户和一个企业/卓越理财账户。出于测试目的,会员可能希望开立一个单独的个人 PayPal 账户。
进入您的网站,找到您想要测试的 PayPal 支付按钮页面。
点击按钮。
如果按钮功能正常,您将进入 PayPal 支付页面。您的电脑将启用 cookies,因此您可以看到自己的 PayPal 用户名。但是,当你的买家点击“立即购买”时,如果他们有 PayPal 帐户,他们会看到自己的 PayPal 用户名。
如果客户不是 PayPal 会员,他们可以点击“点击此处”按钮,按钮上会显示“如果您没有 PayPal 帐户,请点击此处”。
顾客可以使用贝宝或借记卡/信用卡
如果客户没有 PayPal 帐户,他们可以使用替代支付链接输入他们的姓名和送货地址。然后会提示他们输入详细信息,如支付金额、借记卡/信用卡类型和号码、电子邮件地址和电话号码。他们可以选择通过创建一个 PayPal 帐户来保存信息,以简化未来的交易。
客户受到 PayPal 防欺诈功能的全面保护。Premier 和 business 帐户持有者可以打开或关闭该功能,方法是登录 PayPal,转到个人资料,单击销售首选项列下的网站支付首选项,并勾选 PayPal 帐户选项下的是/否框。
管理 PayPal 账户
要访问帐户以便所有者可以管理它,请前往[
www.paypal.co.uk](http://www.paypal.co.uk)
(在英国)或[www.paypal.com](http://www.paypal.com)
(在美国)。 然后遵循以下步骤:
使用左侧的按钮登录。
将显示您的电子邮件地址。输入您的密码,然后单击登录按钮。
点按“历史记录”以查看您的帐户中发生了什么。
完成后,单击注销。
要从您的 PayPal 帐户向您的个人银行帐户转账,您必须访问您的 PayPal 帐户,然后指示 PayPal 要转账的金额。
进入您的 PayPal 帐户,然后点击取款。
点击提取资金到您的银行账户。
输入要转账的金额。
在金额字段下方,确保显示您的个人银行账户。
单击继续。
在下一页上,确认详细信息是正确的,然后单击提交按钮。
这项交易大约需要三天时间才能完成。
Request Money 允许您从 190 个接受 PayPal 的国家和地区中拥有电子邮件地址的任何人那里接收或请求资金。若要为拍卖的物品请求付款,请向客户请求付款,或通过输入收件人的电子邮件地址和您请求的金额来发送个人付款请求。
提示 PayPal 提供了一个完整的 API 来进一步控制你的购物车和其他按钮。在[
cms.paypal.com/us/cgi-bin/?cmd=_render-content&content_ID=developer/](https://cms.paypal.com/us/cgi-bin/?cmd=_render-content&content_ID=developer/)
尝试使用有用的网站支付标准概述页面。它介绍了许多高级功能,开发者可以使用这些功能来使用 PayPal,包括对所有 PayPal 变量的引用。PayPal 还有一个运费计算器,可能会对你有用。
总结
本章向您展示了将 PayPal 添加到网站的一步一步的过程并不神秘,而是相对简单和符合逻辑的。您已经学会了如何为各种 PayPal 按钮嵌入下载的代码,并且对安全性感到放心。您还学习了网站所有者如何转账和查看 PayPal 帐户的余额。
在下一章中,您将了解更多关于安全性的知识,以及它如何影响电子邮件地址和反馈表单。将提供安全的解决方案,虽然使用了一点 JavaScript,并描述了 PHP 表单过滤器,但不需要任何脚本语言的知识。
十一、安全反馈方法
电子邮件和反馈表格是最受欢迎的联系方式,让用户可以轻松地与网站所有者沟通。不幸的是,这两种联系方式都可能被滥用。黑客可以劫持一个表单,并用它向网站所有者发送恶意软件。电子邮件地址被收集并出售给垃圾邮件发送者。这两种行为都会给网站所有者带来困扰和垃圾邮件的涌入;它们也不能提高网页设计师的声誉。本章讨论了防止这些风险的一些选项。
加密电子邮件地址,防止垃圾邮件
Escrambler 是一款免费的反垃圾邮件设备。它最初是作为一个普通的、可点击的链接产生的,后来由于 InnerPeace.org 添加了一个电子邮件地址的图像而得到了增强。他们在[
innerpeace.org/escrambler.shtml](http://innerpeace.org/escrambler.shtml)
的网页会很快为你生成代码。或者您可以修改下面的 JavaScript 代码片段。
将下面的 JavaScript 片段插入到您希望电子邮件地址出现的部分。JavaScript 还在页面上放置了电子邮件地址的图片,以便用户可以点击它或记下它以供将来使用。但是,如果用户禁用了 JavaScript,电子邮件地址图像就没有帮助了;因此,图片(没有链接)也应该以通常的方式显示在页面的某个地方。
JavaScript 会伪装电子邮件地址,这样垃圾邮件蜘蛛就看不到了。JavaScript 将传统的电子邮件地址分解成小块,然后重新组合。垃圾蜘蛛阅读 JavaScript 和图片有很大困难;即使他们能读懂 JavaScript,电子邮件地址也是支离破碎的,以至于他们无法理解。对于你自己的电子邮件加扰器,只需更改粗体项目。
以下示例隐藏了地址fredbloggs@aol.com
`
`
注意 变量f
后面是两个单引号,不是双引号。第g='<img src=\"'
行以双引号结尾,后跟单引号。
JavaScript 代码允许以下两种情况:
完整的电子邮件地址以可点击的图像形式出现在屏幕上,但垃圾邮件蜘蛛看不见。* If there are no pictures available, a link with the words "email me" will appear on the webpage.
点击图片或文字“给我发邮件”,用户的默认电子邮件程序将打开,其中已经填写了电子邮件地址。用户可能需要被告知电子邮件可能会进入他们的发件箱,因此需要通过单击发送/接收按钮来发送。
创建电子邮件地址的图像
大多数画图程序可以创建包含邮件地址的.png
或.gif
图像。使背景透明,以便页面的背景颜色显示出来。但是,使用画图程序创建文本可能不会产生令人满意的结果。这也很耗时,有时甚至令人沮丧,尤其是当你需要匹配页面的彩色背景时。下面是一种方法,它总是能给出一个好的结果,并且没有用画图程序添加文本复杂:
In your WYSIWYG fckeditor, copy a webpage with appropriate background color.
In the blank space of the page, type the email address with the preferred font size and color.
Use Alt+ Print Screen (or use the screenshot tool in Windows 7) to take a screenshot of the page.
Open your drawing program and paste the screenshots into it.
Crop the picture and save the result as .jpg
or . png
file (see Figure 11-1 ).
图 11-1 。使用此方法的彩色背景示例图像
一个小问题解决了
你的客户可能决定不把她的电子邮件地址放在网站上。相反,她可能更喜欢使用反馈表。但是,没有什么可以阻止某人忽略表格,通过猜测她的电子邮件地址直接与她联系。这种情况很少发生,而且发件人不是垃圾邮件发送者,所以告诉你的客户不要惊慌。十年来,我个人只收到过几封这样的邮件。这是个小问题,可以忽略。
那他怎么知道你客户的邮箱地址?他知道是因为他找到了她的网站。他为什么试图联系她?他想要建立从她的网站到他的网站的对等链接。她的安全反馈表(在下一节中描述)防止发送者提供他的 URL 细节。他必须使用普通的电子邮件,所以他做出了明智的猜测。他尝试info@clientswebsite.co.uk
或sales@clientswebsite.co.uk
,等等。如果你的客户有一个“包罗万象”的电子邮件地址,这个人也可以输入类似于postmaster@clientswebsite.co.uk
的东西,它可能会到达你的客户。他的电子邮件将能够包含他的真实网址。他不会包括一个可疑的网址,因为可以通过他的电子邮件追踪到他。
通过建立一个互惠链接,他希望通过尽可能多的外部链接来提高他在搜索引擎中的排名。你的客户应该看看这个人的网站;她通常会发现他的内容与她的网站毫无关系,所以她应该而不是 同意互惠链接。此外,她很可能会发现他的链接页面上有 40 到 100 个链接。如果她同意互惠链接,搜索引擎会认为她在使用链接农场,因此他们可能会惩罚她的网站。
如果您的客户正在接收这种类型的电子邮件,最简单的解决方案是在处理程序中使用不同的电子邮件地址,例如她的家庭宽带地址,clientsemailaddress@herisp.co.uk
。没有人能够猜出她的家庭电子邮件地址,但缺点是她的商业回复无法与她的私人邮件区分开来。
安全反馈表格
在设计反馈表时,我们需要考虑以下三点:
Because layout tables are deprecated, CSS must be used to align input fields neatly.
And blind and severely visually impaired users can use their screen readers to read and reply to forms. Accessibility rules must be observed; These are all included in Chapter 14 of . A filter must be built into the form handler to prevent the form from being maliciously hijacked.
虚假回复
关于第三点,当我第一次开始设计网站时,我在我的许多客户的网站上添加了反馈表格,所有这些网站都被那些使用表格向网站所有者发送虚假回复的人所困扰。这些回复包含了官样文章和不可靠的网址。劫机者利用机器人每周发送一到两次虚假回复。网站所有者自然感到失望和困惑,因为他们认为他们收到了订单。幸运的是,他们没有点击这些虚假回复的链接,但他们立即联系我寻求解决方案。
虚假回复看起来像什么?下面的方框显示了一个典型的虚假回复。为了安全起见,我修改了网址和电子邮件地址。这些回复包含官样文章以及指向可疑网站的链接。不熟悉黑客怪异行为的网站所有者可能会试图点击一个链接,这可能会导致各种各样的混乱。
内容类型:文本/html;charset = " iso-8859-1 "
From:ezrxsk@xyzvjox.com
X-anti virus:AVG E-mail 8 . 0 . 100【270 . 4 . 1/1510】
From:Damon Rosario
super obligation hoyboyish forered minaway wips taenioid chancellor ism unsocket
3sy 6 rl<a href = \ " http://qmuxlytwkukt . com/\ ">qmucuk
以下是从安全表单收到的真实电子邮件:
发件人姓名:安德鲁·伊斯曼
发件人电子邮件:aeastman@myisp.co.uk
电话:01390 5233726
W98,me,2000?:没有
XP?:没有
Vista?:没有
窗口 7?:是
笔记本电脑?:是
桌面?;不
-消息-
我怎样才能说服我的电脑做出一杯像样的咖啡?
防黑客反馈表示例
虚假反馈可以通过 PHP、ASP.NET 或其他服务器端处理程序来阻止。在这一章中,我选择使用 PHP 处理程序,因为这种语言更容易理解和实现。如果在任何文本字段中输入 URL,该处理程序会弹出一条错误消息。这完全阻止了任何情况下的虚假回复。黑客不会劫持表格来发送伟哥广告;他们希望网站所有者点击 URL 链接,打开发送者的可疑网站。这些网站可能是色情网站,或者更有可能包含恶意软件,例如可以控制网站所有者计算机的特洛伊木马。图 11-2 显示了本项目中使用的表格。
图 11-2。 一个使用 CSS 布局的表单
您可以从位于[
www.apress.com](http://www.apress.com)
的配套网站下载示例表单、处理程序和相关文件。在清单 11-2a 、 11-2b 和 11-2c 中粗体显示的项目处插入您自己的详细信息。
注意 HTML5 对表单有了新的标签和属性。这些将在本章后面提到。同时,这个例子使用 HTML4 标签,因为表单的 HTML5 建议仍在开发中。此外,浏览器支持目前是不完整的,不幸的是,新的控制不阻止网址的输入。
提示 如果没有其他页面需要表单样式说明,可以使用内部 CSS 样式表。或者,您可以使用单独的外部样式表来指定表单元素的布局。这个链接语句必须是<head>
部分中一系列链接语句的最后一个。这将是对外部样式表的链接的补充,用于设计页面的其余部分(如导航按钮)。如果你不想在表单上有导航按钮,你至少应该在表单上放一个返回按钮(见第二十章)。
通过反复试验确定样式表中的宽度和填充。由于一些网页设计程序不是真正的所见即所得,所以总是在各种浏览器中测试布局。接下来的几组代码描述了典型表单的元素。
典型文本字段 的代码片段采用以下形式:
`<div id= "name">
<label for ="username">Your Name:
<input id ="username" name="username" size="30">
`
对于表单上的每个文本字段,<label>…</label>
和<input>…</input>
,标签必须与两个属性for
和id
一起使用,如代码片段所示。这对于使用屏幕阅读器的人来说非常重要。
对于文本字段和文本区域,<label>
标签必须位于<input>
标签之前,这样标签就位于字段的左侧。
对于复选框和单选按钮,必须使用相反的顺序;<input>
标签必须在<label>
标签之前,这样标签就位于字段的右边。
下面是 复选框 的 CSS 代码片段(通过使用 CSS,复选框被很好地排列起来,每个复选框都有相同的类/标识符):
/*The CSS for positioning the checkboxes on the page*/ .chk1 {text-align:left; padding-left:30%; }
复选框的 HTML 的代码片段如下:
`
Windows XP Home or Pro
`
……等等。
两个单选按钮通过 CSS 样式定位在页面上,CSS 样式的目标是名为rad
的id
。
`/Position the radio buttons on the page /
rad {text-align:left; padding-left :30%;
}`
以下是单选按钮的 HTML 的代码片段:
`
`
清单 11-2a 中没有使用语义标签为了避免为 IE 7 和 IE 8 用户添加 JavaScript,该表单可以在所有浏览器中工作,包括 IE 7 和 IE 8。
清单 11-2a。【feedback-form.html】创建如图所示的安全表单 图 11-2
`<!doctype html>
Send a suggestion to my computer help and advice service
Send me a content suggestion or a message
Required items *
`
注意 当点击提交按钮时,清单 11-2a 中粗体显示的项目将被发送到表单处理程序(清单 11-2c )进行处理。
清单 11-2a 中的表单链接到下面的样式表。这将创建各种表单域的布局。
清单 11-2b。 为清单 11-2a 创建 CSS 样式表 (feedback.css)
`/FEEDBACK.CSS /
/reset browsers for cross-client consistency /
html,body,h1,h2,h3,h4,h4,h5,h6,p {margin:0; padding:0
}
img {border-style: none; float: none; margin-left: 0; margin-right: 0;
}
body {text-align:center; background-color:#D7FFEB; color:black;
font-family: "times new roman"; max-width:1024px; min-width:800px;font-size: medium;
color: #000; margin: auto; width:95%;
}
/The h1 heading is not used on the form shown; its inclusion is for a probable h1
heading on your own form /
h1 {padding: 110px 0 0 12%; font-family :"times new roman"; font-size: 250%;
color: #000; font-weight:bold;}
h2 { margin-top:15px; }
span.red { font-size:medium; color:red; font-weight:bold;
}
/center the back button on the thankyou page /
back-button { margin:auto; text-align:center; width:200px; height:25px; padding:5px;
background-color:brown; color:white; font-size:110%; font-weight:bold;
}
back-button a { text-decoration:none; color:white;
}
}
/set heading details /
h1,h2 , h3, h4, h5 { margin-top:0; margin-bottom:10px;
}
h2 { font-size:130%; font-weight:bold;
}
h3 { font-size:110%; font-weight:bold; text-align:center;
}
/PARAGRAPHS /
p {margin-bottom:10px; margin-top:0;
}
/FORM. Position the form elements on the page /
form {width :500px; margin:auto; text-align:center;
}
.label { float:left; width: 400px; text-align:right; clear:left;
}
.chk1 { text-align:left; padding-left :30%;
}
rad { text-align:left; padding-left :30%;
}
sug { text-align:center; margin:auto;
}
submit { text-align:center;
}`
如前所述,当单击表单上的 Submit 按钮时,用户的详细信息被发送到表单处理程序。表单处理程序将在清单 11-2c 中描述。
表单处理程序及其反黑客过滤器
您可以从相应的网站下载表单、样式表和表单处理程序,网址为 ` `www.apress.com`` 。这个处理程序是一段 PHP 代码,但是你不需要学习 PHP 来使用它。该处理程序包含逻辑操作符,可以过滤出错误和 URL。URL 过滤器将激怒并阻止人类劫机者,并将导致机器人设备神经崩溃。
注意 要开始测试,设置你自己的电子邮件地址,这样你就是收件人,然后测试表格。当您对该表格向您发送测试电子邮件感到满意,并且生成的电子邮件令人满意时,请注释掉您自己的电子邮件地址,并删除客户电子邮件地址中的注释斜线,以便客户(网站所有者)代替您接收电子邮件。当然,如果网站是你自己的,这就不适用了。
注意在清单 11-2c 中,单行注释前面有一个双斜杠//
,多行注释使用/*……*/
,就像 CSS 注释一样。同样,一个 PHP 文档以<?php
开始,以?>
结束,这些标签不能包含空格。
出于好奇,本节末尾解释了更奇怪的代码。
注意 处理程序必须保存为 PHP 文档,上传处理程序后,在 FTP 客户端的服务器窗格中右键单击它,在那里就可以将 CHMOD 设置为 644。这将阻止未经授权的人访问它。如果他们尝试使用处理程序的文件名打开它,他们将看不到处理程序;他们将立即被定向到表单。确保您的服务器启用了 PHP,如果没有启用,请联系主机并指示他们启用服务器。
在处理程序清单 11-2c 中用您自己的详细信息替换 粗体斜体 中显示的项目,因为发送消息的人将输入他自己的详细信息(姓名、电子邮件地址和电话号码);它们不会以粗体斜体显示。
清单 11-2c。【form-handler.php 创建 PHP 表单处理程序
<?php /* FORM-HANDLER.PHP Feedback Form PHP Script Ver 5.0 */ // set the email address for the recipient, this setting sends it to your client for example //$mailto = "***webmasters-mailaddress@your-isp.com***" ; $mailto = "***yourclient@clients-isp.com***" ; //choose the subject so that you can recognize emails sent from this form $subject = "***Help query***" ; /*The next block of code tells the handler where to find the various documents ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/prac-h5-proj/img/U002.jpg) associated with it. In this case the documents and the form are all in the same root ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/prac-h5-proj/img/U002.jpg) folder.*/ // list the pages to be displayed,
`\(formurl = "http://www.***clients-website.com***/feedback-form.html" ;
\) errorurl = "http://www .clients-website.com /error.html" ;
\(thankyouurl = "http://www.***clients-website.com*** /thankyou.html" ;
\) emailerrurl = "http://www . clients-website.com /emailerr.html" ;
\(errorphoneurl = "http://www. ***clients-website.com*** /phonerror.html" ;
\) errorsuggesturl = "http://www . clients-website.com /suggesterror.html" ;
\(errorboxurl = "http://www. ***clients-website.com*** /error.html" ;
\) uself = 0;
// ------- Set the information received from the form as $ values ---------------
$headersep = (!isset( \(uself ) || (\) uself == 0)) ? "\r\n" : "\n" ;
/The following code receives the items from the HTML form and converts them to formats
that can be used by the handler, for example, username is converted to \(username*.*/
\) username = \(_POST['username'] ;
\) useremail = \(_POST['useremail'] ;
\) phone = \(_POST['phone'];
\) w98me2000 ** = \(_POST['***w98me2000***'];
\) xp = \(_POST['***xp***'];
\) vista = \(_POST['***vista***'];
\) w7=\(_POST['***windows7***'];
\) computer=\(_POST['***computer***'];
\) suggestion = \(_POST['***suggestion***'] ;
\) http_referrer = getenv( "HTTP_REFERER" );
if (!isset($_POST['useremail'])) {
header( "Location: \(formurl" );
exit ;}
//Check that all three essential fields are filled in
if (empty(\) username) || empty(\(useremail) || empty(\) suggestion )) {
header( "Location: \(errorurl" );
exit ; }
//Check that at least one box has been ticked
if ((!\) w98me2000 and !\(***xp*** and !\) vista and !$w7 )) {
header( "Location: \(errorboxurl" );
exit ; }
//check that no urls have been inserted in the username text area
if (strpos (\) username, '😕/')||strpos($username, 'www') !false){
header( "Location: \(errorsuggesturl" );
exit ; }
//Check that no urls haves been entered in the phone field
if (strpos (\) phone, '😕/')||strpos($phone, 'www') ! false){
header( "Location: \(errorphoneurl" );
exit ; }
//check that no urls have been inserted in the suggestion text area
if (strpos (\) suggestion , '😕/')||strpos($suggestion, 'www') !==false){
header( "Location: $errorsuggesturl" );
exit ; }
if ( ereg( "[\r\n]", $username ) || ereg( "[\r\n]", $useremail )) {
header( "Location: $errorurl" );
exit ; }
remove any spaces from beginning and end of email address
\(useremail = trim(\) useremail);
Check for permitted email address patterns
\(_name = "/^[-!#\) %&'*+\./0-9=?A-Z^_`{|}~]+";
\(_host = "([-0-9A-Z]+\.)+";
\) _tlds = "([0-9A-Z]){2,4}\(/i";
if(!preg_match(\) _name."@".\(_host.\) _tlds,$useremail)) {
header( "Location: \(emailerrurl" );
exit ; }
if (get_magic_quotes_gpc()) {
\) message = stripslashes( \(message ); }
if(!\) w98me2000 ) {\(***w98me2000*** = "No";}
if(!\) xp ) {\(***xp*** = "No";}
if(!\) vista ) {\(***vista*** = "No";}
if(!\) w7 ) {\(***w7*** = "No";}
if(\) computer !=null) {$computer = \(***computer***;}
//-- SET UP THE EMAIL’S CONTENT, FORMAT IT, SEND IT. THEN SHOW A THANK YOU PAGE --
\) messageproper =
"This message was sent from:\n" .
"$http_referrer\n" .
"------------------------------------------------------------\n" .
"Name of sender: $username\n" .
"Email of sender: $useremail\n" .
"Telephone No: $phone\n" .
"W98,ME,2000 ?: $w98me2000 \n" .
"XP ?: $xp \n" .
"Vista ?: $vista \n" .
"Windows7 ?: \(***w7***\n" .
"***Computer***?:\) laptop \n" .
"Computer ?;\(***desktop***\n" .
"------------------------- MESSAGE -------------------------\n\n" .
\) suggestion .
"\n\n------------------------------------------------------------\n" ;
mail($mailto, $subject, \(messageproper, "From: \"\) username" <$useremail>" . \(headersep .
"Reply-To: \"\) username" <\(useremail>" .
\) headersep . "X-Mailer: feedback4.php 5.0" ); header( "Location: $thankyouurl" ); exit ;
?>`
好奇者:一些 PHP 代码的解释
(如果太忙或者不感兴趣,可以跳过这一节。)
**!isset function**
检查以确保发送者电子邮件的值已经在$_POST
数组中设置。感叹号(!)
表示NOT
。
if (!isset($_POST['useremail'])) { header( "Location: $formurl" ); exit ; }
**if(!preg.match**
完成测试,查看电子邮件地址的格式是否正确。 reg 部分代表正则表达式 (这是美国的翻译,其中 regular = standard,不是英国的意思,其中 regular 的意思是“以相等的间隔”)。如果电子邮件地址不符合公认的标准,则会显示一条错误消息。
**magic_quotes**
是一个 PHP 过滤器,如果打开,它将插入一个转义斜杠来保留用户输入的消息中的任何单引号或双引号。
if (get_magic_quotes_gpc()) { $message = stripslashes( $message ); }
当检查基本字段是否已填写时,双垂直线(||)
表示OR
)。
下一段代码是这样翻译的:如果username
字段为空,或者useremail
字段为空,或者suggestion
字段为空,那么显示一个名为errorurl
的错误消息,说明一个关键字段没有填写。
if (empty($username) || empty($useremail) || empty($suggestion)) { header( "Location: $errorurl" ); exit; }
在 HTML 表单中,复选框和单选按钮的默认值设置为“是”。
如果一个框或单选按钮没有被点击,那么该值可以被处理器改变为"No"
,如下所示:
if(!$xp) {$xp = "No";}
这意味着如果$xp
未被选择,则将值"No"
分配给$xp
。
测试以确保至少勾选了一个复选框(注意本语句中and
的使用)。
if ((!$w98me2000 and !$xp and !$vista and !$w7)) { header( "Location: $errorboxurl" ); exit ; }
如果消息发送成功,需要通知用户。他还需要知道他在填写表格时是否犯了错误。以下部分给出了建议的反馈页面,这些页面将通知用户,如果用户提供了错误或不可接受的数据,还会提供帮助。
感谢页面和错误信息
“谢谢”页面向用户确认电子邮件已成功发送。为了保持一致性,“谢谢”页面应该看起来像网站上的所有其他页面。尝试将你的导航菜单包含在“谢谢”页面中(或者至少包含一个返回按钮)。失去访客将是一件憾事。在每个错误页面上添加一个返回按钮也会很有帮助。“谢谢”页面如图 11-3 所示,代码为清单 11-3 。这个页面有一个返回按钮,上面写着“返回主页”,但是你可以用主导航菜单替换这个按钮。按钮的样式包含在样式表feedback.css
中。
图 11-3 。一个“谢谢”页面
清单 11-3。 创建感谢页面(thankyou.html)
`<!doctype html>
Thank you for your message
Thank you for your suggestion or question
If it is of general interest, I will add it to the website and let you know where
to find it.
If it is not of general interest I will email an answer to
you within a couple of days.
`
如果电子邮件未成功发送,将会出现一条解释性错误消息。
为什么要使用错误页面而不是将一段文本回显到屏幕上?我的客户更喜欢页面提供的独特信息和帮助,而不是常见的红色小错误信息,这些信息可能会被忽略或者过于简短。
清单 11-4 中的样式表用于所有五个错误消息(清单 11-5 到清单 11-9 )。
清单 11-4。 (error.css)
body { text-align:center; font-size: large; font-weight:bold; } span.red {color:red; font-size:xlarge; font-weight:bold; }
清单 11-5 提供了缺失要素错误信息的代码。
清单 11-5 。(error.html)
`<!doctype html>
Error message. Missing essentials
*meta details go here*
` `One or more of the essential items in the form has not been filled in.
Essential items have a red asterisk like this *
Please click the Back button on your internet browser and then supply the ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/prac-h5-proj/img/U002.jpg)
missing information.
`
清单 11-6 显示了电子邮件错误信息的代码。
清单 11-6。【emailerr.html】
`<!doctype html>
Email error message
Your email address has an incorrect format.
Please click the Back button on your internet browser and then correct your ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/prac-h5-proj/img/U002.jpg)
email address.
`
清单 11-7 提供了电话错误信息的代码。
清单 11-7。【phonerror.html】
`<!doctype html>
Phone error message
*meta details go here*
The telephone number must be numbers and spaces only, with no letters or punctuation>
Please click the Back button on your internet browser and then correct your ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/prac-h5-proj/img/U002.jpg)
telephone number.
`
清单 11-8 提供了勾选框错误信息的代码。
清单 11-8。【boxerror.html】
`<!doctype html>
Box error
` ` *meta details go here*
Please tick one of the boxes to say which Operating System your ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/prac-h5-proj/img/U002.jpg)
have on your computer.
Essential items have a red asterisk like this*
Please click the Back button on your Internet browser and then supply the ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/prac-h5-proj/img/U002.jpg)
missing information.
`
清单 11-9 提供了禁止输入 URL 的消息代码。
清单 11-9。【suggesterror.html】
`<!doctype html>
Error message. Do not enter URLs
*meta details go here*
Sorry, but website addresses are not allowed This is to prevent low-life ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/prac-h5-proj/img/U002.jpg)
scumbags from inserting links which lead to dodgy websites.
Please click the Back button on your internet browser and then remove any ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/prac-h5-proj/img/U002.jpg)
website addresses from the form.
`
新的 HTML5 表单控件在第一章的中进行了解释。我们现在需要考虑这些控件是否会最终取代本章提供的 PHP 表单处理程序中的输入过滤器。
新的 HTML5 表单控件
HTML5 对表单的推荐几乎是完整的,但是不同的浏览器有不同的解释。HTML5 表单并不简单,因为其他因素会影响它们。
一个防黑客的表单需要一个 PHP、ASP.NET 或 Perl 服务器端代码的处理程序。处理程序必须匹配新的 HTML5 表单标签。除非非常小心地将新的 HTML5 元素与屏幕阅读器的需求相集成,否则可访问性将会受到损害。在一段时间内,IE 条件句和替代样式表将不得不被使用,以便使用最常用浏览器的冲浪者可以看到和使用你的表单。* At the time of writing, IE 9 did not support HTML5 forms. IE 10 will probably support them.
注 只有 Opera 9.5 +支持编写时的所有新表单元素。其他新浏览器支持一些表单功能。要查看当前哪些浏览器支持 HTML5 表单控件,请访问[
wufoo.com/html5/](http://wufoo.com/html5/)
即使 HTML5 控件内置在 HTML5 表单中,机器人和人类仍然可以输入危险的 URL。因此,对于某些字段,您仍然需要防黑客表单处理程序的保护。
当使用前面描述的 PHP 反馈处理程序时,您可以针对机器人添加进一步的保护;例如,您可以在页面上放置一些文本的图像,以便文本必须正确输入,或者您可以提出一个问题,在表单处理程序发送电子邮件之前必须回答该问题。另一种解决方案是使用验证码,如下所述。
使用验证码
验证码是使反馈表单更加安全的一种方式。我们都很熟悉 CAPTCHA 图像的波动脚本,如图 11-4 所示。
图 11-4。 验证码图片
它被设计来阻止机器人使用表单。不幸的是,这并不能阻止一个不道德的人给你的客户发送一条包含令人不快的或危险的链接或可疑网址的反馈信息。PHP 处理程序是做到这一点的唯一方法。也许最安全的解决方案是将 CAPTCHA 与安全反馈表单及其 PHP 处理程序结合使用。
使用 CAPTCHA 时,每次访问表单时,都会出现不同的图像。这可以由提供验证码服务的组织来执行,或者可以在表单上编程和调用随机生成器。一些验证码方法结合了字符的口语版本,以便盲人或弱视者可以使用这种形式。
验证码被下载并嵌入到包含表单的页面中。验证码可以是一项免费服务,可以在商业网站上使用。访问[
captchas.net](http://captchas.net)
(注意 URL 中验证码后面的字母“s ”)了解更多信息并下载代码。
下载最简单的代码版本是 PHP。它可以直接嵌入到 HTML5 页面中。必须下载三个文件并安装到您的服务器上。这个解决方案需要 JavaScript 和 PHP 的知识。要想知道你是否足够熟练使用captchas.net
方法,请看一下[
captchas.net/sample/php/](http://captchas.net/sample/php/)
的示例代码
提示 其他几家验证码供应商存在;有些需要付费,有些比其他的更容易嵌入和理解。尝试探索[
hellocaptcha.com](http://hellocaptcha.com)
和[
www.google.com/recaptcha](http://www.google.com/recaptcha)
。
总结
在本章中,您学习了如何使用一点 JavaScript 来阻止垃圾邮件蜘蛛收集您客户的电子邮件地址。通过使用这个脚本,您的客户端将不会被垃圾邮件淹没。您还了解了使用防黑客反馈表的原因。本章和配套的网站为您提供了一个表单模板及其防黑客处理程序。虽然处理程序是用 PHP 编写的,但是实现它并不需要 PHP 知识。只需下载模板并输入您自己的信息,本章中的列表以粗体显示项目。
提供了一些关于验证码的信息,虽然我更愿意使用反馈表单处理程序,因为它比验证码更安全,可以防止人类流氓访问。没有任何安全措施是 100%安全的,CAPTCHA 已经被使用光学字符识别(OCR)的犯罪分子绕过。如需了解更多信息,请参见维基百科上关于验证码的文章。
在下一章中,我们将研究显示器色彩再现、屏幕尺寸和显示分辨率的巨大差异所带来的问题。将提供几种解决方案,并解释它们的优缺点。
十二、监控混乱
你的网站颜色在所有显示器上都一样吗?您应该为哪种类型和尺寸的显示器进行设计?一个网站有可能在各种屏幕尺寸和分辨率下看起来都很吸引人吗?本章描述了这些问题并探讨了可能的解决方案。将介绍和讨论以下主题:
And display color problem.
Display size and resolution
And fix width layout of that display.
And liquid layout.
And semi-liquid display layout-the best solution.
Other matters needing attention related to monitor
显示器和色彩再现问题
阴极射线管(CRT)显示器通常具有强烈的鲜艳色彩,每个制造商都将它们设定为相当一致的标准。自从引入 TFT 显示器(薄的平板显示器;TFT 代表薄膜晶体管)。与电脑捆绑在一起的绝大多数 TFT 显示器都是低保真度的扭曲向列型(TN)屏幕;其中一些不能再现广泛和忠实的颜色范围。
此外,它们通常在工厂设置为最大亮度,因此颜色是褪色的淡粉色,有时带有明显的蓝色。虽然 TFT 屏幕有调节按钮,但是用户很少会注意到这些;即使他们发现了,他们通常也不敢使用。
当在 TFT 屏幕上观看时,在 CRT 显示器上设计的丰富的网页颜色可能看起来非常苍白和模糊。我的一个网站的背景是柠檬黄渐变;一些 TFT 屏幕将这种颜色呈现为浑浊的灰绿色。我试验了各种柠檬黄,最终最差的屏幕显示出一种柠檬黄;没有我希望的那么明亮,但是还可以接受。
由于大多数用户使用的是低保真度的扭曲向列型(TN)屏幕,所以最好的策略是在类似的屏幕上设计网站。设计网站时,您甚至可以将一个低保真度屏幕与昂贵的高质量 TFT 屏幕并联,以确保您的网页在劣质屏幕上看起来合理。将屏幕设置得比你个人喜欢的稍微亮一点。然后设计在屏幕上看起来合理的颜色。使用您的图形软件包来制作比 CRT 显示器稍暗的图像。
如果你被要求改变一个旧的网站,使它在 TFT 屏幕上看起来合理,你可能必须用你的图形程序把图片变暗。然后使用 CSS 将文本和菜单按钮变暗。如果在 CSS 中使用十六进制代码来描述颜色,可以通过减少数字和字母来使颜色变暗;例如
Medium blue is #0000FF
; When FF drops to 80, it becomes #000080
, which is navy blue.
The hexadecimal digits are (from the darkest to the brightest) 0,1,2,3,4,5,6,7,8,9, a, b, c, d, e, f.
To lighten the color, add hexadecimal characters. For example, royal blue is #0000FF
; The light version of blue may be #7070FF
.
In order to avoid spending too much time trying again and again when determining the right color, please start from [
www.paciellogroup.com/resources/contrast-analyser.html](http://www.paciellogroup.com/resources/contrast-analyser.html)
下载压缩文件CCA-2.2.zip
向下滚动 Paciello Group 网站的主页,直到您看到下载和语言版本列表。单击相应的语言版本下载 zip 文件。将其解压缩到一个新文件夹中,然后创建一个文件CCA-2.2.exe
的桌面快捷方式。
图 12-1 显示了颜色对比分析仪(CCA-2.2)的界面。
图 12-1。 色彩对比分析仪。2.2 接口
颜色对比分析仪可以以两种方式使用;如果您单击菜单上的选项,您可以通过滑块来调整颜色,或者您可以看到当您更改十六进制数字时颜色会发生什么变化。
Double-click the shortcut (the spelling of "color" in CCA interface is English and Australian color ).
Enter the hexadecimal number of the color in the hexadecimal field selected in the foreground color. You will see the color in the corresponding color selection field.
Change the hexadecimal code one bit at a time until the desired color is reached. Write down the hexadecimal color code and use it to modify your CSS style sheet.
提示 最初,一个名称只能指定 17 种颜色,如红色或蓝色。现在,你可以命名 147 种颜色,例如color: mediumpurple;
。欲了解更多信息,请访问[www.w3schools.com/cssref/css_colornames.asp](http://www.w3schools.com/cssref/css_colornames.asp)
和[
somacon.com/p142.php](http://somacon.com/p142.php)
。
还会遇到另一个问题:与 Internet Explorer 相比,Mozilla Firefox 在由 CSS 动态伪类方法设计的菜单按钮上显示更淡的边框颜色。在大多数情况下,这是可以接受的,但如果不接受,你可以尝试使用边框颜色,以提供一个在 IE 和 Mozilla Firefox 中都看起来合理的折衷方案。作为一种选择,IE 的 CSS 样式表可以是一个条件样式表;主样式表将为其他浏览器提供边框颜色。
显示器尺寸和屏幕分辨率
无论你为哪种分辨率设计(见表 12-1 ),都会有弊端。你不可能知道用户显示器的尺寸或者分辨率是如何设置的。视力衰退的老年人可能会将 19 英寸的屏幕设置为 800 × 600,更喜欢大而模糊的图标和字体,而不是清晰而小的图标和字体。
提示 关于各种屏幕和色彩分辨率统计的有趣页面,请访问[
www.w3schools.com/browsers/browsers_display.asp](http://www.w3schools.com/browsers/browsers_display.asp)
。
非正常比例可能会稍微扭曲网站的外观;项目被垂直拉伸。一些宽屏幕比例会导致水平失真;例如,足球变得像橄榄球一样呈椭圆形。
一些用户将收藏夹面板永久固定在浏览器窗口上,使得浏览器窗口的可用宽度减小,导致用户水平滚动。
大多数网站都有长页面和短页面。在短页面上,不显示垂直滚动条。在长页面上,会出现垂直滚动条,页面可以稍微向侧面移动,这样当用户从短页面移动到长页面时,项目看起来会跳跃。CSS 绝对定位可以部分克服这一点。
由于以下原因,实际屏幕区域小于规定的像素数:
People lose vertical screen space by adding extra and unnecessary toolbars, such as those provided by Google or Yahoo.
Windows vertical scroll bars occupy part of the width, so at least 24 pixels are allowed when setting the page width. For example, for the most common 1024 horizontal display resolution, a fixed width of about 980 pixels is used. For a display with a horizontal resolution of 1280 pixels, use 1200 pixels.
Ie browser and Mozilla Firefox render pages in slightly different ways; However, most problems can be solved by resetting at the beginning of the stylesheet.
网页设计师必须接受他们不能赢的事实。无论他们设计的尺寸和分辨率如何,不同屏幕尺寸的结果总是一种妥协。本章的其余部分将帮助你为你的网站或你的客户的网站找到最佳的折衷方案。
下一节讨论三种类型的布局:固定、流动和半流动。它描述了它们的问题、局限性和可能的解决方案。
注意 除了 CSS 文件中粗体显示的<title>
标签和属性的内容外,接下来三个例子的标记是相同的。CSS 表中包含了高度以生成简短的屏幕截图,但是通常不应该指定高度,因为根据内容的数量,每个页面需要不同的高度。出于指导目的,位置ids
用于指示列位置。
显示器和固定宽度布局的问题
我有时被要求接管一个旧的、固定宽度的网站,它是为分辨率为 800 像素× 600 像素的屏幕设计的。这位所有者感到不安的是,在现代屏幕上(1024 × 768 分辨率以上),网站页面看起来太小。随着更高分辨率和大屏幕的出现,页面开始变得像邮票。
我可能会将网站重新设计为 1024 × 800 的固定宽度,并接受这一事实,即它会导致用户在 800 × 600 的屏幕上水平滚动。固定宽度的网站是最容易设计和控制的,因为大多数网站都是固定宽度的,所以用户目前接受了它们在大屏幕上的局限性。在未来的某一天,1024 像素的固定宽度将需要增加,以匹配不断增加的屏幕尺寸和分辨率。
图 12-2 显示了一个 19 英寸屏幕上的固定宽度布局。
图 12-2。 19 英寸屏幕上一个简单的三列 980 像素固定宽度布局示例。这个页面几乎填满了一个水平分辨率设置为 1024 像素的屏幕。
图 12-2 中的网页有一个固定的 980 像素的宽度,并以其自然分辨率显示在 19 英寸的屏幕上。固定宽度(980 像素)是目前最流行的。它被像www.bbc.co.uk
这样的网站所使用。如果通过使用光标向左拖动右侧边缘来缩小水平尺寸,则边缘会在内容上滑动,就像在内容上拉上窗帘一样。这是一种很好的做法,因为内容布局不会因为缩小宽度而受到干扰。在较小或较低分辨率的屏幕上,或者当用户缩小屏幕时,页面上的元素可能会相互滑动。这可以通过使用 CSS 定位或者将容器设置为固定宽度来防止,如清单 12-2b 中的所示。
从本书的页面 ` `www.apress.com`` 下载本章的代码文件。在 19 英寸的屏幕上,在浏览器中查看这三个文件,屏幕分辨率设置为其原始分辨率,然后尝试缩小浏览器窗口的宽度,以测试当水平宽度减小时布局不会折叠。
清单 12-2a 的产生如图图 12-2 所示的屏幕显示。
注意 在接下来的三个例子中没有使用语义标签,这是为了使标记简单,便于教学。
清单 12-2a。【fixed-3col.html 创建固定宽度页面
`<!doctype html>
Fixed width layout with three columns
*meta details go here*
Banner/Header
Column 1 Navigation menu
Link 1
Link 2
Column 3 for other information>
Main panel for content
Mary had a little lamb, it walked into ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/prac-h5-proj/img/U002.jpg)
some soot, and everywhere that Mary went, his sooty foot he put. I don't wish to ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/prac-h5-proj/img/U002.jpg)
know that, kindly leave the stage
` `
Footer
`
通过简单地插入width:980px;
,宽度在 CSS ( fixed.css
)中是固定的。这在清单 12-2b 中以粗体显示。
清单 12-2b。 清单 12-2a 的 CSS 样式表 (fixed.css)
`Width:100%; body { text-align: center;background-color:yellow; font-family:"times new roman";
font-size:large; font-weight:bold;
}
container {width:980px; padding: 0; text-align: center; margin:auto;
background-color:white;
}
/* set widths and float on nav col and col 3*/
ul { float: left; padding:0; margin:0; width: 100px; height:120px;
}
li { padding-left:0; margin-left:0; list-style-type:none; text-decoration:underline;
}
col-3 { float: right; width: 100px; height:120px;
}
/* set main-panel margins 5px greater than ul column and col-3 widths*/
main-panel { margin-left: 105px; margin-right:105px;
}
hdr { font-size:x-large; font-weight:bold;
}
/* force footer to stay at the bottom */
ftr { clear: both; font-size:x-large; font-weight:bold;
}
/* show boundaries by using colors - for clarity only */
hdr, #ftr { background: fuchsia;
}
ul, #col-3 { background: aqua;
}
main-panel { background: white;
}`
我们接下来检查液体布局,这是为了应对屏幕宽度的变化而开发的。在一段时间内,这是一个合理的解决方案,但随着屏幕变得更宽,屏幕分辨率增加,很明显,液体布局有自己的问题。这些将在下面解释。
显示器和液体布局的问题
在较小的屏幕上,动态网站可能会因为浮动下降 而崩溃。这意味着页面上的一个元素,比如一个图像,会被放到其他元素的下面。参见第十九章浮动下降故障排除。
流动网站还有另一个问题:文本可以在高分辨率的宽屏上延伸,使得阅读困难;读者的头像雨刷一样来回摆动。为了解决这个问题,您应该总是在列中显示文本。在高分辨率的宽屏上,液态布局会导致在线图片之间出现难看的大间隙。这可以通过将图片一张一张地放在页面上,图片的旁边放上文字来部分解决。
如果你有流动页面的问题,并且你有一个期限要满足,不要在上面花太多时间,而是改变成固定宽度(比如说 980 像素)。然后回到发射日期之后的问题。
如果 CSS 背景图案是重复的图案,它可以是液体。这可以通过重复背景给人以连续性的印象,使其跨越整个屏幕的宽度和高度。
在图 12-3 中显示了一个充满 19 英寸屏幕宽度的液体布局页面。
图 12-3。 简单流畅的三栏布局。本示例填充任意屏幕宽度的 100%。请注意中心文本的跨度。在高分辨率的屏幕上,这种效果会更糟。
在 1024 水平分辨率的屏幕上设计的液体布局在更小分辨率的屏幕上看起来会很凌乱。清单 12-3a 及其 CSS 清单 12-3b 通过将容器的宽度设置为 100%来提供一个液体布局。这以粗体显示。
清单 12-3a。【liquid-3col.html】创建一个充满任意屏幕宽度的液体页面
`<!doctype html>
Liquid 3 column layout.
*meta details go here*
Banner/Header
Column 1 Navigation menu
Link 1
Link 2
Column 3 for other information
Main panel for content
Mary had a little lamb, it walked ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/prac-h5-proj/img/U002.jpg)
into some soot, and everywhere that Mary went, his sooty foot he put. ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/prac-h5-proj/img/U002.jpg)
I don't wish to know that, kindly leave the stage
Footer
`
在清单 12-3b(CSS 样式)中,液体布局使用 100%的宽度,但是液体布局可以有更小的百分比。液体布局的关键是用百分比而不是像素来定义宽度。
清单 12-3b。 清单 12-3a 的 CSS 样式表 (liquid.css)
`/* flood the background with yellow */
body { text-align: center; background-color:yellow; font-family:"times new roman";
font-size:large; font-weight:bold;
}
container {width:100%; padding: 0; text-align: center; margin:auto; background-color:white;
}
ul { float: left; padding:0; margin:0; width: 100px; height:120px;
}
li { padding-left:0; margin-left:0; list-style-type:none; text-decoration:underline;
}
col-3 { float: right; width: 100px; height:120px;
}
/* set panel margins 5px greater than ul and col-3 widths*/
main-panel { margin-left: 105px; margin-right:105px; font-weight:bold;
}
hdr { font-size:x-large;font-weight:bold;
}
/* force footer to stay at the bottom */
ftr { clear: both; font-size:x-large; font-weight:bold;
}
/* show boundaries and set colors - for clarity only */
hdr, #ftr { background: fuchsia;
}
ul, #col-3 { background: aqua;
}
main-panel { background: white;
}`
我们已经看到固定布局和流动布局都有它们的问题。在下一个例子中,我们将使用半液体布局来检查一个可接受的解决方案。
监视器和半液体布局
半液体布局是液体布局的变体,它使用两个特殊属性,即min-width
和max-width
。使用半流体布局的页面如图图 12-4 所示。
图 12-4 。限制最大和最小宽度的半液体布局。这是最好的妥协。
图 12-4 显示在一个 19 英寸的屏幕上,设置为其原始分辨率。该页面被设计为水平宽度永远不超过 1200 像素;因此,白色面板中的内容不会过度拉伸。在分辨率低于 960 像素的屏幕上观看时,观众必须滚动屏幕才能看到右侧的一些列。把非必要的信息放在右边一栏是个好主意,比如演职员表和广告。这使得主要内容完全符合设计者的意图,无论使用什么分辨率或大小来查看它。清单 12-4a 及其相关的 CSS 清单 12-4b 提供了如图图 12-4 所示的半液态布局。
清单 12-4a。【liquid-3col-max-min.html 创建半流动页面
`<!doctype html>
Liquid layout with restricted max and min width
*meta details go here*
Header/Banner
Column 1 Navigation menu
Link 1
Link 2
Column 3 for other information
Main panel for content
Mary had a little lamb, it walked into ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/prac-h5-proj/img/U002.jpg)
some soot, and everywhere that Mary went, his sooty foot he put. I don't ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/prac-h5-proj/img/U002.jpg)
wish to know that, kindly leave the stage
Footer
`
CSS 清单 12-4b 为屏幕宽度变化的问题提供了一个简洁的解决方案。属性max-width
和min-width
限制显示,使其不会变得太宽,也不会缩小到布局分崩离析的程度。宽度是一个百分比,就像液体布局一样,限制由粗体显示的代码设置。
清单 12-4b。 清单 12-4a 的 CSS 样式表 (liquid-maxmin.css)
`/* flood the screen with yellow*/
body { text-align: center; background-color:yellow; font-family:"times new roman";
font-size:large; font-weight:bold;
}
container { width:95%; margin:auto; background-color:white; text-align: center;
max-width:1200px; min-width:960px;
}
hdr { font-size:x-large;font-weight:bold;
}
/* set widths and float on nav col and col 3*/
ul { float: left; padding:0; margin:0; width: 100px; height:120px;
}
li { padding-left:0; margin-left:0; list-style-type:none; text-decoration:underline;
}
col-3 { float: right; width: 100px; height:120px;
}
/* set panel margins 5px greater than col-1 & col-3 widths */
main-panel { margin-left: 105px; margin-right:105px; background-color:white;
}
/* force footer to stay at the bottom */
ftr { clear: both;
}
/* color the elements - for clarity only */
hdr, #ftr { background: fuchsia;
}
ul, #col-3 { background: aqua;
}
main-panel { background: white;
}`
通过结合两种技术——全宽体背景色和半液体布局——一种可接受的解决方案可以应用于屏幕宽度和分辨率变化的问题。
可接受的妥协
使用半流体网站容器或包装。给正文一个背景色或渐变,以填充任何屏幕尺寸和分辨率。在 CSS 中定义该颜色,如下所示:
/* Flood the whole screen with yellow*/ **body { background-color:yellow; }** **#container { width:95%; min-width:960px; max-width:1200px; margin:auto; }**
这给了页面的印象 ,它充满了屏幕(主体的背景),同时将内容( #container
) 很好地布置在屏幕的中央。让标题/横幅填满屏幕的宽度可以强化这种印象,但这并不总是有吸引力的。具有最小宽度的半液体容器防止布局在较小的分辨率下破碎。最大宽度限制确保内容不会蔓延到大屏幕上,在元素之间显示巨大的间隙。
其他考虑因素可以决定网站的布局。你需要向你的客户咨询他正在使用的设备以及他对该设备的未来意图。手持设备的出现也使选择合适布局的问题变得复杂。
其他与显示器相关的注意事项
当设计一个供办公室或工厂内部使用的网站时,您需要实地考察以确定屏幕尺寸和分辨率。如果员工不得不连续水平滚动来访问页面上的项目,他们会不高兴。如果公司投资购买屏幕更大的新设备,你将需要改变集装箱的宽度来匹配。为了便于阅读,你可能需要将文本分成两栏。
注意 对于宽布局,尤其是流动布局,使用两栏文本是非常重要的。参见第十三章设计两栏或多栏文本的方法。
其他类型的用户和设备将越来越需要特殊考虑。具有不同操作系统和浏览器的新手持设备的出现使网站设计者面临的任务变得复杂并增加了难度。
网站能在手持设备上运行吗?
手持 是一个描述手机和平板电脑的术语。手持设备的设计本身就是一本很大的手册,因此,在本书中只会简单提及。许多为台式电脑设计的网站已经在更大的手机和平板电脑上运行得相当好了(只要它们有效,并且不包含框架或表格布局)。
Maximiliano Firtman(O ' Reilly Media,2010 年)写的《移动网络编程》》是一本关于这个主题的书。
问题
可以浏览网站的手持设备的出现是网页设计者最近的噩梦。屏幕分辨率可以从 176 × 220 像素到 1280 × 800 像素不等。手机一般都有比宽度高的人像式屏幕,屏幕从 2.8 英寸到 4 英寸不等。平板电脑屏幕从 3.2 英寸到 10 英寸不等。三星 Galaxy Tab 10.1 的显示屏为 10.1 英寸,分辨率为 1280 × 800。苹果 iPad 的显示屏为 9.7 英寸,像素为 1024 × 768。一些手机和大多数平板电脑能够将屏幕视图从纵向翻转到横向。更高的分辨率在手持触摸屏设备上是可能的,因为它们不需要为键盘提供空间。原来手持设备不是手机就是平板;现在,这种区别变得模糊了,因为平板电脑整合了手机和相机。
在 2011 年的消费电子展上,展出了不少于 80 款平板电脑。至于操作系统,目前这场战斗是在几个平台/浏览器之间进行的,而且这种情况似乎会加剧。其中包括 iOS4 OS6 4,Android,Opera,Windows 7,Windows 8,WebOS,Blackberry OS,Simbian 和 QNX 中微子。
起初,手持设备的浏览器是桌面浏览器的改编。它们现在更有可能是专门为手持设备设计的。浏览器必须比桌面浏览器更紧凑,因为手持设备的内存更少,也没有硬盘来交换内存。
手持设备的浏览器更紧凑;这意味着他们已经放弃了大部分补偿标记错误的代码。因为它们的容忍度较低,所以页面的验证变得绝对必要。
网页设计师有时会制作不同的样式表来匹配微型屏幕、各种移动浏览器、低分辨率和各种操作系统。手持设备用户熟悉使用缩放工具来浏览网页。如果你为手持设备创建特殊的样式表,尽量减少水平滚动的需求。当提供这些替代样式表时,将它们的链接放在任何其他链接之前,如下所示:
`
`
为网站创建替代样式需要大量的反复试验,然后在移动设备上进行一系列测试。有 80 种不同的手持设备和众多的平台和浏览器,这项任务确实令人生畏。没有一个网页设计师能够保证样式表适合所有的设备。
因此,设计师的首要任务是决定哪些网站最有可能在手持设备上被浏览。然后,她应该集中精力让它们便于手持。
网页设计师面临着艰难的选择。他们可以决定
Ignore handheld devices.
Designed for desktops, laptops, netbooks, tablets and mobile phones with screens larger than, say, 6 inches.
Designed for desktops, laptops, netbooks, tablets and mobile phones with screens larger than, say, 6 inches, and two or three smaller and most popular handheld devices.
Try to accommodate everything.
选择一和选择二是可以管理的。第三种解决方案要求您使用一些测试方法。第四个解决方案的学习曲线有珠穆朗玛峰那么长。大公司有时间和人力为手持设备和平板电脑创建完全独立的网站。有关如何为解决方案二和三设置和创建替代样式表的一般指导,请访问[
www.opera.com/developer/tools](http://www.opera.com/developer/tools)
。
Opera 网站包含有用的工具,包括平板电脑和手机模拟器。
为手持设备制作另一个样式表
一个解决方案是为手持设备设计一个特殊的样式表,使显示可以接受。但是,您可能会发现,您还需要修改 HTML 标记。通过仔细规划,这可以保持在最低限度。下面是一些关于修改标记的提示,这样您就可以在支持桌面和手持设备的 HTML 页面中使用两个样式表。
Reduce the size and number of images.
Simplify the homepage and make it a container for links to other pages. Links should be a simple, vertical and unordered list.
Text should be in one column, and the maximum width should be limited as much as possible to avoid horizontal scrolling. Keep banners and signs to a minimum or hide them.
The number of words should be compressed to an absolute minimum. Be sure to check a large number of websites on handheld devices, so that you can see the advantages and disadvantages of website adaptation.
测试网站的手持兼容性
个人网页设计者或小团队在提供测试手持设备方面会有问题。这是因为设备种类繁多,而且有多种操作系统和浏览器。以下是一个可能性列表:
Let children, grandchildren or friends check your website with handheld devices and let them express their opinions on any problems.
Download some handheld simulators of test websites. Buy some handheld computers or pay for some of the most popular models every month.
Enter "Remote Device Access" in the search engine to check the results of possible remote test facilities.
W3C has a mobile tag verifier at [
validator.w3.org/mobile](http://validator.w3.org/mobile)
. Upload your file or URL to see if the tag is suitable for handheld devices.
模拟器
我在网上找到了几个可下载的模拟器,但是它们很难安装和掌握。我需要一个官样文章的博士学位来遵循说明;然而,我确实在 Opera Mini 模拟器上取得了一些成功。安装后,它有一个启动器,可以让你选择各种屏幕尺寸、分辨率和方向(横向或纵向)。
可以从[
www.opera.com/developer/tools/](http://www.opera.com/developer/tools/)
下载 Opera 模拟器。
模拟器操作起来很棘手,但是 Opera 开发者网站上的帮助文件解释了非直观的控件。有关帮助文件,请访问[
dev.opera.com/articles/view/opera-mobile-emulator/](http://dev.opera.com/articles/view/opera-mobile-emulator/)
。
总结
本章讨论了台式机和笔记本电脑显示器的颜色、尺寸和分辨率差异很大的问题。涵盖了折衷解决方案;这些可以下载并在各种屏幕上试用。幸运的是,显示器的物理尺寸有其自身的限制;很少有用户有空间容纳 23 英寸以上的屏幕。您还了解了max-width
和min-width
属性如何为屏幕尺寸变化问题提供最佳解决方案。
手持设备现在可以接收和查看网站。我们简要介绍了这些设备带来的问题。手持设备的大小差异很大,并且有许多不同的操作系统。每个月都会有新的浏览器推出,而且它们的浏览器也经常升级。为手持设备设计网站的手册将很快过时。
下一章与本章密切相关,讨论网站在屏幕上的外观。您将了解是什么让一个页面对用户有吸引力,以及如何让用户有足够的兴趣去浏览这个网站,而不是去逛另一个网站。你还会发现这个网站的实用性是如何帮助实现这个目标的。
十三、外观和实用性
访问者只会浏览一个有吸引力和有用的网站。一些网站所有者要求一个让他们满意的网站,而不考虑什么会让他们网站的访问者满意。这样的网站让所有者很高兴,但它可能对访问者或所有者的业务没有任何帮助。网站所有者应该问问自己,网站将为访问者做些什么。他们应该问几个人,如果他们访问这个网站,他们希望找到什么。
当与潜在客户交谈时,向他们解释网站设计过程不是从文字和图片开始的,而是从计划开始的。首先,确定网站的总体目标。是为了分享信息吗?还是有望产生销量?从一个目标开始会使设计网站更容易,并帮助每个人关注网站的目的。集中精力让网站的信息快速、清晰、直接地出现。
考虑导航和你的次要内容如何与你的目标互动。规划页面或部分。每一页应该只涵盖一个主题。列出主题,并使用该列表规划导航菜单。在开始组成页面之前,规划导航菜单和结构;这样可以节省以后很多小时繁琐的修改。
外观
关于网站外观的这一节首先简要讨论了文本的使用和滥用;文本内容的显示方式可以增强或破坏网页。接下来,你会了解到主页的重要性;它的出现是如何吸引用户进一步探索还是将他们从你的网站上赶走。接下来讨论颜色的效果,最后提供一些有用的提示来帮助你创建更有吸引力的页面。
文字的使用和滥用
本节中的指导方针只是简单的常识,但是一定要把它们作为一个清单来改进你的工作,以防感情压倒理智。当我开始设计网站时,一些客户向我展示了大量的文字,保证会把用户从他们的网站上赶走。然后我就有了压缩文本的乏味任务,这偶尔会惹恼客户,这是可以理解的。我证明了压缩文本并保留客户希望传达的每一点信息是可能的。
我还向他们提出了一条小小的建议:在一本书、一本杂志或一本小册子中,冗长的文字可能是可以接受的,但是大量的文字,尤其是在主页上的文字,将会彻底毁掉一个网站。
测试表明,当出现大量文本时,网站访问者会抱怨并转向另一个网站。这是因为与打印的页面相比,在屏幕上阅读文本非常累人。访问者访问网站不是为了阅读;他们在网上寻找特定的信息,并且希望快速找到。
压缩文本主要适用于主页面,但是如果你在描述一个产品或服务,或者提供信息,不要为了简洁而忽略重要的细节;删除对信息没有任何帮助的词。
所有重要的主页必须像捕蝇草一样
所有的网站都从主页开始。主页的设计尤其重要,因为它是访问者的第一印象,它传达了网站的基调。使其成为一个有吸引力的杂志封面(参见图 13-1 )。用它来激发访问者的兴趣。这很容易做到,只需透露足够多的信息;这引起了好奇心。
图 13-1 。捕蝇草。aboutfacts.net
供图
主页应该像一个捕蝇草,一个吸引人的登陆点,把访问者吸引到更深的地方,让他们不去别的网站。每一页必须清楚地集中在一个主题,只有一个主题。这尤其适用于主页。重点是对网站内容的简要描述。这一点必须通过导航菜单上的按钮或链接的措辞来强调。
是什么破坏了主页上的焦点?没有什么比一个贴满 RSS 订阅源、表扬、徽章、无关网站链接、闪烁广告、字幕和视频的主页更糟糕的了。徽章、奖状和认证证书都有一定的作用,但这些最好放在“关于我们”页面上。W3C 验证标识可以放在侧边栏或页脚,因为客户经常渴望表明他们雇佣了一个有能力的设计师。一码长的主页和巨大的文本块是焦点杀手。一个没有清晰焦点的页面会把访问者拒之门外。
图 13-2 和 13-3 显示了一个聚焦的和一个非聚焦的主页。
图 13-2 。一个干净整洁的主页
图 13-3。 呸!
主页必须非常简短和整洁。主页上的信息太多是不好的。这使得后续页面变得多余。如果主页已经说明了一切,为什么访问者还要费心去点击菜单项呢?
主页必须清楚地表明网站的内容。
如果你是天堂退休中心,不要只显示“天堂”的标题,并附上大楼或一些快乐居民的照片。简短地 大声说出提供的内容;类似于以下内容:
受保护的退休住所
为老年人出租的住所
在关爱的环境中拥有陪伴和支持的独立性
一言以蔽之:不要再添加任何文本。让菜单按钮诱惑用户去发现故事的其余部分。
图片比文字更能解释事物。但是大图片(或者图片太多)会让主页加载很慢。然后访问者会离开去寻找一个加载速度更快的网站。
空白对于聚焦是必不可少的。在每一页上使用大量的空白来把注意力集中在重要的部分。空白表示没有文字或图片的空间。如果你有一个浅青绿色的背景,那么空白将是浅青绿色的,但它仍然被归类为空白。空白将注意力集中在要点上。糟糕的设计师很想填满页面的每一个可用区域。拥挤的页面令人厌烦。
保持主页简短。使主页的高度不大于屏幕窗口高度。不要让访问者向下滚动主页。如果他们不得不向下滚动,你在主页上放了太多东西。向下滚动可能意味着菜单不再吸引他们。当然,后续页面可以更长。一个简短的主页可以确保访问者查看菜单按钮以获得更多信息。
精心选择颜色 。为了清晰易读,最好的文本颜色是白底黑字。鲜明的背景色,如鲜红色,如果覆盖了页面的大部分区域,会让人感到不舒服。如果你的网站是卖东西的,使用明亮但不花哨的颜色,并且有节制地使用它们(只是为了产品或菜单按钮)。花哨的颜色搭配表明网站没有品位,缺乏专业水准。如果你不是在卖东西,而是在提供信息,那就用淡色的背景来营造平静;访问者会在平静的网站上逗留更长时间。深色的背景颜色是不祥的,令人不快的(尤其是黑色,它真的只适合殡仪馆)。避免整页背景图形(水印或纹理);它们会导致页面过于繁琐,使文本难以阅读。确保文本和背景颜色有足够的对比度,使弱视的人能容易地阅读你的网站(关于颜色对比的细节,见第十四章)。
如果客户有一个带有配色方案的房子风格,或者一本小册子,或者一个彩色标志,这些都可以作为一个配色方案的良好开端。向客户展示调色板也可以帮助他们选择主题。
最初,一个名称只能指定 17 种颜色,如红色或蓝色。现在,147 种颜色可以这样命名:color: mediumpurple;
。有关这方面的更多信息,请参见[www.w3schools.com/css/css_colornames.asp](http://www.w3schools.com/css/css_colornames.asp)
和[
somacon.com/p142.php](http://somacon.com/p142.php)
。
提示需要对颜色有想法吗?试试下面的网站:[
colorschemedesigner.com](http://colorschemedesigner.com)
或[
colorschemer.com](http://colorschemer.com)
或[
www.elizabethcastro.com/html/colors/backflapcolors.html](http://www.elizabethcastro.com/html/colors/backflapcolors.html)
或[www.december.com/html/spec/color.html](http://www.december.com/html/spec/color.html)
。
你网站上的每张图片都应该有一个 ?? 和 ??,这样即使你的访问者关闭了图片,他们也能发现图片的内容。更重要的是,这使得弱视和失明的人能够听到图片的语音描述。如果一个页面有没有alt
的图片,它将不会被验证。Logos 应该有空的alts
和titles
像这样:alt= " "
和title= " "
,不会妨碍残疾人,但是会验证。除非有title
标签,否则 Mozilla 不会显示工具提示。
每个超链接 都必须有一个title
像这样:<a href="Page-two.html" title="Page Two">Page Two</a></li>
。
避免滚动文本(字幕)、自动启动视频和任何移动 的东西。这些花招是把人们从你的网站上赶走的最好方法。噱头可能非常令人恼火,也可能成为人们关注的焦点——以至于忽略了页面的其他部分。唯一的例外是展示事物如何工作的动态图片(不在主页上)。是否运行应该在用户的控制之下;它不应该自动启动。如果是动画.gif
,那肯定是循环次数有限;假设在五到十个周期之间。如果视频、音频和幻灯片不在主页上,并且用户可以选择是否要观看/收听,则它们是可以接受的(媒体文件不得自动启动)。
Autostart 表示加载页面时声音或视频自动开始。这是个坏主意,因为它肯定会激怒人。突然爆发的声音会让用户大吃一惊,尤其是盲人用户。用户要么会立即离开你的网站,要么会疯狂地寻找关闭 AV 剪辑的方法。他们可能永远不会再回到你的网站。确保 AV 只能在用户请求时开始。如果自动开始载入一个短而安静的琶音,它对于音频可能是可以接受的。也许一段安静、舒缓的背景音乐是可以忍受的,如果它是短暂的,并且不会无休止地重复。
框架:这是一种允许内容在固定的横幅和菜单后面上下滚动的设计方法。框架不再被接受;搜索引擎拒绝穿透框架来定位后续页面。框架不能在移动设备上工作,并且它们使得盲人和弱视者几乎不可能阅读屏幕。
主页以外的页面
印刷品、音频和电影以线性方式交流。观众从开头开始,一直看到结尾。一个网站很不一样 ;它是非线性的。用户通过在网站上跳来跳去来探索。网站更像是一本电话簿;为了找到 Fred Blogg 的电话号码,你拿起目录(相当于主页),跳到 Bs(对于 Blogg),跳过所有其他页面。然后跳过 B 条目,直到到达 Blo。找到正确的电话号码后,你可能不会浏览其他页面。这个目录已经达到了它的目的。如果一个网站的访问者可以直接跳转到他所寻找的信息,那么这个网站就达到了它的目的。
假设约翰·史密斯和他的妻子决定在 7 月 25 日和 8 月 25 日之间带着孩子去英国德文郡的农场度假。约翰在搜索引擎中输入“农场假日德文郡”。他在结果页面上选择了第一个农场假日。在网站上,他看到一个标有“空缺”的菜单按钮。他点击它,并被带到一个页面,显示他想要的日期没有空缺。使用下一个搜索结果,主页是一个可怕的业余混乱,所以他跳到列表中的下一个网站。这个网站没有给出如何找到空缺日期的提示,所以他跳到下一个搜索结果。下一个网站没有可用日期的菜单按钮;相反,主页告诉他打电话约会。他受不了打电话的麻烦,所以他去了下一个网站。这个有一个指向可用日期的菜单按钮,他点击它,看到有一个合适的日期。很好!他现在会点击价格菜单按钮,发现它太贵了。所以他继续寻找,直到找到最合适的。
我们来分析一下这个。
他访问了六个网站的主页。* He immediately gave up two places.* He explored another page besides the home pages of three websites. Then, he browsed two other pages besides the home page of the last website.
网站所有者很难相信用户不会阅读他们精心制作的每一页。
但是,如果 John 以合适的价格找到了合适的空房,他将浏览该网站上的其他页面,以了解住宿情况、位置、当地景点、所有者(在“关于我们”页面中),最后,他将使用订单来预订假期。
访问者认为他们电脑屏幕上的内容只针对他们。你的语气和文笔要随意,非常简洁。这给人一种亲切感,就好像你在一对一地交谈。冗长的正式散文可以展示你是多么的能言善辩和博学多才,但是它会激怒你忙碌的访客;他们会去别的地方。
始终使用标题和副标题。使用h1
、h2
、h3
、h4
、h5
和h6
标题。访问者很少阅读文本;他们从一个标题跳到另一个标题,寻找他们感兴趣的特定主题。盲人和弱视者可以通过屏幕阅读器点击 H 键从一个标题跳到另一个标题。标题曾经被忽视,因为它们的上下都有大的行距。标题的间距和字体大小现在可以使用 CSS 轻松调整(见第十四章)。
不要在页面上展开文字。当眼睛已经到达一长串文字的末尾时,访问者将头转回到该行的开头,通常会迷失(并且他最终会放弃挣扎)。请改用两列。在分辨率为 1024 × 768 的情况下,可接受的最大列宽为 5.25 英寸(133 毫米)。儿童网站应该有更小的列宽。
小字体不人性化 。正文中的文本对于 Times New Roman 来说不应小于 100 %,对于 Arial 或 Verdana 来说不应小于 80%。没有人会费事去拿一个放大镜来查看一个 8 磅的网站。
尽量不要在一页上使用两种以上的字体。Arial 和 Verdana 是首选的无衬线字体,因为它们是为网站上的易读性而设计的。Times New Roman 是最好的衬线字体,因为它经过专门设计和测试,具有良好的可读性,尤其是对于印刷品。
文本应该被分割成小块 ,在适当的地方使用项目符号或标题 。卖点最好用项目符号来突出。如果可能的话,让文字穿插图片。一旦访问者找到了一个提供他们所寻找的内容的网站,他们就会渴望探索更多的页面。最后,当他们被吸引时,他们会想更多地了解提供产品的人。“关于我们”页面通常是最后一个被访问的,但它可以成交。
不使用两端对齐的段落 。对齐文本是一个杀手,必须不惜一切代价避免。大脑必须努力克服单词之间的巨大差异。此外,与参差不齐、右对齐的文本的生动性相比,对齐的文本看起来很无聊。比较杂志上的两种风格,看看参差不齐的风格看起来有多有趣。对齐文本对阅读障碍者和任何使用屏幕放大软件的人来说都是一个问题,因为单词之间的不同间隙也被放大了。对齐的文本中有分散注意力的空白河流贯穿其中。
小斜体字体在网站上从来都不好看。计算机屏幕上出现的小斜体是一系列被印刷设计师称为“锯齿”的字体该文本具有粗糙的锯齿外观;因此,除了较大的字体外,应避免使用斜体。
帮助您的客户选择设计
如果你的客户没有网站设计的经验,他们会想知道如何进行。总是尽可能地提供帮助,因为他们需要学习基础知识;这需要极大的耐心。他们从你身上学到的越多,他们就越不可能要求愚蠢的事情。强烈抵制展示自己专长的诱惑;这对发现你的客户想要什么没有任何帮助。
新客户有时会向你展示一个可怕网站的打印页面,并说,“这就是我希望我的网站看起来的样子。”最好的方法是一开始就同意,然后说“让我们看看如何做得更好。我们需要我们双方的一些投入来稍微整理一下。”我委婉地指出,为什么客户样本中的一些可怕的部分会有损于拟议中的网站。
如前所述,客户现有的任何营销材料或标识都是一个很好的起点。客户可能已经到了要改变房子风格的地步;这不仅有助于你和你的客户一起创造一个全新的外观和感觉,而且它提供了一个为你或你的团队创造更多工作的机会。
当与不知道自己想要什么或对网站设计一无所知的潜在客户交谈时,我会让他们坐在我旁边,坐在电脑屏幕前,做以下每一件事:
I showed them a page template to help them choose the color and page layout (see Figure 13-4 ).
I asked them to list the topics they wanted to include. Then I explained that a theme is equivalent to a page, and a theme is a button or link on the navigation menu. I explained the approximate cost per page, so that they can be completely sure of their commitment if they agree to continue.
Let me explain how much it costs for hosting and domain name registration.
I explain how much it costs to process and insert a page for each picture.
I asked them how they planned to provide me with pictures.
I asked them what kind of continuous maintenance they might need, and gave them the estimated cost of updating the website.
I make sure that the potential customers understand the size and time limit of the hosted video (see Chapter 6 of for details). I suggest that they carefully consider all the issues we discussed before committing to this project.
图 13-4。 帮助客户选择颜色和设计的典型样本页
所有这一切的要点是,潜在客户应该感到放心,离开时会觉得他们对流程有所了解,不再是傻瓜。如果你让一个潜在的客户感到愚蠢或无知,你就应该失去他或她。
使该项目成为一个完全合作的项目。使用我自己的网站主机,我创建了一个名为“hidden”的文件夹,然后我让客户端知道这个文件夹的 URL。我将客户的草稿一页一页上传到那个文件夹,这样他或她就可以看到最新的页面,并查看之前页面的任何进展。然后,客户可以对整个过程的每一步做出贡献和评论。
与您的客户一起安排 网站的注册和托管。我让我的同事坐在我旁边,用他们的名字注册网站。然后我给客户所有的 FTP 细节,以防他们将来某个时候想换另一个网站管理员。我解释说,网站将以客户的名义注册和托管,他或她将拥有网站的版权。一些卑鄙的网站设计者会将客户锁定在一个无止境的合同中,这样客户就永远不能将网站转让给其他人。困住客户后,这些令人讨厌的网站设计者将收取高额的年度维护费。
一种显示/隐藏文本的技术,提供了一个紧凑的页面
在本章的“文字的使用和滥用”部分,我解释了过多的文字会让人们远离网站。通过只显示标题,新闻页面可以变得更加紧凑和易于使用。用户可以扩展标题来阅读他们选择的新闻条目(参见图 13-5 和图 13-6 )。为此,您需要下载 JavaScript 文件jquery.js
并将其放在您网站的根文件夹中。jQuery
是一个跨浏览器库,旨在简化客户端脚本。
下面的隐藏/显示技术由 Karl Swedberg 完善并发表。如需下载,请前往[
jquery.com](http://jquery.com)
。更多信息,参见[
www.learningjquery.com/2006/09/basic-show-and-hide](http://www.learningjquery.com/2006/09/basic-show-and-hide)
和[
www.learningjquery.com/2007/02/more-showing-more-hiding](http://www.learningjquery.com/2007/02/more-showing-more-hiding)
图 13-5。 我采用了卡尔·斯威得伯格技术的最简单版本,并添加了一些用户友好的修饰。
图 13-6。 点击时新闻项展开。
在图 13-5 和图 13-6 中创建带有显示/隐藏功能的标题页面的代码如清单 13-5 所示。
清单 13-5。【show-hide.html 用 jquery 创建显示/隐藏页面
`<!doctype html>
Show/hide text from learningjquery.com
*meta details go here*
TODAY'S NEWS
Lamb causes trouble
Click here to read more or hide
Mary had a little lamb **that walked into some soot **And everywhere ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/prac-h5-proj/img/U002.jpg)
that Mary went **His sooty foot he put
Weather
Click here to read more or hide
Red sky in the morning, **Shepherd's warning. **
Red sky at night, **The shepherd's hut is probably on fire.
Science and Technology
Click here to read more or hide
Scintillate, Scintillate globule ethereal **How I contemplate your ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/prac-h5-proj/img/U002.jpg)
structure and material. (with apologies to twinkle twinkle little star)
Thought for the day
Click here to read more or hide
"Give me golf clubs, fresh air and a beautiful woman partner, ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/prac-h5-proj/img/U002.jpg)
and you can keep your clubs and the fresh air." Jack Benny
`
为了方便起见,清单 13-5 中使用了内部样式。图中显示了第二块 JavaScript 代码,但它通常会被提取到一个外部文件中,并命名为show-hide.js
。然后,标记会像这样调用 JavaScript 文件:
script src="show-hide.js" type="text/JavaScript"> </script>
第一段 JavaScript 调用文件jquery.js
;这是驱动这项技术的引擎。
<script src="jquery.js" type="text/JavaScript"> </script>
下一个 JavaScript 块的第一行是$(document).ready(function() {
它说,“当页面加载后,执行下一行 JavaScript 代码。”
在 HTML 标记中,所有的新闻条目都包含在一个带有类demo-show
的<div>
中。
`
`
每个新闻条目都写在一个标记组中,如下所示(以粗体显示):
`
Lamb causes trouble
Click here to read more or hide
**Mary had a little lamb that walked into some soot And everywhere** ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/prac-h5-proj/img/U002.jpg)
**that Mary went His sooty foot he put**
**
**`
JavaScript 的第二行与用户交互。线$('div.demo-show:eq(0)> div').hide()
;以 demo-show 类中的每个<div>
为目标,隐藏<div>
的内容。
接下来的两行针对演示组中的<h3>
标记:
$('div.demo-show:eq(0)> h3').click(function() { $(this).next().slideToggle('fast'); );
它们触发一个快速的切换动作,使<h3>
标签的内容变成链接。这些链接显示或隐藏包含扩展新闻条目的 div。
CSS 样式使这些链接变成蓝色并带有下划线,以表明它们是活动链接。
最后,一个光标被添加到 CSS 中与<h3>
目标相关的链接上。链接和光标样式以粗体显示。
.demo-show h3 { font-size:small; margin: 0; **color:blue;** ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/prac-h5-proj/img/U002.jpg) **text-decoration:underline; cursor:pointer;** background: #bfcd93; ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/prac-h5-proj/img/U002.jpg) text-align:right; padding:0 5px 5px 0; }
注意 光标名称pointer
是用词不当;你会以为它是一个箭头,但它实际上是一只手。
新的 HTML5 <details>
和<summary>
标签提供了一个显示/隐藏功能,但是在编写的时候只使用了 Chrome。因此,在没有合理范围的浏览器支持的情况下,我无法正确测试提议的标记。使用该功能时,可以点击<summary>
元素来扩展或缩小细节。
在 HTML5 中显示/隐藏
新的 HTML5 显示/隐藏特性的标记如下所示:
`
Was the Mona Lisa a paint by numbers kit?
No, Leonardo used a graphics program on the world’s first computer, Colossus
`
有用性
一个有用的网站会成为一个受欢迎的网站。例如,如果一个竞猜蜂鸣器制造商的网站包含有用的内容,如竞猜问题和各种可选竞猜游戏的说明,那么他可能会比其他竞猜蜂鸣器制造商更受欢迎。如果一个网站有一个可识别的品牌,一个容易理解的导航系统,和一个搜索网站的简单方法,那么这个网站就是有用的。
用图标提升网站的形象
单词 favicon 代表收藏夹图标。这种图标可以增加网站的重要性,因为所有的大品牌都有一个 favicon。它们也有助于网站识别和品牌推广。更重要的是,它是有用的,它帮助用户快速识别收藏夹列表(书签列表)和浏览器标签中的特定站点。图 13-7 显示了我的计算机帮助网站上的图标。
图 13-7。 地址栏和选项卡中的“C”是www.colycomputerhelp.co.uk
的图标
在收藏夹或历史列表中突出的收藏夹是那些有一个图标的收藏夹,如图图 13-8 所示。
图 13-8。 在收藏夹列表中,“C”图标非常突出。
创建网站图标
一个 favicon 必须是一个 16 像素的正方形,这意味着,因为它很小,你可以忽略细节。在图 13-9 中,放大显示了 Coly 计算机帮助图标;它证明了图标不能显示清晰的细节。然而,只要你简化内容,这并不重要。
图 13-9。 科里电脑帮助图标
发挥你的聪明才智,选择一个有意义的图标。 对于我的网站(
www.colycomputerhelp.co.uk`` ),我选择了 URL 的第一个字母;即蓝色的独特大写字体“C”。如果可以,用一种颜色;这将使它在收藏夹列表和浏览器标签中脱颖而出。将图像缩小到 16 × 16 像素,保存为.gif
或.png
文件。重要的是保存为 16 色图像;否则会变得很模糊。现在它必须转换成一个.ico
文件,并改名为favicon.ico
。
提示 许多画图程序无法以.ico
格式保存图像。Adobe Photoshop 需要一个插件,Paint Shop Pro 7 到 9 不会以.ico
格式保存。免费程序 GIMP 和 IrfanView 保存.ico
文件。IcoFX 是一个免费的图标制作程序。可从[
www.icofx.ro](http://www.icofx.ro)
下载。尽管使用起来相当棘手,但一旦掌握,它就是一个有用的工具。如你所料,它获取.png
和.gif
图像文件,并将生成的图标保存为。ico 文件。
在主机 上传 favicon 图标到你的根目录,必须命名为favicon.ico
。您不必向 HTML 代码添加任何内容。但是,如果您希望安全起见,或者 favicon 没有显示在特定的浏览器上,您可以在页面的<head>
部分添加一个链接,如下所示:
<link rel="shortcut icon" href="favicon.ico">
除了 Chrome 之外的所有浏览器都会在地址栏的左边显示 favicon。除了 Chrome 之外的所有浏览器标签和收藏夹列表(书签)都会显示它。
注意 如果你有几个网站,每个网站都有一个图标,它们都必须被命名为 favicon.ico
。显然,为了避免混淆,你必须非常小心地把它们分开存放在与每个网站相关的文件夹中。
有一个潜在的问题。上传 favicon 后,您可能会发现它不会出现在地址栏中,尽管它可能会出现在浏览器选项卡上。这意味着你的网页的非 favicon 版本的拷贝存储在你的浏览器的缓存中,显示的是旧版本。你需要清空浏览器的缓存。或者,在其他人的计算机或您的其他计算机上查看该网站。如果您可以在另一台计算机或不同的浏览器中看到 favicon,那么您知道它已成功加载,即使您在常规浏览器中看不到它,而旧页面仍在您的缓存中。
对访问者和所有者的有用性
如果一个网站包含了访问者需要知道的一切,那么它就是最有用的。如果信息不容易获取、不清楚或丢失,那么它就没什么用处。如果它经常更新,并且包含会让访问者一次又一次返回的条目,那么它就很有用。页面打印机按钮也使网页更有用,它将节省墨水和纸张(页面打印机按钮见第十七章)。
在商业网站的主页和所有其他页面上,让访问者很容易联系到网站的所有者。 信息可以包含在每一页的页脚中。这样,无论保存或打印哪个页面,访问者都会保留那些重要的信息。然而,这可能会产生一个维护问题——如果您更改了其中一个项目,每个页面都必须更改。或者,如果您喜欢将信息放在一个页面上,请使用“联系我们”页面或“关于我们”页面。这些网页应该包括一个加密的电子邮件地址或一个反馈表的链接,以便访问者可以很容易地向所有者发送电子邮件;所有者的电话号码;和主人的邮政地址。联系方式——邮政地址和电话号码——对于树立信心和满足法律要求至关重要。明智的访问者不会从没有邮政地址或电话号码的网站上订购。还包括商业注册号和与适当的贸易协会的链接,以便客户可以检查企业的信誉。
如果网站所有者希望人们在网上订购商品 ,给用户所有必要的信息,让他们立即放心订购。你必须展示价格 :如果游客不得不停下来打电话询问价格,销售很可能会失败。不要隐瞒销售税和送货费用等信息。如果在订单过程的最后突然增加额外的成本,潜在的订单可能会被放弃。提前警告客户额外的费用。
不要让用户困惑
导航系统(菜单)必须非常清晰。导航越清晰,网站越有用。要决定在菜单上放什么,问这样一个问题,“访问者可能想从这个网站学到什么?”更好的办法是,问问其他人他们希望在网站上找到什么信息。例如,一个住宿加早餐网站的菜单按钮可能包括任何空房?价格,位置,住宿,预订表格,关于我们,联系我们。
让访问者轻松完成两件事:
Get the information they are looking for quickly and easily.
Can easily and logically move from one page to another.
如果用户不能方便快捷地找到信息,那么信息就是无用的。
最好的导航菜单按钮是带有对比文本的彩色非图形按钮。不要在菜单按钮上使用无字图片,因为导航需要解释;也就是说,你必须告诉人们点击图片获取更多信息。访问者期望一个简单明了的、水平的或垂直的菜单,不需要任何解释。如果你有大量的菜单项,那么在页面上同时使用水平和垂直菜单。使水平按钮比垂直按钮大。确保网站访问者不会感到困惑或被困。与非专业冲浪运动员一起测试网站。如果你的“试验品”说,“我下一步做什么?”
避免 JavaScript 下拉菜单。 这些隐藏了访问者正在搜索的信息(最不友好)。尽量不要使用太多的子菜单。搜索引擎无法穿透 JavaScript 菜单,这意味着你的主页将是唯一被搜索引擎索引的页面。这确保了你的网站会有一个很低的排名,除非你的网站是关于一个独特的主题。此外,在移动和平板浏览器上使用 JavaScript 菜单可能会很困难,如果不是不可能的话。
不要让随意散落在页面上的零碎东西让访问者 感到困惑。每页只写一个要点或主题。设计好每一页的布局,让用户能够关注你的要点。一个繁忙的页面不能引导用户到关键的功能。在相关组中显示事物。
练习一致性。 在每页的相同位置使用相同的导航按钮。在每一页上使用相同的背景颜色和字体。这很容易通过从你的主页制作一个模板来实现。样式表还应该确保一致性。
确保访问者知道他们在 的哪一页,以及每一页将为他们做什么。如果游客不能马上解决,他们会去别的地方。在页面顶部放一个简短的说明性标题,这样人们不用向下滚动就能看到页面的内容。人们会 向下滚动,但前提是他们有理由确信页面的其余部分有他们感兴趣的内容。
避免带下划线的单词或短语。访问者会认为这些项目是超链接。下划线可以隐藏下划线。给文字加下划线的设计师是在暴露他们的年龄;下划线可以追溯到古代机械打字机的时代。下划线是完全没有必要的,因为你可以使用粗体或更大的字体或颜色来强调一个单词或短语。
向网站添加搜索字段
搜索域可以增加网站的有用性,也可以吸引人们离开你的网站,这取决于它是如何实现的。如果你选择只在自己的网站上提供搜索功能,这没有问题。搜索集中在你的网站上,但是偶尔一两个其他的网站也会出现在搜索结果上。如果你选择搜索整个互联网的代码,那么用户将会被诱惑去探索一些搜索结果并放弃你的网站;这不是个好主意。接下来,我将描述由三大主流搜索引擎提供的网站搜索框代码:Bing、Yahoo!,还有谷歌。
必应搜索框
添加阿炳搜索框,只搜索你的 网站,如图图 13-10 所示。
图 13-10。 添加阿炳搜索字段
主要的搜索引擎提供代码片段。Bing 是最容易安装的。清单 13-10 显示了如何在网页中包含阿炳搜索框。
清单 13-10。【bing-search.html】网页中包含阿炳搜索框
`<!doctype html>
Bing search box
****
`
以下注释涉及清单 13-10 中的粗体项目:
Change the number 1252 to match the code page number of charset
of your website. For example, if your website has <charset:windows-1252>
in the title section, this number will be 1252
. If your website has <charset:utf-8>
in the title section, this number will be utf-8
.
[www.your-web-site.com](http://www.your-web-site.com)
雅虎!搜索框
虽然雅虎!与必应合并后,一些大型机构使用雅虎!作为他们网站的默认搜索引擎。因为许多用户都熟悉 Yahoo!接口,它包含在本节中。为了雅虎!搜索框代码,去雅虎!在[
search.yahoo.com/info/ysearchbox_instructions.html](http://search.yahoo.com/info/ysearchbox_instructions.html)
或使用清单 13-11 。
图 13-11 显示了四个可用 Yahoo!搜索框。
图 13-11。 雅虎!搜索框
有四种格式可用,但说明相当混乱。我已经简化了雅虎!代码,如清单 13-11 所示。
清单 13-11。 包括雅虎网页上的搜索框(yahoo-search.html)
`
<input type="radio" name="vs" value="http://www .your-web-site.com "
checked="checked">Search this site
`
插入您自己的网站 URL 来代替[www.**your-web-site.com**](http://www.your-web-site.com)
。
谷歌搜索框
图 13-12 显示了适用于网站的各种可下载的谷歌搜索框的一个版本。
图 13-12。 添加一个谷歌搜索栏
谷歌要求你注册一个账户,然后它会给你一个令人困惑的表格让你填写。为了避免这些麻烦,戴维·泰勒简化并改进了谷歌代码。请访问他的网站[www.askdavetaylor.com/how_can_i_add_a_google_search_box_to_my_website.html](http://www.askdavetaylor.com/how_can_i_add_a_google_search_box_to_my_website.html)
。
清单 13-12 改编自戴维·泰勒的代码。内部样式表仅用于说明目的。不需要谷歌帐户。它展示了如何在网页中安装一个 Google 搜索框。
清单 13-12。【在网页中插入谷歌搜索框(google-search-1.html)
`<!doctype html>
Google search field by Ask Dave Taylor
`
对于您自己的网站,更改清单 13-12 中粗体显示的 URL。
图 13-13 显示了我的网站上的标题。它包含了使用我的简化版戴维·泰勒代码的谷歌搜索框(见清单 13-13 )。
图 13-13。我已经简化了网站的谷歌搜索;这不需要谷歌帐户。
在清单 13-13a 中,我在页面标题中嵌入了谷歌搜索框,并进一步简化了戴维·泰勒的代码。如前所述,不需要谷歌账户。
清单 13-13a。【google-search-2.html 在网页中嵌入谷歌搜索框
`<!doctype html>
A page with a search field using Google
`
对于您自己的网站,请更改以粗体显示的 URL。
清单 13-13b 是清单 13-13a 中 HTML 的 CSS 样式表。
清单 13-13b。 清单 13-13a 的 CSS 样式表 (search.css)
/*reset browsers for cross-client consistency*/ html,body,h1,h2,h3,h4,h4,h5,h6,p {margin:0; padding:0 } img { border-style: none; float: none; margin-left: 0px; margin-right: 0px; } body { text-align:center; background-color:#D7FFEB; color:black; ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/prac-h5-proj/img/U002.jpg) font-family: "times new roman"; max-width:1024px; min-width:800px; font-size: medium; ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/prac-h5-proj/img/U002.jpg) color: #000000; margin: auto; width:95%; }
`/* set header height and background image */
hdr{ margin-top:0; margin-bottom:0; background-position:45% top; background-image:url('img/compbkgcrop.jpg'); background-repeat:no-repeat; height:160px; padding-bottom:0;
}
h1 { padding: 110px 0 0 12%; margin-bottom:0; font-family :"times new roman"; font-size: 250%; color: #0080a0;; font-weight:bold;
}
hdr { position:relative;
}
.search { position:absolute; top:10px; right:40px; height: 56px;
}`
总结
本章描述了使网站吸引访问者的特性。它还展示了吸引访问者探索主页之外的方式。一个关于有用性的部分强调,即使是一个有吸引力的网站,如果没有用,也会被放弃或者不再访问。提供了创建有用特征的提示。经常查阅这一章,并在尝试书中的其他项目时应用它的建议。
在下一章中,你将学习使网站对残疾用户,尤其是盲人和弱视者无障碍的基本要求。包括美国和英国在内的许多国家已经就网站的可访问性提出了建议或通过了法律,您将会了解其中的要点。除了法律方面,这一章还解释了无障碍环境也为身体健全的用户提供了好处。
十四、可访问性
在美国和英国,三分之一的成年人超过 50 岁,其中一些人会有视力问题。阻止这些人访问你的网站是愚蠢的。许多电子商务网站在向盲人和弱视者开放网站后,销售额显著增加。本章主要讲述帮助弱视者和盲人浏览网站的方法。有严重视觉障碍的人和盲人可以使用屏幕阅读器(语音浏览器),将网站的文本内容转换成语音。屏幕阅读器还可以向用户解释网页的布局,以及描述标记中每个元素的性质。在本章的后面,你会学到更多关于屏幕阅读器和如何设计这些设备能理解的网站。我们将首先简要提及关于无障碍的现行法律和准则。
法律和准则
澳大利亚和联合王国制定了关于视觉障碍者无障碍访问网站的法律;其他国家如瑞典、爱尔兰和日本也制定了指导方针。
在美国,一些州已经发布了指导方针,在撰写本文时,美国司法部民权司正在考虑针对网站可访问性的联邦法规。同时,W3CAG2 和 WAI 是实现可访问性建议的主要力量。WCAG2 是 Web 内容可访问性指南([
www.w3.org/TR/WCAG/](http://www.w3.org/TR/WCAG/)
)的首字母缩写。WAI 是网络无障碍倡议组织([
www.w3.org/WAI](http://www.w3.org/WAI)
/)。
英国法律规定,残疾人应该可以或合理地可以使用网站。这项法律被称为《残疾歧视法》,代表《残疾歧视法》。澳大利亚已将《残疾歧视法》作为本国法律的基础
没有必要惊慌失措,开始重新设计你所有的网站以符合法律,但要努力修改那些最有可能被弱视者或盲人浏览的网站,尤其是那些使用屏幕阅读器的网站。这将表明你已经尽力让这些网站合理地 可访问。当设计一个新的网站时,你应该记住从这一章中学到的东西。
包括英国和澳大利亚在内的大多数国家已经采用 WCAG2 指南作为其法律或指南的基础。
WCAG2 指南有三个标准。
答: 最低限度(但绝对必要)符合 WCAG2 指南
AA: 符合 WCAG2 指南
AAA: 完全符合 WCAG2 指南
网站必须至少符合 A 和 AA 。如果可能,尽量符合 AAA 。
可在[
www.w3.org/WAI/intro/components.php](http://www.w3.org/WAI/intro/components.php)
找到 W3 和 WAI 在无障碍规范方面的状态。可从[
www.w3.org/TR/WAI-WEBCONTENT/checkpoint-list.html](http://www.w3.org/TR/WAI-WEBCONTENT/checkpoint-list.html)
获得检查点列表。
注 W3 围准则和英国准则相似。以下网站在可访问性方面给出了很好的建议:[
www.w3.org/WAI/PF/aria/](http://www.w3.org/WAI/PF/aria/)
;[
www.w3.org/WAI/intro/aria.php](http://www.w3.org/WAI/intro/aria.php)
;[
www.webcredible.co.uk/user-friendly-resources/web-accessibility/uk-website-legal-requirements.shtml](http://www.webcredible.co.uk/user-friendly-resources/web-accessibility/uk-website-legal-requirements.shtml)
;还有[
dev.opera.com/articles/view/introduction-to-wai-aria/](http://dev.opera.com/articles/view/introduction-to-wai-aria/)
。
我们现在将讨论网页设计者可以为部分视力或色盲的用户提供的帮助。这些用户还没有达到需要屏幕阅读器的阶段。网站设计者可以通过应用一些基本的规则来使网站对弱视人群更加易读,这些将在下一节描述。
帮助弱视者和色盲者
这一节涉及的因素,帮助部分视力和色盲,但健全人也将受益于这一节的建议。它涵盖了颜色对比、文本样式/大小、导航的便利性和测试。
颜色对比 文本和背景颜色的比例必须符合一定的标准。
The color of hyperlinks should always be a high contrast color different from that of ordinary text.
The contrast between text and background should be at least 4.5:1 at AA level and at least 5:1 at AAA level. See [
www.w3.org/TR/WCAG/](http://www.w3.org/TR/WCAG/)
for specific suggestions.
The contrast of large text (super normal or bold) should be at least 3:1.
注意 确保你的 CSS 样式代码包含背景色和前景(文本)色。比如{ …color:black; background-color:white; }
。不要在 CSS 和 HTML 之间拆分文本和背景颜色。一定要在一个地方定义它们。
提示 Juicy Studio 网站
www.juicystudio.com/services/luminositycontrastratio.php`` 有一个优秀的在线对比度测试仪,只需输入你的背景和前景(文本)颜色的十六进制代码。或者在
[
www.snook.ca/technical/colour_contrast/colour.html](http://www.snook.ca/technical/colour_contrast/colour.html)
试试 Snook.ca 的色彩对比检查。
我最喜欢的分析仪 CCA-2.2(见图 14-1 )可以下载到你的硬盘上。
从[
www.paciellogroup.com/resources/contrast-analyser.html](http://www.paciellogroup.com/resources/contrast-analyser.html)
下载压缩文件CCA-2.2.zip
你可能已经下载了 CCA-2.2 当跟随第十二章。操作说明如下:向下滚动 Paciello Group 网站的主页,直到看到下载和语言版本列表。单击相应的语言版本下载 zip 文件。将其解压缩到一个新文件夹,然后创建一个桌面快捷方式来访问文件CCA-2.2.exe
。
图 14-1 显示了颜色对比分析仪(CCA-2.2)的界面。
图 14-1。 CCA-2.2 色彩对比分析仪
要使用颜色对比度分析器,请按照下列步骤操作:
Double-click the desktop shortcut (note that the spelling of the color in CCA interface is English and Australian color ).
Use the drop-down arrow or enter a hexadecimal number to select the foreground color (text color).
Select the background color as well.
In the bottom panel, you will see the contrast and be told whether the contrast meets AA or AAA standards.
Change the hexadecimal code one bit at a time until the desired color contrast is achieved. Write down the hexadecimal color code and use it to modify your CSS style sheet. Try this color blindness experiment: choose the most common form of color blindness with green foreground and red background. Now, the bottom panel of the box marked "Show color blindness comparison results" will be expanded to show the influence of these colors on three different forms of color blindness.
If you click the option on the menu, you can adjust the color through the slider.
为了客观地看待问题,让我们看一个颜色对比变化的例子。一个客户要求我使用红色菜单按钮和白色标签。红底白字的对比度是 4:1。几乎相同的红色#D20B0D
给出了 5.4:1 的好得多的对比度。使用这种新的红色,我可以取悦客户,也可以让弱视的人看到菜单按钮上的文字。色彩对比不是全部;我们还必须考虑文本的大小。
允许弱视用户通过使用他们自己的 CSS 样式表来改变文本大小。即使没有特殊的样式表,用户也可以改变文本大小;例如,在 IE 的“工具”下,选择“互联网选项”,然后选择“辅助功能”来选择字体大小。设计网站时,不要使用固定的尺寸,如pt
或px
;始终根据表 14-1 指定命名为的字体大小或百分比。例如,下面的代码选择指定的字体大小medium
:
body { background-color:#d7ffeb; font-family: Arial; **font-size: medium**; color: #000; }
注意 不要使用颜色选择进行导航。一个不好的导航的例子是“点击绿色按钮进入下一页”。单击红色按钮返回上一页。”这样的说明对于严重视觉障碍的人和红/绿色盲的用户是没有用的。
避免使用大写字母或斜体的整句整段。小写字母的形状对每个人来说都更容易阅读,包括弱视的人。
也要避免使用对齐的文字,因为它很难阅读,即使对身体健全的用户来说也是如此。这是因为单词之间的间隙变化很大。对于那些使用屏幕阅读器和放大镜的人来说,大的间隙尤其会引起问题。用户读到一行的一半时可能会被愚弄,以为他们已经到达了行尾,导致他们向下移动到下一行的开始。
一般建议
以下提示将极大地帮助视力障碍者:
您可以创建使用不同样式表的替代页面,以提供高对比度。一个很好的例子,见[
www.juicystudio.com/services/luminositycontrastratio.php](http://www.juicystudio.com/services/luminositycontrastratio.php)
。
多汁工作室菜单上的第二个按钮加载高对比度页面。如果您有几个页面,这不是一个合适的解决方案,因为每个页面的两个版本都必须更新。此外,搜索引擎不喜欢重复的网页组织页面,以便在样式表关闭时可以按逻辑顺序阅读。
Avoid using JavaScript for navigation and operation except for buttons such as printing this page, marking this page and returning to the previous page. These are acceptable only because they duplicate the functions available in all browsers.* When providing information in PDF format, provide the same information in an accessible alternative format, such as HTML or text, or provide links to tools provided on Adobe websites. Adobe is improving the PDF format so that screen readers can read PDF files quickly.* Ensure that links and page elements can be navigated by keyboard; Create a logical tab order for them.* Do not appear pop-up windows or other windows without warning the user in advance.* Give each page a unique <title>
so that users can know their location in the site.* Do not use tables for page layout. Use CSS to locate items on the page. Table-based layout is not suitable for disabled users. Most automatic compliance scanners reject them because they cannot distinguish between data tables and layout tables.* Avoid using ASCII characters, such as the "less than" () symbol to point to something. The screen reader will read its meaning, whether it is "less than" or "greater than". Please use a mesh arrow or some text.* Add a repeating menu and return to the top link on a long page at regular intervals. Don't use too many radio buttons and check boxes, because they will make the form more difficult to fill out.* To help people with shaking hands, make sure there is enough space between fields, check boxes, menu buttons and radio buttons.* Graphical menu buttons can be accessed as long as the title/alternate text describes the purpose of each button.* Screen reader users cannot access JavaScript drop-down menus. Or the drop-down menu in PHP ASP is accessible.* Make sure that the <html>
tag contains a language description so that the screen reader can correctly interpret the page. For example, <html lang=en>
is English.* All images conveying useful information must contain tooltips for using alt
and title
. Pure decorative images can not convey useful information; Therefore, the correct alt/title of these images should be empty alt (alt=" "
), and any empty title should be (title=" "
). The screen reader will not read an empty alt
or title
string.* Ensure that the video has subtitles so that the deaf can understand and appreciate it.* Tab should provide a logical order for disabled users who can't use the mouse. The default jump order is reasonable, so don't change it.* Use short and simple language. Text described by images is useless because screen readers can't read it. If you use an image containing text, be sure to include a "alt"
tooltip that provides text for screen readers.* This prompt is the most important: absolutely make sure that the audio and video clips are neither automatically started nor onmouseover
. This sudden noise will surprise blind or amblyopic users. Always use onmousedown
to start audio or video clips, and give explanations and warnings.* 在每一页(而不是主页)的开头添加一个“跳转到主要内容”链接,这样屏幕阅读器用户就可以直接跳转到内容,而不必重复地浏览导航菜单。一些设计者通过在每一页的开始放置一个普通的链接,或者一个图片,或者一个 1 像素的 GIF 图片(因此是不可见的),标题文本为“跳到主要内容”确保措辞不是“跳到内容”使链接跳转到页面内容开始处的锚点(书签)。`
<img title="Skip to main content" src="onepx.gif" height="1" width="1"
border="0"
alt="Skip to main content">
navigation menu which is to be skipped goes here
main content goes here `
这种方法的一个小缺点是,先前不可见的链接的突然出现会使视力正常的用户感到困惑。您可能会发现使用可见链接更好;选择权在你
提示 从皇家国家盲人学院的网站上可以搜集到有价值的信息。(
www.rnib.org.uk/webaccesscentre`` 和[www.rnib.org.uk/seeitright](http://www.rnib.org.uk/seeitright)
)。RNIB 使用免费的 WAVE 程序来监控可访问性。RNIB 用 WC3 和 WDG 验证器检查 HTML 和 CSS 的有效性。它使用各种图形浏览器和 Lynx 浏览网站,并使用 Freedom Scientific 的 JAWS(语音作业访问)收听网站如何说话。
测试网站的一般可访问性
设计者可以让一个弱视或失明的人充当试验品来测试网站的可访问性。然而,这可能是不可能的或不实际的,所以这里有一些你可以自己进行的测试。使用以下清单来查看您的网站是否可访问:
At [
validator.w3.org](http://validator.w3.org)
Use W3C online validator to verify the code on the web page and rest the cursor on each image and each link to ensure that tooltips, substitutions and titles are displayed.
Turn down the volume to see if there is any audio content with literal equivalence.
Enlarge the font with the browser to see if the page is still alive.
Resize the browser window to see if the content of the page is satisfactory with a small width.
Ensure that users do not need to scroll horizontally to an unreasonable degree at low resolution.
Check whether labels and title marks on menu links clearly indicate their destination.
Ensure that people with disabilities can use the keyboard to browse links and form fields. Use the tab key to check this. Use clear, short and simple text, and divide it into small pieces with informative titles.
Use prefaced content so that each paragraph begins with a conclusion. Use ordered or unordered lists where appropriate.
Remove all flashing items, including the ticker.
Make sure that absolute audio and video are not set to auto-start or onmouseover
.
针对盲人和严重视力障碍者的屏幕阅读器
盲人和视力严重受损的人可以在屏幕阅读器的帮助下使用计算机,有时被称为“语音浏览器”,或者用技术人员喜欢的生硬的行话来说,“辅助技术”屏幕阅读器实际上并不阅读屏幕,而是阅读源代码。有关屏幕阅读器和表格的有趣音频演示,请访问[
www.xstandard.com/en/articles/wysiwyg-editors-and-bad-markup/](http://www.xstandard.com/en/articles/wysiwyg-editors-and-bad-markup/)
提示 在[www.nvda-project.org](http://www.nvda-project.org)
可以获得一个带有演示视频的免费开源屏幕阅读器。初步报告表明,NVDA 的 HTML5 支持比一些商业程序更先进。NVDA 是为 Mozilla Firefox 设计的。它有一个用户指南;更多提示请见
[
www.marcozehe.de/articles/how-to-use-nvda-and-firefox-to-test-your-web-pages-for-accessibility/](http://www.marcozehe.de/articles/how-to-use-nvda-and-firefox-to-test-your-web-pages-for-accessibility/)
。
屏幕阅读器和搜索引擎依赖标题标签<h1>
到<h6>
。当使用屏幕阅读器时,用户点击 H 键从一个标题跳到另一个标题。标题由屏幕阅读器读出,这样用户可以决定标题部分是否是他正在寻找的。如果你的页面没有<h1>
到到<h6>
的标题,屏幕阅读器会说,“这个页面上没有标题”,用户会很困惑。
在 20 世纪 90 年代早期,标题经常被错误地认为是一种让文本变得更粗、更大或更小的方式。这并不奇怪,因为 W3Schools.com 有这样一个相当模糊的指令:“<h1>
定义最大的航向,<h6>
定义最小的航向。”
正确的定义是:“<h1>
最重要,<h6>
最不重要。”
你可能在过去避免使用<h1>
到<h6>
,因为文本上下有很大的空隙。现在使用 CSS 可以很容易地解决这个问题。对于屏幕阅读器来说,重要的标题应该放在页面的顶部,最不重要的放在底部。代码中较早出现的标题更重要(搜索引擎和屏幕阅读器会认为它们更重要)。
The title should simply and accurately describe the theme of the paragraph it introduces.
Use CSS to make the title into any size and format you want (see Figure 14-3 ).
From h1
, never skip a title; For example, don't jump from h2
to h5
.
图 14-2 显示了默认的标题尺寸和行距。
图 14-2。 未格式化的标题(注意文本行之间的双倍行距)
图 14-2 显示了默认的标题样式。图 14-3 显示了使用清单 14-3 中包含的 CSS 格式的标题。你可能永远不会在真实的页面中改变字体大小,这只是一个演示,证明标题可以被格式化。但是,您可以有效地更改标题的行距。
图 14-3。 使用 CSS 改变每个标题和行间距的外观和大小。幸运的是,屏幕阅读器仍然可以识别标题,如 H1、H2 等等。
清单 14-3 显示了应用于每个标题的格式。可以更改标题大小和行距,以便为视力正常的人改善页面的外观。屏幕阅读器仍然接受标题的层次结构,并按照重要性的顺序读出它们。换句话说,视障用户理解页面的结构,因为他们首先听到主标题(H1),然后是 H2、H3 等等。用户通过按 H 键从一个标题移动到另一个标题。
清单 14-3。【hformatted.html 格式化 HTML 标题
`<!doctype html>
Formatted headings
This is an H1 heading
This is an H2 heading
This is an H3 heading
This is an H4 heading
This is an H5 heading
This is an H6 heading
`
数据表和屏幕阅读器
数据表给视障人士带来了一个大问题。如果一个表格的构造不适合屏幕阅读器的工作方式,那么一个有许多列的表格是无法理解的。首先朗读第一行标题,然后朗读第二行单元格,但不引用标题,然后朗读第三行单元格,依此类推。除非视障用户能够记住所有的标题,否则这些行将是难以理解的。
本节给出了一些表格的例子,从简单的两列表格(不需要记忆标题)到四列表格(通常需要记忆标题)。本节描述了几种使表格与屏幕阅读器一起工作的方法。使用这些技术,列标题被链接到单元格内容,并在用户移动每一行时朗读出来。通过向标记中添加额外的列,这些方法可以扩展到四列以上。
注意 表格仅用于呈现数据。可访问页面不得包含布局表格。
有两列的数据表
图 14-4 显示了一个简单的两列数据表,其内容易于屏幕阅读器阅读,不需要特殊标签。但是,一定要用<caption>
和<table…summary="…">
。这使得屏幕阅读器能够通知用户他们已经到达一个表。
图 14-4。 两栏数据表
普通的两列表格不需要标题。屏幕阅读器将一个单元格一个单元格地阅读每一行,不需要记忆列标题。图 14-4 是使用清单 14-4 创建的,它有一个内部样式表,仅用于指导目的。
清单 14-4。【创建两列表格(simple-2col.html ??)】
`<!doctype html>
Two column table with no need for headers
Events at St. Andrews Church Saturday 12th June 2.30pm Church Fête Wednesday 16th June 7.00pm Concert in church Saturday 19th June 10.30am to 5.00pm Flower Festival
`
对于包含三列或更多列的表格,盲人用户和有严重视力问题的人必须记住标题才能理解数据。下一个例子是我们克服这个问题的第一个方法。通过将列标题顶行中的<td>
替换为<th>
可以避免这一困难。标签<th>
描述了一个包含标题信息的单元格。
注意 为了听到屏幕阅读器朗读的表格单元格,有视觉障碍的人可以使用 Ctrl+Alt 键和右箭头键来移动这些行。
有三列或更多列的数据表
图 14-5 显示了一个更复杂的三栏表格。使用屏幕阅读器的人首先会听到最上面一行的标题,通过使用将单元格链接到标题的方法,就不需要记住标题。用户可以将光标放在位置标题下的第一个单元格中。然后,用户可以使用 Ctrl+Alt 和右箭头键沿着行移动。用户会听到下面的话:“伦敦广场,费希尔国王酒店,200 美元。”
然后,仅点击向下箭头将把用户带到下一行的开始,用户将再次使用 Ctrl+Alt 和向右箭头听到这个:“Place Colyton,Hotel Leofric,Cost 30”。
图 14-5。 三栏数据表
注意 在撰写本文时,HTML5 页面中的表格无法被大多数旧屏幕阅读器正确读取。这尤其适用于 JAWS(语音作业访问)。在屏幕阅读器赶上 HTML5 之前,您将需要使用 XHTML 1.0 页面来使盲人能够阅读您的数据表。网站中任何不包含数据表的页面都可以使用 HTML5,但是要避免使用语义标签,直到屏幕阅读器能够支持它们。在[
validator.w3.org](http://validator.w3.org)
中验证 XHTML 1.0 页面。查看第十八章关于验证 XHTML 1.0 页面的提示。
只要你使用 XHTML 文档类型,所有的表格和图 14-5 到 14-9 都可以被当前和旧版本的屏幕阅读器读取。当屏幕阅读器赶上 HTML5 时,您可以切换到 HTML5 DOCTYPE,但这会给使用旧版本 JAWS 的用户带来问题。清单 14-15 创建了一个适合屏幕阅读器的三个标题的表格。
清单 14-5。【three-col-hotels.html】创建具有三列的可访问表
`
Three column table with th headers
` `
****
****
<**th** class="right">Cost
Hotel locations and prices per night per person **Place** **Hotel** London King Fisher £200 Colyton Leofric £30 Coventry Ritz £150
`
我们的第二种方法允许使用标签<thead>
和<tbody>
创建一个稍微复杂一点的表格。同样,必须使用 XHTML 1.0,直到旧的屏幕阅读器被能够读取 HTML5 页面中的表格的新版本所取代。
数据表使用<头>和<体>
为了将数据链接到屏幕阅读器的标题,需要使用标签,如<thead>
、<tbody>
、<th>
、<tr>
和<td>
。标签<thead>
是表格的标题区域;<tbody>
是表格中包含数据的区域(见图 14-6 )。
图 14-6。 更高级的数据表
在清单 14-6 中,<thead>
和<tbody>
项以粗体显示。
清单 14-6。 创建更复杂的可访问表格(three-col-fruit.html)
`
Three column table with thead and tbody
****
****
****
****
****
****
**$1.00****
** **
****
****
****
****
The price of lemons and pears **Lemons** **Pears** **Wholesale** **$1.50** **Retail** **$2.00** **$2.50**
`
接下来,我们将看看第三种方式来创建表格,在屏幕阅读器上给出可理解的语音。单元格将使用标识(id
)链接到标题。
使用 id 将列和行链接到标题
正常情况下,屏幕阅读器读取单元格,就好像它们是<div>
标签一样;例如,如果图 14-7 中的表格被编码成一个简单的表格,没有 id 或者标题标签,下面两行将被屏幕阅读器读出为:“To Lisbon No Yes Yes。去怀特岛是是不是。”
不是很有帮助。我相信你会同意的。
相反,图 14-7 中的表格使用 id 和标题信息将单元格链接到屏幕阅读器的标题。
图 14-7。 将列和行链接到具有< id >和的标题
在下一个方法中,下面的代码片段显示了如何通过向每个<th>
元素添加一个<id>
属性,将每个数据单元格链接到其列标题和行中的第一项。首先,每个标题被赋予一个id
,将它链接到它的<th>
。例如:
`
Destination
Coach
Boat
Air
`
然后将标题id
链接到每个单元中的数据;例如:
`
To Lisbon
No
Yes
Yes
`
每个单元格都链接到它的标题,以便屏幕阅读器能够陈述这种关系。当用户沿着标题下面的行移动时,它会读取单元格的标题和内容,如下所示:“目的地是里斯本,蔻驰,不,乘船,乘飞机。”清单 14-7 包括如下片段:
清单 14-7。使用id
和headers
(four-col-travel.html) 创建可访问的表
`
Four column table with id and th
Destination and method of travel Destination Coach Boat Air To Lisbon No Yes Yes To Isle of Wight Yes Yes No
`
下面的示例使用了第四种方法,该方法使用了scope
属性而不是id
属性来将单元格数据与其标题以及行中的第一项相关联。
使用范围链接单元格和标题
对于如图 14-8 中所示的表格,id/headers 对可以替换为scope
属性。可惜用了这么一个不伦不类的词;类似于cell-linker
的东西会比scope
更好地解释它的目的。
图 14-8。 链接单元格和标题与范围
清单 14-8。【使用 Scope 创建可访问的表(four-col-scope.html)
`
Four column table using scope
` `
Local tradesmen Plumber Electrician Carpenter HandyAndy Yes No Yes BoilerMan Yes Yes No Chippendale No No Yes
`
我们现在来看第五个例子,展示图 14-7 中所示的相同表格,并使用我们之前学过的方法。
使用< th >和 id 链接单元格和标题的进一步练习
在清单 14-7 的中,我们学习了如何使用<th>
和id
以及headers
将单元格链接到表格标题。我们现在将在本地零售商表上使用此方法,作为使用范围的替代方法。该表的外观将与图 14-8 中的相同,为了方便起见,它再次显示为图 14-9 中的,以便您在研究清单时可以参考。
图 14-9。 该表与图 14-8 相同,但通过使用< th >、id 和 headers 代替 scope 实现。
清单 14-9 通过使用id
代替scope
创建了一个四列表格,其外观与图 14-8 相同。屏幕阅读器的用户将听到与其标题相关的每个数据单元格。相关的标签和属性以粗体显示。
清单 14-9。【four-col-trade-id.html】创建可访问表图 14-9 不使用范围
`
Four column table but using id instead of scope
**
**
**
**
**
**
**
**
**
**
**
**
**
**
**
Local Tradesmen Plumber Electrician Carpenter HandyAndy Yes No Yes BoilerMan Yes Yes No Chippendale No No Yes
`
提示 使用scope
、colgroup
、colspan
和rowgroup
的复杂表格的说明可以在罗杰·哈德森的网站上找到:http:// www.usability.com.au/resources
。
我们已经看到,有几种不同的方法可以帮助屏幕阅读器以有意义的方式朗读表格单元格数据;而且都管用。那么应该用哪种方法呢?
从使数据表尽可能简单开始。复杂的表格通常可以拆分成两个或多个简单的表格。简化表格后,尝试我们首先讨论的最简单的方法。如果像 JAWS 这样的屏幕阅读器能够理解它,那很好。如果没有,请尝试稍微复杂一点的方法。
下一节讨论我们如何制作适合屏幕阅读器的反馈表单。
屏幕阅读器和反馈表格
盲人和视力严重受损的人可以使用屏幕阅读器填写表格。要做到这一点,表单必须遵循以下准则:
Tables do not use table layout. Use CSS and make the order of form fields as logical as possible.
Leave enough space between the form elements to help those who have difficulty placing the cursor due to shaking hands.
No explanation is given at the end of the form. Users with screen readers and screen enlargement functions will not realize this information until they reach the end of the form.
表单布局的完整列表在这里没有显示,因为这个主题在第十一章中已经详细讨论过了。相反,下面的列表描述了单个表单元素最容易访问的格式。
Location indicates the best accessibility. Prompt is the text explaining the purpose of the field; For example, your name, email, etc.
The prompt text in the input field and text area should be in the field on the left side of or the field above . For this reason, <label>
statement must appear before <input>
statement.
对于屏幕阅读器,代码必须包括for
和id
。 <input>
元素的id
必须与<label>
元素相关联,并且对于该页面必须是唯一的。标签是for
一个可识别的输入字段。在本例中,标签为表示 和<input>
,标识为id="username"
。<label **for**="username">Your Name:</label> <input **id**="username" name="username" size="30">
表单元素会出现在屏幕上,并带有盲人用户希望找到它的提示,如下所示:
你的名字: . 验证需要'alt'
属性 Mozilla Firefox 只响应'title'
,因此两者都被使用
Because not all check boxes or radio buttons need to be selected , you cannot apply "required" or "optional" to individual check boxes or buttons. Apply the required or optional instructions to the heading of each group of boxes or buttons.
The prompt of check box and radio button must be on the right side of field , and it must be unique and clear. Compared with the previous example, the order of label and input statements must be reversed (input appears before label). This places the prompt to the right of the element. For able-bodied and disabled users, tables should always use for
and id
. This is essential for screen readers.
复选框的列表如下所示:
<input type="checkbox" **id**="chkbox1" name="coffee" value="Yes"> <label **for**="chkbox1"><strong>Coffee</strong></label>
单选按钮的代码如下所示:
<label **for**="laptop"> <input type="radio" name="computer" value="Laptop" **id**="laptop">Laptop </label> <label **for**="desktop"> <input type="radio" name="computer" value="Desktop" **id**="desktop">Desktop </label>
注意 使用单选按钮时(确保只能选择一个选项),一组单选按钮中的每个单选按钮必须具有相同的名称但不同的值。在前面的示例中,相同的名称是“计算机”,不同的值是“笔记本电脑”和“台式机”
文本区的代码片段
标签<textarea…>
用来代替<input…>.
。label
语句必须在textarea
语句之前,如下所示:
<label for="suggest"><b>Please type your content suggestion or message</b></label> <textarea **id**="suggest" name="suggestion" rows="12" cols="40"> </textarea><br><br>
Check your form in the browser to test whether the prompt text is correctly associated with the form item. When you click the prompt text, a blinking cursor will appear in the field (the form field has become the focus). Checked the check box or selected the radio button.
In the long table, the grouping information is placed in the related chunks. This is helpful to both visually impaired Internet users and users with normal vision. You can also use HTML tags <fieldset>
and <legend>
, but not all browsers can display field sets correctly. The following is a code fragment of a field set:
`
Personal details
--- Form items (eg title, name, age) ---
Contact information
--- Form items (eg address1, address2, town, postcode, phone) ---
`
Mark all date fields , especially where the separate input fields are placed in one line. The screen reader will only associate the date text label with the first text input field. It is recommended to use one field marked DD/MM/YYYY, or use three fields marked with labels, one for the three fields day, month and year.
The placeholder text in the field is no longer necessary and may be a trouble for modern screen readers.
Don't select by using the drop-down field that depends on JavaScript, because screen reader users can't access them; Although recent improvements enable the latest screen readers to handle a certain amount of JavaScript.
In chapter 11 of , a complete working example of the accessible form with anti-spam filter is provided.
html 5、XHTML5 和 CSS3 的屏幕阅读器
屏幕阅读器的创造者需要时间来调整他们的程序以适应新的建议。直到这种情况发生,直到他们的行为为人所知,网页设计师应该使用 HTML4 或 XHTML 1.0 的数据表。
导航菜单的新标签将会引起一些困惑,直到屏幕阅读器的标准被决定;因此,继续使用本章前面描述的“跳到 HTML5 中的主要内容”。
HTML5 页面中最有问题的元素是多个标题(h1
到h6)
和<hgroup>
。在这些问题解决之前,继续使用 HTML4 或 XHTML。
“跳转到 HTML5 中的主要内容”怎么样?在 HTML5 中,你可以专门标记页面上所有的“次要”内容——比如导航、品牌、版权声明——所以你不能专门标记页面上最重要的部分——内容,这有点奇怪。但是,具体标记它的目的是什么呢?如果你需要设计风格,使用<div>
。
提示 很多支持 HTML5 的浏览器都没有实现辅助功能支持。要跟踪这个问题的进展,请参见
www.webaim.org/techniques/tables/data](http://www.webaim.org/techniques/tables/data) 和 [` `www.accessibleculture.org/articles/2011/10/jaws-ie-and-headings-in-html5/
。
测试您的网站的屏幕阅读器可访问性
以下是测试网站时建议遵循的步骤。
When you record any problems you find, please ask a person with amblyopia to look at the scene.
Let a user with severe visual impairment listen to the website with a screen reader, and write down any problems you find. If possible, listen to your website with a screen reader on your own computer. The most popular screen reader is JAWS for Windows (also the most expensive). You can download the limited time trial version of JAWS from [
www.freedomscientific.com](http://www.freedomscientific.com)
, or search for the limited time version of MS Windows-Eye. For free screen readers, please visit [
www.nvda-project.org](http://www.nvda-project.org)
Submit the revised website or page to a free automatic compliance scanner (ACS), such as [
wave.webaim.org](http://wave.webaim.org)
WAVE. WAVE will provide a report detailing what your website does not meet the requirements. WAVE's report is quite easy to understand. WAVE focuses on how the screen reader responds to your page. It uses colored icons, which give useful explanations when the cursor hovers over the icons. Unfortunately, WAVE currently does not support color contrast.
AbilityNet ACS ( [www.abilitynet.org.uk/](http://www.abilitynet.org.uk/)
)报告色彩对比度。它使用 Compliance Sheriff 扫描仪,只有初始扫描是免费的。合规警长报告一开始可能会令人困惑。它包含许多描述 WCAG 建议的方框,但很少提示如何纠正不合规之处。Compliance Sheriff 不区分布局表和数据表。它错误地建议布局表格应该有标题、摘要,甚至范围。
要知道 AbilityNet 虽然是一个优秀的慈善机构,但是资金有限。它只允许对你的网站进行一次免费扫描。通过每页 170 美元(120 英镑)的首次免费扫描。请记住,自动化的可访问性测试工具不能检查内容是否以对视觉障碍者有帮助的方式编写。他们的职责是检查标记是否适合屏幕阅读器进行智能解释。使用前置内容很重要,这样每段都以结论开头。这仅仅意味着不要强迫用户去阅读一个很长的段落来了解它的内容。使用记者的“标题”技巧,在第一行或标题中讲述段落的内容。
提示 下面的屏幕阅读器和其他资源也可以下载:browse aloudwww.browsealoud.com
Thunder[
www.screenreader.net](http://www.screenreader.net)
和 WebbIE(免费)
www.webbie.org.uk`` 如果你用火狐,看看[
www.firevox.clcworld.net/about.html](http://www.firevox.clcworld.net/about.html)
Fire Vox 是 Mozilla Firefox 的屏幕阅读器。
皇家国家盲人学院为设计无障碍网站提供了一个非常有用的清单。参见[
www.rnib.org.uk/professionals/Documents/WAC_See_it_Right_standard.doc](http://www.rnib.org.uk/professionals/Documents/WAC_See_it_Right_standard.doc)
提示 参见[
www.hassellinclusion.com/2011/01/web-accessibility-myths-2011-part2/](http://www.hassellinclusion.com/2011/01/web-accessibility-myths-2011-part2/)
关于网站可访问性的启发性和争议性的想法。
总结
在本章中,您了解了残障人士,尤其是视力残障人士遇到的 web 辅助功能问题。简要参考英国法律和美国关于该主题的指导,给出了有用的网站地址以供进一步参考。这一章提到了色彩对比和字体大小对弱视者的重要性。
一份详细的清单为您提供了一种评估网站可访问性的方法。关于屏幕阅读器的部分描述了它们如何工作以及与数据表相关的问题,尤其是 HTML5。本章描述了可用于屏幕阅读器的表单元素。在设计网站时,试着记住这些提示,尤其是对盲人或弱视者有用的网站。
下一章将介绍过时的元素。您将学习如何使用 CSS 来替换它们。HTML5 引入了新的标签,增加了不推荐使用的元素的数量。工作示例将演示如何替换不推荐使用的元素。
十五、废弃那些不推荐使用的项目
术语“不推荐使用的项目”意味着万维网联盟(W3C)已经淘汰了这些项目,您不应该使用它们。包含不赞成使用的标记和属性的页面将无法通过验证,也不适合手持设备、屏幕阅读器或搜索引擎。
我有时会从另一个网站管理员那里接管网站的维护和重新设计。网站通常是旧的,充满了过时的内容。我的第一个任务是用现代的对等物替换所有被否决的项目。你可能会被要求做类似的工作。本章将帮助您更新网站,并向您展示如何避免在未来的网站中包含不推荐使用的项目。
本章包括以下几节:
List of disapproved items and their modern alternatives
Advantages of deleting deprecated items
Avoid the table layout of columns.
Avoid table layout of extensible content panel.
Use CSS instead of tables for multiple boxes with borders.
CSS3 module for multiple columns
不推荐使用的项目
在 HTML4 的早期,一些标签和属性已经被废弃了。还有一些在 HTML5 中被否决了;它们都一起列在表 15-1 和 15-2 中。当增强或更新一个网站上的页面时,你应该抓住机会用 CSS 或新的标签替换所有不推荐使用的项目。如前所述,如果有人将旧网站转让给你,过时的项目将需要替换。
表 15-2 中列出的属性必须全部被 CSS 样式替换。
替换不推荐使用的项目
当不推荐使用的项目被 CSS 替换时,HTML 标记的数量将会减少。然而,CSS 表将包含更多的标记。这带来了净节省,因为 CSS 表是一个单一的页面,但许多链接到样式表的 HTML 页面将具有较少的标记。
我通常在像图 15-1 这样的长页面上放置一个向上箭头。单击箭头会使光标跳到页面顶部。
图 15-1。 一个向上箭头及其文本
用于向上箭头的旧 HTML 标记将包含此处以粗体显示的不推荐使用的项目:
<p **align="center"**><b><**font size="3" face="Times New Roman"**>Go to top of page**</font>**</b> <a href="#top"> <img **border="0"** title="Go to top of page" src="img/bluearrow.gif" ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/prac-h5-proj/img/U002.jpg) **align="middle"** alt="Go to top of page" width="52" height="44"></a> </p>
移除不推荐使用的项目并使用 CSS 样式表后,标记变为:
<p><b>Go to top of page</b> <a href="#top"> <img class="up-arrow" title="Go to top of page" src="img/bluearrow.gif" ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/prac-h5-proj/img/U002.jpg) alt="Go to top of page" width="52" height="44"></a> </p>
当与图像一起使用时,宽度和高度标签在 HTML 标记中是可接受的。字体系列细节和类up-arrow
将在 CSS 样式表中定义如下:
.up-arrow { font-family: "times new roman"; font-size:100%; font-weight:bold; ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/prac-h5-proj/img/U002.jpg) text-align:center; border:0; vertical-align:middle; }
我使用一个class
而不是一个id
,因为在很长的页面上我需要不止一个向上箭头。
标记从 241 个字符减少到 172 个字符,标记现在将生效。在网站中,这种节省将在包含向上箭头的每个页面中实现。
当侧栏 中有多个上箭头时,创建一个名为class="up-arrow-more"
的额外的上箭头类。
在 CSS 样式表中,附加的类如下所示:
.up-arrow-more { font-family:"times new roman"; font-size:100%; font-weight:bold; ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/prac-h5-proj/img/U002.jpg) text-align:center; border:0; vertical-align:middle; **margin-top:400px;** }
页面上的附加箭头被赋予类别up-arrow-more
。margin-top:400px
强制向上箭头垂直分开 400 像素的距离。这避免了在每个向上箭头之间插入大量换行符<br>
或<p>
标签的需要。
锚
在早期,页面顶部的着陆点由 HTML 4 标记设置为
<a name="top"></a>
属性name
现在应该被替换为id
。代码变成了<a id="top"></a>
。这是现在所有 HTML 版本的通用做法。
同样的建议也适用于其他页面上的锚;例如,要从一个页面链接到另一个页面上的特定位置,链接可能是
<a href="page3.html#colyton">Click for more information about Colyton</a>
当点击时,链接会把用户带到page3.html
上的一个地方,标签为
<a id="colyton"></a>
验证: 包含不赞成使用的项目的页面将不会被验证。手持设备和搜索引擎可能会受到无法验证的页面的阻碍,因为它们包含不推荐使用的项目。
HTML4 中不赞成使用 <嵌入> 标签,它将无法验证。然而,它被广泛使用(尤其是在视频中),以至于它在 HTML5 中得到了复兴。它的回归受到热烈欢迎。
粗体和斜体文本
关于弃用,经常会出现以下问题:现在是否应该用<strong></strong>
代替<b></b>
,用<em></em>
代替<i></i>
?
标签<b></b>
没有被弃用,标签<strong></strong>
给出了类似的结果,但是用户的浏览器设置可以覆盖它。CSS 的对等词是b { font-weight:bold; }
。
标签<i></i>
没有被否决,标签<em> </em>
给出了类似的结果,但是用户的浏览器设置可以覆盖它。等价的 CSS 代码是i {font-style:italic;}
。
当我忙的时候,我会交替使用这两个词,因为我发现这两个词之间的区别太微妙了,根本不用担心。
一般来说,使用<i>
将一个单词或短语变为斜体,但不改变其强调或语气;例如:“不要错过今晚电视 123 频道的堕落肥皂剧
用<em>
来强调一个单词或短语;例如:“你是说实际上 喜欢*那个节目?”
数据表好,布局表差
表格应该只用于显示数据。早期的网站使用表格来进行页面布局,现在许多网站仍在使用表格。几年前,万维网联盟(W3C)就不赞成页面布局使用表格。移动设备肯定不喜欢表格布局。表格布局导致页面臃肿。表格布局的 HTML 可能比 CSS 布局大三到四倍。
一旦掌握,CSS 布局比表格布局有更大的力量和灵活性。对于使用屏幕阅读器、语音输出浏览器、盲文浏览器和文本浏览器的人来说,表格布局可能是个大问题(见第十四章)。由数据行和列组成的可接受的表格,如表 15-3 。
注 特殊规则适用于帮助残疾人的数据表。这些在第十四章中有描述。
多列无表格
基于 CSS2 的多列设计非常容易,不需要使用表格。(本章这一节可以看作是对第十二章多栏节的补充。)CSS3 可以创建文本列(参见本章后面的“新的 CSS3 列模块”),但是目前很少有浏览器支持这一功能。
一个基本的三栏页面,各栏颜色相同
在这些例子中没有使用语义标签,因此 IE 7 和 IE 8 可以显示结果,而不必求助于添加 JavaScript 的复杂性。如果您希望使用语义标签,请务必添加 JavaScript 片段,并更改 CSS 中的显示指令,如第一章所述。
图 15-2 显示了 CSS 创建的三列。
图 15-2 。一个有五个部分的三栏页面
这是通过创建五个部分来实现的:页眉和页脚各一个,每列一个。纯粹主义者会对我使用的表示标记感到震惊。设计师不鼓励使用像leftcol
和rightcol
这样的标识符;标识符应该指示内容而不是位置。在这个和随后的例子中,为了清楚起见,使用了表示性的词语leftcol
、rightcol
和midcol
。在真实的网页中,它们可以被类似于menu-col
、advert-col
和main-content
的东西所取代。
清单 15-2a 使用 CSS 表示产生三列,而不是使用一个废弃的表格布局。
清单 15-2a。【在不使用表格的情况下创建三列(three-col-no-tables.html)
`<!doctype html>
Three columns without tables
*meta details go here*
Footer
`
CSS 布局在清单 15-2b 中提供。
清单 15-2b。 图 15-2 (三列无表. css) 布局的 CSS 样式表
`body {background:white; font-family:arial; font-size:medium; color:black;
margin:auto; padding:7px;
}
container { width:960px; border:1px black solid; margin:auto; text-align:center;
margin-top:0; background:#a5f400;
}
hdr {width:920px; height:20px; margin:15px auto 15px auto; background:yellow;
color:black; border:1px black solid;
}
/THE MAIN PANEL CONTAINS THE THREE COLUMNS /
mainpanel {margin:auto; background:#d2ff81; text-align:center; width:920px;
height:140px; border:1px black solid;
}
leftcol {float:left; width :115px; height: 140px; border-right:1px black solid;
}
rightcol { float:right; width:92px; border-left:1px black solid; height:140px;
}
SET MARGINS FOR MID COLUMN. THIS SITS BETWEEN THE FAR LEFT AND FAR RIGHT COLUMNS /
midcol { margin-left:120px; margin-right:105px; text-align:center; border:1px black solid;
}
ftr {width:920px; margin:auto; text-align:center; clear:both; background: #a5f400;
border: 1px black solid;
}`
一个基本的四列页面,各列颜色相同
图 15-3 显示了 CSS 标记产生的四列显示。
图 15-3。 不使用表格的四列
创建四列只需使用<div>
将中间的一列拆分成两个子列。清单 15-3a 和 15-3b 的将它们标识为subleft
和subright
。
清单 15-3。【four-col-no-tables.html】创建不带表格的四列布局
`<!doctype html>
` `Four columns with no tables
Header
Far left column
Far right column
Left sub column
Right sub column
Footer
`
图 15-3 的 CSS 布局由清单 15-3b 提供。
清单 15-3b。 提供四列的 CSS 布局(四列无表. css)
`body {background:white; font-family:arial; font-size:medium; color:black; margin:auto;
padding:7px;
}
container { width:960px; border:1px black solid; margin:auto; text-align:center;
margin-top:0; background:#a5f400;
}
hdr {width:920px; height:20px; margin:15px auto 15px auto; background:yellow;
color:black; border:1px black solid;
}
mainpanel {margin:auto; background:#d2ff81; text-align:center; width:920px;
height:140px; border:1px black solid;
}
leftcol {float:left; width :115px; height: 140px; border-right:1px black solid;
}
rightcol { float:right; width:92px; border-left:1px black solid; height:140px;
}
midcol { margin-left:120px; margin-right:105px; text-align:center;
}
#subleft { float:left; width: 49%; height: 140px; border-right:1px black solid;
}
#subright { float: right; width:49%; height: 140px; border:0;
}
ftr {width:920px; margin:auto; text-align:center; clear:both; background: #a5f400;
border: 1px black solid;
}`
背景颜色不同的四列
图 15-4 显示了四根不同颜色的柱子。
图 15-4。 四列三色
如果你需要不同颜色的柱子,设计会变得更加棘手,如图 15-4 。就我个人而言,我更喜欢相同的颜色,它看起来很有品位,将注意力集中在主题上,给设计师带来的问题更少。但是,如果您需要不同颜色的列,下面将介绍最简单的方法。(本章末尾提供了其他方法的来源。)
清单 15-4a 提供了四列页面上的内容。
清单 15-4a。【colour-columns1.html】用三种颜色创建四列内容
`<!doctype html>
Colour columns
*meta details go here*
Header
Far left column
some content
some content
some content
Far right column
some content
` `
Coloured columns
Mid left column
some content
some content
some content
some content
some content
some content
Mid right column
some content
Some content
some content
**
**
`
清单 15-4b 中的是显示彩色列的样式表,如图 15-4 中的所示。
清单 15-4b。 彩色列的 CSS 样式表(style-colourcols1.css)
`/SETTINGS FOR MAXIMUM CONFORMITY BETWEEN BROWSERS /
html, body, h1, h2, h3, h4, h5, h6, p, ol, ul, li, form, fieldset, blockquote {
padding: 0; margin: 0; font-size: 100%; font-weight: normal;
}
img { border:0;
}
body { background:#BBD999; font-family:arial; font-size:120%; color:#4B6113;
margin:auto; padding:7px;
}
container { width:900px; border: 10px white solid; margin:auto; text-align:center;
margin-top:0; background-color:#CEE1BA; color:#4B6113;
}
hdr { padding-top:18px; height:141px; width:100%; margin:auto;
background-image:url('img/banner.jpg'); background-repeat:no-repeat;
background-position:65;
}
hdr h1 { font-family: "times new roman"; text-align:center; color: white;
font-weight:bold; font-size: 300%; margin-top:50px;
}
leftcol { float:left; width :130px; display:inline; background-color:#ACC;
}
rightcol { float:right; width:92px; text-align:center;
background:url(img/yellow-square.gif) repeat-y right top;
}
/SET MARGINS ON MID COLUMN /
midcol { margin-left:140px; margin-right:105px; text-align:center;
}
/SET COLUMN WIDTHS FOR CONTENT. THESE SIT WITHIN THE MIDCOL /
mid-left-col {width:47%; float:left; text-align:left;
}
mid-right-col {width:47%; float:right; text-align:left;
}
/ENSURE DIVS AUTOMATICALLY STRETCH VERTICALLY TO ACCOMMODATE VARIOUS AMOUNTS OF CONTENT /
br.clear { clear:both;
}
/SET FOOTER TO CLEAR PRECEDING COLUMNS /
ftr {text-align:center; clear:both;
}`
没有桌子的可延伸的彩色中央嵌板
对于下一个例子,我要感谢 Diana Board 女士允许我使用我为她的网站设计的主页。
以下所有示例都不使用表格。图 15-5 显示了一个四列页面。带有白色边框的浅绿色内容面板需要调整,使其向下扩展以匹配内容的数量。
图 15-5。 未被削弱的页面
图 15-6 显示了向下扩展的内容面板,没有采用表格布局。
图 15-6。 被调整的页面
本主页图 15-6 中使用的两张照片是步行英国([www.walkingbritain.co.uk](http://www.walkingbritain.co.uk)
)的善意许可。
清单 15-6 中粗体的项目是下拉框架的调整。在清单 15-6 中,许多内容被省略了,因为它们与要表达的观点无关。你可以从合作网站 http://www.apress.com 下载完整的清单。
清单 15-6。 为图 15-6【tweaked.html】 所示的页面创建结构
`<!doctype html>
Tweaked page
*meta details go here*
Lower Farm B&B, Glastonbury, Somerset
*The horizontal menu buttons go here*
*Web design details and copyright notices go here*
Bed and Breakfast Accommodation
![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/prac-h5-proj/img/U002.jpg)
Glastonbury Tor
Lower Farm, Lottisham is a working farm offering bed and breakfast ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/prac-h5-proj/img/U002.jpg)
accommodation in an ideal location for touring the many attractions of ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/prac-h5-proj/img/U002.jpg)
Somerset. Only 3 miles from the Royal Bath and West showground
Situated in a new barn conversion, the spacious rooms retain traditional ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/prac-h5-proj/img/U002.jpg)
charm together with quality furnishings and decor
Available for single nights or longer stays. Bed and
breakfast accommodation with flexibility, privacy and excellent value for ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/prac-h5-proj/img/U002.jpg)
money
AA 4 star award for B&B. Visit Britain 4 star award for farmhouse ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/prac-h5-proj/img/U002.jpg)
accommodation
**
**
*Footer links and photograph permissions go here*
`
向下拉动面板和边框的方法是放置在 CSS 样式表中的一个附加项。添加的代码如下:
/*ENSURE DIVS AUTOMATICALLY STRETCH VERTICALLY TO ACCOMMODATE VARIOUS AMOUNTS OF CONTENT*/ br.clear { clear:both; }
现在我们来看看包含图像和文本的盒子。这些传统上以表格的形式呈现。但是因为表格已经过时,下一节将向您展示如何通过使用 CSS 样式表来取消表格。
CSS 框和边框
在过去,网页设计师会用一个表格来构建图 15-7 。既然表格已经过时,那么必须使用 CSS 来构造这些框。图 15-7 展示了一组完全通过 CSS 构建的盒子。
图 15-7。 无表格的方框和边框
肖像画家安·罗·琼斯好心地允许我使用我为她设计的网站上的物品。这些用于图 15-7 中的。您可以在[www.annroejones-artist.co.uk](http://www.annroejones-artist.co.uk)
查看她的网站。
为了清楚起见,这里使用了内部样式。这些盒子在它们自己的<div>
中定义,每个盒子都有一个类mainpanel
。面板由代码<br class="clear">
分开。
清单 15-7。【borders-boxes.html】为一组盒子创建结构和 CSS 表示
`<!doctype html>
Borders and boxes ` `
*meta details go here*
Borders and Boxes
****
Ann paints under her professional name of Ann L Roe (Jones)
She is an academician and trustee of the South West Academy of Fine ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/prac-h5-proj/img/U002.jpg)
and Applied Arts.
Ann studied painting, art and design in France, London and Brighton.
Ann's portrait of 'Nico with icons' won her the prestigious Baker Prize ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/prac-h5-proj/img/U002.jpg)
for Painting in the South West Academy Open Exhibition.
Ann lives in Colyton Devon, UK.
She paints landscapes and still life, but her particular interest is portrait ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/prac-h5-proj/img/U002.jpg)
painting.
**
**
**
**
****
Ann's portrait of Sir Patrick Moore FRS
The astronomer ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/prac-h5-proj/img/U002.jpg)
Sir Patrick Moore FRS,
still presents his Sky at Night program on BBC television (channels 1,2 and 4).
` `
Ann painted a separate portrait of Sir Patrick Moore's ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/prac-h5-proj/img/U002.jpg)
beloved cat (see inset on the right)
**
**
**
**
****
Ann's portrait of the three Chelsea Pensioners ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/prac-h5-proj/img/U002.jpg)
- Bob, Michael and Fred - The painting now has a permanent home in the Infirmary ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/prac-h5-proj/img/U002.jpg)
Building of the Royal Hospital Chelsea in London.
Unveiled in March 2010 by ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/prac-h5-proj/img/U002.jpg)
General the Lord Walker GCB CMG CBE DL, the painting can be seen by the public in ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/prac-h5-proj/img/U002.jpg)
the Foyer.
**
**
**
**
The next section discusses the new CSS3 module for creating multiple columns.`
用于列的新 CSS3 模块
现在布局表格已经过时了,设计者必须放弃传统的显示文本列的方式,而使用多单元格的表格来显示不可见的边框。在本章的前面,我描述了如何使用 CSS 来实现包含文本的多列。
CSS3 有新的多栏布局模块,这可能是所有推荐模块中最令人兴奋的节省时间的模块。当它被完全采用时,我们可能会看到那些文本在屏幕上传播的可怕网站的终结。它肯定会成为列的表格布局的死穴。
可以定义列的宽度和数量。您所期望的新样式关键字是,column-width
和column-count
。可以使用称为forcolumn-gap
的宽度在列之间创建一个空间。可以使用column-rule
创建列之间的垂直线。内容会像在出版软件中一样从一列流到另一列。
在撰写本文时,只有 Mozilla Firefox、Chrome 和 Safari 支持新的多栏模块。然而,Firefox、Chrome 和 Safari 通过自己独特的方式来处理这个问题:Firefox 用-moz-
,Safari 和 Chrome 用-webkit-
。可悲的是,IE 7、IE 8 和 IE 9(以及撰写本文时的 Opera)忽略了 CSS3 列样式。所以,CSS3 多列可能在 IE 7、IE 8、IE 9 灭绝之前的几年内都不会被网页设计师使用。
注意 CSS3 不依赖于 HTML 版本。CSS3 增强功能可以在 HTML4、XHTML 和 HTML5 中工作,但前提是浏览器支持它们。Firefox、Safari 和 Chrome 支持多列。微软在 2010 年 9 月声明,IE 9 将不支持 CSS3 多列。
图 15-8 和 15-9 显示了 CSS3 多列在不同浏览器中的显示方式。
图 15-8。 CSS3 多栏标记无法在 Internet Explorer 6、7、8、9 和 Opera 中显示
图 15-9。【CSS3 多栏如何在 Mozilla Firefox、Safari 和 Chrome 中显示
在清单 15-8 中,粗体代码建立了支持浏览器显示这两个图中的列的方式。
清单 15-8。【css3-columns.html】使用 CSS3 可以在栏中显示的内容模板
`<!doctype html>
CSS3 mutiple columns
*meta details go here*
` `Mary had a little lamb Mary had a little lamb Mary had a little lamb Mary had a little lamb
Mary had a little lamb Mary had a little lamb Mary had a little lamb Mary had a little lamb
Mary had a little lamb Mary had a little lamb Mary had a little lamb Mary had a little lamb
Mary had a little lamb Mary had a little lamb Mary had a little lamb Mary had a little lamb
`
CSS3 可以提供竖线,也就是将一个项目与另一个项目分开的线。图 15-10 显示 CSS3 可以提供段落之间的划分规则。
图 15-10。【CSS3 多栏如何显示 Mozilla Firefox、Safari 和 Chrome 中的规则
在撰写本文时,垂直规则要求 Mozilla Firefox 的 hack -moz-
和 Safari 的-webkit-
。在下面的代码片段中,规则的新 CSS3 列模块关键字以粗体显示。
#content { -moz-column-count: 3; -moz-column-gap: 1em; **-moz-column-rule: 1px solid black;** -webkit-column-count: 3; -webkit-column-gap: 1em; **-webkit-column-rule: 1px solid black;** }
清单 15-10。【css3-3col-rules.html 在 CSS3 列之间引入垂直规则
`<!doctype html>
CSS3 mutiple columns
Mary had a little lamb Mary had a little lamb Mary had a little lamb Mary had a little lamb
Mary had a little lamb Mary had a little lamb Mary had a little lamb Mary had a little lamb` `Mary had a little lamb Mary had a little lamb Mary had a little lamb Mary had a little lamb
Mary had a little lamb Mary had a little lamb Mary had a little lamb Mary had a little lamb
`
当浏览器窗口水平收缩时,三列的宽度会相应减少。它们还向下延伸以容纳所有内容。如果内容容器具有固定的宽度,则当浏览器窗口收缩时,列保持相同的宽度。
有一天,我们将能够省略黑客攻击,只使用以下 CSS3:
#content { column-count: 3; column-gap: 1em; column-rule: 1px solid black; }
当浏览器最终实现下一批特性时,多列模块将非常灵活;例如,下一段 CSS 标记将固定列的宽度,并将调整列的数量以适应内容空间。列宽标记将列宽设置为至少 15 em 宽。确切的列数将取决于可用的内容宽度。
#content { column-width: 15em; }
在下一段 CSS3 标记中,列数将是固定的,但是每列的宽度将会改变以适应内容区域的宽度。
#content { column-count: 3; }
可以使列的长度相等,如下所示:
#content { column-fill: balance; }
可以制作一个跨越各列的标题,如下所示:
h2 { column-span: all; }
列规则(列之间的垂直线)可以省略,也可以有各种宽度和颜色,如下所示:
#content {column-rule: thin solid blue; }
许多其他多栏功能正在模块的管道中,但尚未完成;在撰写本文时,它们也不能在浏览器中使用。它们包括以下内容:
column-space-distribution, break-before:column; break-inside:avoid-column; and break-after:avoid-column;
提示 参见 A List Apart 网站[www.alistapart.com/articles/css3multicolumn/](http://www.alistapart.com/articles/css3multicolumn/)
了解新的 CSS3 多栏模块的全面处理。参见
[
developer.mozilla.org/en/docs/CSS3_Columns](http://developer.mozilla.org/en/docs/CSS3_Columns)
和[www.w3.org/TR/css3-multicol/](http://www.w3.org/TR/css3-multicol/)
。
总结
本章提供了一个不推荐使用的标签和属性的列表,这些是您在设计或重新设计网站时应该避免的。向上箭头装置用于展示转储废弃项目的优势。因为表格已经过时,所以描述了几种用 CSS 样式替换它们的解决方案。本章给出了使用 CSS 布局时可能出现的问题的解决方案。描述了一种构造一系列没有表格的有边框的盒子的方法。传统上,带有不可见边框的表格用于显示文本列;本章给出了使用 CSS2 替换表格的说明,然后演示了新的 CSS3 多栏解决方案。
在下一章中,你将学习搜索引擎是如何工作的,并且你将被介绍优化你的网站的方法,这样它们将在搜索引擎的结果中出现在更高的位置。*
十六、搜索引擎优化
当你在 Bing,Yahoo!,还是谷歌?你可以增加出现在最初几页的机会,但是如果不为一个有利的位置付费,就不能保证早出现。
本章向您展示如何提高您的评分,以及应该避免什么。您将获得信息,帮助您了解搜索引擎如何选择与用户的搜索词(关键字)相对应的网页。
让你的网站出现在搜索引擎的页面上是免费广告的一种形式。然而,其他方式的广告你的网站不应该被忽视。这一章包括了一些建议,告诉你如何通过其他方式来宣告你的网站的存在,从而补充搜索引擎的工作。
概述
搜索引擎优化(SEO)可能会令人沮丧。你的一个网站可能不会出现在搜索列表中,即使它已经过很好的优化。在搜索引擎的首页查看某些网站的源标记;你可能会发现有些并没有很好的优化。为什么你优化得很好的站点没有被列出来,而非优化的站点却被列出来了?只有搜索引擎知道为什么。
搜索结果似乎不一致。我的一个网站在谷歌的第二页底部,在必应的第二页第一。两周后,我的网站从谷歌上消失了,但仍在必应上的同一个位置。一个月后,它重新出现在谷歌第三页的底部。为什么呢?我想不出合理的解释。
SEO 与其说是一个科学的过程,不如说是一门神秘的艺术。这不应该阻止网站设计者尽最大努力优化网站。我的网站在雅虎的第一页排得很靠前!,但只在谷歌的第七页。这是因为雅虎!专注于关键词和网站优化,而谷歌更依赖于网站外部链接的数量(网站的受欢迎程度似乎比它对搜索者是否有用对谷歌更重要)。
同样令人沮丧的是,SEs 需要三到五个月的时间来索引一个优化良好的新网站。令人惊讶?不会,因为 SEs 使用的机器人要爬遍 2.4 亿个现有网站才能更新。除此之外,他们每年还会抓取近 5000 万个新的。每年约有 4000 万人变得不活跃,可能会从阿瑟指数中删除。
时间是一个重要的方面。虽然 SEs 可能会在三到五个月内索引一个新的域名,但这并不意味着它会在搜索结果中有一个好的排名。有时候,在你的网站靠近搜索结果的第一页之前,还需要五到六个月的时间。一些富裕的公司会购买一个完善的,高排名的域名,而不是从头开始一个新的域名。不太富裕的人应该立即上传一些基本内容,而不是等到网站完成后再上传。这让 SEs 对其进行索引并开始“试用期”,而网站的其余部分正在开发中,
一个优化良好的网站相当于在你的街道上有一个名牌,在你的房子上有一个门牌。在极少数情况下,邮递员无法投递你的邮件,但如果没有门牌号和街道名称,他投递邮件的能力就会大大降低。如果没有优化,SEs 索引你的网站并为搜索者列出的机会就会大大减少。
网络爬虫是 SEs 用来搜索每个网站,寻找关键词和关键短语的机器人。然后可以对网站进行索引,以便用户可以搜索拥有这些关键字的网站。大多数网站主机都有流量监控系统(有时称为 web stats)。您可以使用它来查看网站被 SEs 抓取的时间和频率。
提示 要获得一流的资源,试试彼得·肯特的傻瓜搜索引擎优化 (威利,2010)。彼得描述的技术可读性很强,一步一步的指导非常清晰,易于实践。它包含额外的点击付费等项目,以及大量非常有用的资源。要获得有用的互联网资源,请访问 Phil Craven 的网站,[
www.webworkshop.net](http://www.webworkshop.net)
还可以在[
www.seomoz.org/term-extractor](http://www.seomoz.org/term-extractor)
尝试 SEOmoz 的术语提取器。这个工具从任何特定的网页中提取关键字,并模仿搜索引擎蜘蛛。
当心虚假的承诺
警告你的客户,在网站上线后,他们会在短时间内被不道德的人发来的邮件纠缠。即使客户的电子邮件地址被加密或使用了安全的联系方式,骗子也可以通过尝试info@yourwebaddress.co.uk
等地址做出合理的猜测。然后,他们试图说服你的客户为网站的优化付费。给你的客户一份下面的警告:
诈骗警告: 在推出一个网站后,垃圾邮件发送者会联系网站所有者,提出改善他们的搜索引擎优化。如果一个拥有者被这个欺骗了,她将会付很多钱,而垃圾邮件发送者将会什么都不做。事实上,垃圾邮件发送者也无能为力 。一些可怕的人甚至声称为谷歌、雅虎工作。、或必应,或者他们声称在那些组织内部有联系人。一个特别讨厌的样本用电话联系受害者。他说,他为谷歌工作,如果受害者拒绝使用他的“服务”,他将从谷歌的索引中删除该网站。
真正的 SE 优化器确实存在,但他们不会使用垃圾邮件,也不会使用通用的电子邮件地址,如@hotmail
或@gmail
。他们有一个完善的服务,可以检查其真实性。但是为什么要花钱买一份你可以在本章的帮助下自己完成的工作呢?
页面排名和受欢迎程度
搜索引擎对他们的搜索标准和网页排名方法非常保密。SEs 可能偶尔会修改他们的规则,但一般原则将保持不变。
页面排名
我发现网页排名对网站在搜索结果列表中的位置没有很大的影响。我有网页排名很差的网站在搜索结果中排名靠前,反之亦然。因此,我忽略页面排名,专注于网页在结果列表中的位置。然而,尽管最近网页排名的重要性有所下降,你可能会从网页排名的监控中获得一些好处。如果你想知道更多关于网页排名的信息,请看 Phil Craven 在[
www.webworkshop.net/pagerank.html](http://www.webworkshop.net/pagerank.html)
的详细解释
当与搜索引擎相关时,可以从两个方面来考虑流行度 这个词。它可以指网站本身的受欢迎程度,也可以指网站主题(即其关键词)的受欢迎程度。
知名度和外部链接
谷歌和必应非常重视网站的受欢迎程度,他们将其等同于网站的有用性。他们认为人们不会链接到一个无用的网站。受欢迎程度与一个网站的点击率无关。必应,尤其是谷歌,主要通过检测指向你网站的外部链接的数量来决定受欢迎程度。雅虎!另一方面,会检测网站中关键字的数量和内部链接页面的数量,给出与搜索栏中键入的关键字更相关的结果。
我有经常出现在雅虎首页的网页!因为网页优化得很好。然而,使用相同的搜索词,谷歌和必应对它们的评价并不高,只是因为指向它们的外部链接较少。流行网站上指向你的网站的链接表明你的网站一定也很受欢迎,所以你的网站的排名会上升。这些外部链接有很强的作用,但不幸的是它们不在你的直接控制之下。雅虎!依靠组织良好的内部联系。这些将首先被讨论,因为它们直接在你的控制之下。幸运的是,关键词内容和组织良好的内部链接也得到必应和谷歌的认可。
主题的受欢迎程度(及其关键词)
如果一个主题很受欢迎,你将与数百万其他网页竞争搜索结果列表中的位置。如果你是唯一一家为大象生产抗血栓袜子的公司,你会在第一页的搜索结果中排名第一。因此,如果网站所有者能够专注于他的推广的一些独特方面,这将有助于搜索引擎排名。例如,数以百万计的古董商在 SE 结果中竞争一个位置。如果经销商专注于一种特殊类型的古董,这将大大缩小搜索范围,提高网站的排名。
网站设计者需要知道搜索引擎寻找什么,以确保网站的关键字和链接得到优化。接下来的部分将列出搜索引擎寻找的内容。然后讨论实现每个主题的最佳方式。
搜索引擎寻找什么
搜索引擎查找以下内容:
And phrases (especially in the <title>
and <body>
parts of a page
Well-designed internal links to all pages on the website
External links to other websites of your website
关键词和短语
搜索相关网站的用户使用关键字和关键短语。例如,如果用户对计算机有问题,他可能会输入关键词“计算机问题”。SEs 按照以下顺序对关键词的重要性进行评级:
<title>
Keywords/phrases in <body></body>
Keywords/phrases in <head></head>
(not so important to Google)
Keywords/phrases that appear earlier in the tag
Keywords/phrases h1, h2, h3
in the title, etc. )
Bold keywords/phrases
第一个标签的内容
<title></title>
是一个非常重要的标签,必须紧跟在<head>
标签之后,以获得最大效果。
将你的公司或网站名称放在标题或 meta 标签中是没有多大效果的,除非该公司相当出名。如果你是 Tesco 或 Walmart,那么你必须将公司名称放在<title>
和"description"
meta 标签中,因为用户搜索的是知名的名称。不要在标题或 meta 标签中插入“欢迎使用”这样的字眼,浪费宝贵的关键词空间;没人搜索 欢迎或者 欢迎来到。
一些 SEO 专家指出,SEs 索引标题和元描述,但他们忽略了关键字元标签。这种观点对谷歌来说可能仍然是正确的,因为谷歌在其搜索引擎提示中省略了对关键字 meta 标签的任何引用。然而,必应和雅虎!两人都说关键词元标签对他们很重要。我们该如何理解这些相互矛盾的信息呢?
Google 开始忽略 keywords meta 标签,因为设计者滥用它,用许多关键字填充它。其他搜索引擎优化大师说,系统工程师只阅读有限数量的元标签词。我们不知道答案,因为 se 对他们的方法极其保密。
我把关键字放在关键字元标签中,因为必应和雅虎!假设他们注意到了这些问题,那么至少有一点点可能性,谷歌可能会在未来的某个时候再次关注这些问题。
同时,确保你的<title>
标签发挥最大作用,因为它至关重要。给出一个好的相关的"description"
元标签,包含关键短语或关键词,因为这总是显示在结果列表上。尽管围绕着"keywords"
meta 标签存在争议,你仍然应该在你的关键词中使用它。
提示 正文标题,如<h1> </h1>
、<h2> </h2>
等,是放置关键字和关键短语的理想位置。搜索引擎对标题的内容给予很高的评价。
下一节将帮助你选择合适的关键词和关键短语。
提示 将你的主 关键词或关键短语放在任何关键词列表的第一位。以下有用的网站会帮你选择关键词:Google 关键词工具箱[
googlekeywordtool.com](http://googlekeywordtool.com)
;点击第一项,Google 关键词工具)和 Google Adwords 关键词工具([
adwords.google.com/select/](https://adwords.google.com/select/)
KeywordToolExternal
)。谷歌网站管理员工具是一个必须看到的学习更多关于搜索引擎优化。
选择关键词和短语
想象你是在你的网站上搜索信息的人。您会在搜索栏中键入什么?询问其他人他们会输入什么。选择关键词和短语并不那么容易,但它会让你开始思考。
假设在一次西藏之行中,史密斯先生相当愚蠢地开着车窗四处转悠,结果他患上了疼痛的肩周炎。幸运的是,一位西藏僧侣用腐臭的牦牛脂肪快速按摩治好了史密斯先生的冻疮。史密斯先生建立了一个网站来销售这种疗法。他的企业注册为史密斯健康产品有限公司。
他可能会选择“腐臭的牦牛脂肪”作为关键词。这是行不通的,因为那时他是西藏以外唯一知道酸败的牦牛脂肪可以治疗肩周炎的人。没有人会想到输入这个关键词(尽管一些有笔记本电脑的藏人可能会)。
在未来的某一天,史密斯先生将能够使用关键短语“腐臭的牦牛脂肪”以及他目前的短语。但在此之前,腐臭牦牛脂肪疗法必须广为人知,并出现在无数的杂志和电视节目中。同时,他应该使用关注问题而不是产品的短语。
那么他应该选择什么呢?史密斯的保健品怎么样?这将是完全无用的;除了他的家人,几乎没有人知道他的新企业。知道他公司名称和网址的明智的人会把网址输入正确的地方;也就是浏览器的地址栏。如果乔·布洛格斯有肩周炎,他怎么会知道一家叫史密斯的公司有治疗方法呢?
乔·布洛格斯很明智,可能会在痛肩 、痛肩 、肩周炎 、痛肩 或僵肩 上搜索。
史密斯先生将这四个关键词输入搜索引擎,他会找到以下内容:
Shoulder pain: 1.1 million search results
Shoulder: 288,000 search results
Stiff shoulder: 137,000 search results
Shoulder pain: 51,000 search results
这表明疼痛的肩膀 被网站使用的次数是短语冻结的肩膀的四倍。 这些数字并不表示包含这些短语的网站的数量;它告诉你有多少网页包含该关键字。大量的这些搜索结果会突出这样一个事实,即关键短语出现在每个网站的许多页面上。许多结果将是重复的或三次的。有些结果可能不太相关;这对于目前的谷歌来说尤其如此,因为谷歌过于强调可能相关也可能不相关的外部链接。
利用谷歌关键词工具和微软 Excel,史密斯先生制作了表 16-1 。
在这个表格中,史密斯先生会在标签之间使用一些最流行的关键词,尤其是在标题和整个页面中。他也会遵守接下来两节的规则。
对过度重复的限制
不要在标题标签或元标签中重复一个短语(或复数短语);例如,不要做以下事情:
<title>shoulder pain, shoulder pain, shoulder pain, shoulder pain</title> <meta name="description" content="shoulder pain, shoulder pain, shoulder pain, ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/prac-h5-proj/img/U002.jpg) shoulder pain, shoulder pain"> <meta name="keywords" content="shoulder pain, shoulder pain, shoulder pain, ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/prac-h5-proj/img/U002.jpg) shoulder pain, shoulder pain">
你可以把同一个单词放在 title 标签的不同短语中两次。
<title> shoulder pain treatment, pain shoulder, frozen joint, cure joint injuries</title>
在描述元标签中,同一个单词在不同的短语中最多可以出现四次。
<meta name="description" content="shoulder pain cure, pain shoulder, frozen shoulder ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/prac-h5-proj/img/U002.jpg) treatment, shoulder injuries">
在 keywords meta 标签中,您可以将同一个单词放在不同的短语中四次。
<meta name="keywords" content="shoulder pain treatment, pain shoulder treatment, ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/prac-h5-proj/img/U002.jpg) frozen shoulder cure, cure shoulder injuries">
关键短语的数量受限于对重复的限制。不幸的是,如果史密斯先生查阅词典,他会发现没有其他流行的肩的同义词;因此,Smith 先生只能在标题中重复单词 should 两次,在每个 meta 标签中重复四次。如果他在销售或出租自行车,那么可以在关键字 meta 标签中使用多个同义词,而不会出现不必要的重复,例如 bicycle、bike、pushbike 和 cycle。
对字符或字数的限制
限制字符或单词的数量是因为网页设计者滥用 meta 标签和<body>
部分,用大量的关键字填充它们。限制如下:
<title> </title>
标签之间的
<meta name="description"
:
<meta name="keywords"
你可以在页面的<body>
部分放很多关键词,并且可以经常重复。但是不要过度。大多数专家说,正文关键词不应该超过页面总字数的 10%到 15%。
有些设计师认为头节的关键词就足够了。这不是真的。标题中的关键词/短语是最重要的,但是正文部分中的关键词比元标签中的 关键词评价更高。为了获得最佳效果,关键字应该出现在标题标签、元标签和正文中。
关键字/短语必须出现在 <body>…</body>
标签之间。正文部分的关键词/短语非常重要。它们与<head></head>
标签之间的关键字/短语协同工作。关键字/短语也必须出现在网站每一页的<body>
标签之间。
以下是应该考虑并添加到您的列表中的关键字变体。
singular and plural : lists and pages should include two forms of an important keyword.
hyphen : If the hyphen may be inserted by the searcher, add the keyword with hyphen.
Misspelled : If a keyword is misspelled frequently, add misspelled keywords.
Picture and link : Add keywords to the title of the link. Add keywords to the "alt" and "titles" of the picture. For example, a shoulder map on Mr. Smith's website may have the following HTML code:
<img alt="Painful shoulder" title="Painful shoulder" src="img/shoulder-pain.gif">
精心设计的内部链接
史密斯先生会明智地将最重要的关键字或短语插入到他的网页的文件名中。Smith 先生从一个四页的网站开始,他用以下名称保存它们:
index.html
(This is his homepage, so the page name cannot be a keyword)
shoulder-pain.html
(This is his explanation for shoulder pain)
shoulder-pain-cure.html
(This is his treatment of rancid yak fat)
shoulder-pain-form.html
(This is his order)
他可以使用句号而不是连字符(最多使用三个连字符或句号)。
接下来,Smith 先生的导航菜单将包括关键词肩痛 ,以链接到页面名称中包含该关键词的页面:
`
`
菜单看起来如下所示:
Shoulder pain description
Shoulder pain cure
Shoulder pain order form
Shoulder pain home page
创建一个网站地图,因为这是一个强大的内部链接来源。网站地图只是一个链接到你最重要的页面或者所有页面的页面。你可以在本章后面的“站点地图帮助 SEs 索引网站”一节中找到创建站点地图的说明。
提示 确保所有的页面都有一个返回主页的链接。
您网站的外部链接
网站上与你的产品相关的外部链接比没有相关内容的网站上的链接更有价值。最巧妙的方法是首先在你的网站上添加一个广告和一个到其他网站的链接。联系其他网站所有者,并对她的网站给予好评。然后问店主她是否会把你的链接加到她的网站上。
询问合作的网站所有者是否会在链接旁边添加一个小广告,就像这样:
<p><a href="http://www.best-buzzers.com">In my opinion the best quiz buzzers are found ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/prac-h5-proj/img/U002.jpg) at http://www.best-buzzers.com</a></p>
外部链接必须包含关键字;因此,您必须指定链接包含的内容。在前面的例子中,关键字是问答游戏蜂鸣器。在电子邮件中发送您喜欢的链接和文本,以便合作的所有者可以剪切和粘贴它。
询问合作网站的所有者,她是否会将链接添加到多个页面。试着让她把你的链接放在包含很少其他链接的相关页面上;这增加了你的链接的价值。
如果网站内容相关性很好,考虑在她的网站上购买一个小广告,最好带有相关的文本链接。链接交易可能会成为一个非常无聊的过程,如果你在与你的关键词相关的网站上购买链接,通常会更容易管理。
注册搜索目录。SEs 从 DMOZ 开放目录项目中获取链接。将您的网站地址提交给[
www.dmoz.org/help/submit.html](http://www.dmoz.org/help/submit.html)
在 DMOZ 上市,选择正确的类别非常重要;确保您在适当的级别提交。DMOZ 由志愿者提供服务,可能需要很长时间才能获得批准。
联系您的供应商。请他们在自己的网站上投放广告;或许类似于以下内容:
<p><a href="http://www.best-buzzers.com">Quiz buzzers made by BestBuzzers use our ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/prac-h5-proj/img/U002.jpg) ElectraCo super solenoids></a></p>
许多公司都有客户名单。如果你是该公司的客户之一,要求把你的网址放在他们的客户名单上。另一个想法是寻找特定行业的网站和目录,以及特定行业或地区的搜索引擎。
你永远不应该做的事情
下面列出的“你绝对不应该做的事情”摘自三大搜索引擎的建议页面。
不要把其他网站的链接放在你的主页上;这将有损于你自己的排名。* Do not use frames; They confuse and stop web crawlers.?? 不使用 JavaScript 菜单和 JavaScript 链接;它们阻止网络爬虫访问你链接的内部页面。* Do not use stealth writing and other tricks; Like white characters on a white background. Web crawler detects them, and even detects and punishes closely related colors, such as very light gray text on white background.* Keywords/key phrases do not use pictures; These are invisible to se.* Do not use cookie cutter ; That is, add the same or nearly the same pages to increase the number of linked pages. SEs will not accept these and may punish the website.
谷歌说:“不要在不同的网址下创建一个页面的多个副本。许多网站提供纯文本或打印机友好版本的页面,这些页面包含与相应的富图形页面相同的内容。为了确保您的首选页面包含在我们的搜索结果中,您需要使用一个robots.txt
文件来阻止来自我们蜘蛛的重复页面。有关使用robots.txt
文件的信息,请访问我们关于阻止 Googlebot 的信息。
[
support.google.com/webmasters/bin/answer.py?hl=en&answer=35291](http://support.google.com/webmasters/bin/answer.py?hl=en&answer=35291)
注 本书第十五章中描述的页面打印机并没有颠覆搜索引擎。使用 CSS 页面打印机可以避免这个问题,因为没有重复的页面。
do not use link farms, that is, automated systems that create dreams of links on their web sites pointing to your pages. ses reject to acknowledge these links.
Yahoo! Statement: "Using' Linked Farm' violates Yahoo! The website guide won't improve your webpage ranking. "
Google declares: "Don't participate in the link plan to improve your website ranking or page ranking. In particular, avoid linking to spammers or "bad neighbors" on the network, because these links may have a negative impact on your ranking. "
然而,一些搜索引擎优化大师说,某些类型的链接农业可以很好地工作,如果混合一个坚实的运动,但你需要知道你在做什么,以避免扰乱搜索引擎。
在下一节中,我们将检查一个没有搜索引擎优化的网页。我们可以从一个不良实践的例子中学到很多,因为它强调了网站设计者应该避免的常见错误。
一个不包含搜索引擎优化的网站
图 16-1 展示了一个完全没有经过搜索引擎优化的网页。我感谢蒂娜·法林顿允许我使用我为她设计的网站上的泰迪熊照片
图 16-1。 似乎包含关键词“泰迪熊”的网页
这个网站的关键词是泰迪熊 或泰迪熊 。乍一看,你可能认为这个关键短语在这个页面上出现了五次。但是,关键短语都是图像,因此这些短语无法被网络爬虫检测到。设计师应该为彩色面板使用背景图像,然后在面板上覆盖真实文本,以便 SE 可以阅读文本。
清单 16-1 展示了一个没有搜索引擎优化的网页的标记。SEO 错误以粗体显示。
清单 16-1。【welcome.html 展示未进行搜索引擎优化的网页
`<!doctype html>
**Welcome to our web site**
****
****
<**img src="img/banner**.jpg" width="786px" height="224px">` `
****
`
隐藏下一节,看能不能看懂清单中的 SEO 错误。如果你理解了所有五个不良实践的例子,那么恭喜你,你已经清楚地吸取了上一节的教训。
清单 16-1 中的 SEO 错误
下一节解释在清单 16-1 中所犯的搜索引擎优化错误。
“欢迎来到我们的网站”这个标题不仅愚蠢,而且毫无用处。它不包含关键短语。为了用户的利益,以及为了搜索引擎的优化,标题必须恰当地描述页面的内容。* The key phrase Teddy bear does not appear anywhere in the mark, and the word Teddy bear or Bear does not appear either.* 元内容不包含关键短语。meta "description"
标签应该已经描述了页面和被推广的产品。有一大块下拉菜单的 JavaScript 代码。搜索引擎不读取 JavaScript。下拉菜单上的每个按钮显示九个附加页面。这意味着除了主页之外,还有 20 多页是搜索引擎无法读取和索引的。这些页面可能充满了 se 永远不会看到的关键词和关键短语。JavaScript 下拉导航菜单如图 16-2 所示。它显示了 JavaScript 下拉菜单,可以阻止搜索引擎搜索主页。
***图 16-2。** JavaScript 下拉菜单*
* The title is called `banner.jpg`, and `alts` or `titles` are not used. Missed three opportunities to insert keywords. It can be read as:
<img src="img/teddybears.jpg" alt="Colyton teddybears" title="Colyton teddybears" ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/prac-h5-proj/img/U002.jpg) width="786px" height="224px">
在三个面板的每一个中可以看到相同的故障;例如, black-panel.jpg
可能是:
<img alt="Price of **teddy bears**" title="price of teddy bears" ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/prac-h5-proj/img/U002.jpg) src="img/**teddy-bear-prices.jpg**" width="227"height="198">
结论: 在搜索框中输入泰迪熊、泰迪熊、 或熊 ,永远也找不到这个网站。
注意 如果网页设计者将网页提交给 W3C 验证,许多错误就会被强调出来,并得到纠正。如果你想让搜索引擎找到并索引页面,就要经常验证它们。
向搜索引擎提交新的网站是很常见的。下一篇技巧文章中列出了这样做的 URL。只提交一次,否则 SEs 会认为你是垃圾邮件。一些 SEO 专家不愿意提交,但是他们等待 se 找到网站。很难确定哪种方法是最好的。
提示 通过以下地址向三大搜索引擎提交网站 URL:
冰:[
ssl.bing.com/webmaster/SubmitSitePage.aspx](https://ssl.bing.com/webmaster/SubmitSitePage.aspx)
雅虎:[
www.search.yahoo.com/info/submit.html](http://www.search.yahoo.com/info/submit.html)
谷歌:[
www.google.co.uk/addurl/](http://www.google.co.uk/addurl/)
和[
www.google.com/submit_content.html](http://www.google.com/submit_content.html)
我不建议使用批量提交组织。以我的经验来看,其中一些会将网站的电子邮件地址卖给垃圾邮件发送者;不要冒险,你自己去做。
站点地图帮助 SEs 索引一个网站
站点地图可以是一个简单的网页,上面有一个指向网站上每个页面的链接列表。一个小型网站的简单站点地图上的链接可能看起来像图 16-3 。
图 16-3。 一个简单但有效的网站地图
正如你在图 16-3 中看到的,一个站点地图可以是一页文本。文本由指向网站页面的实时链接组成。包含网站的文件夹的 URL 必须位于列表的第一位。图 16-3 由清单 16-3 产生。该列表不可下载。
清单 16-3。 创建一个简单的网站地图
`<!doctype html>
Sitemap for Rapid Embroidery logos
*meta details go here*
`
在所有页面上放置一个指向网站地图的链接是很重要的。使链接不显眼,因为大多数用户不会对点击特定的链接感兴趣。网站地图链接最好位于网页的页脚。当访问者看到站点地图链接时,他们可能会错误地理解它。如果你的网站涉及一个城镇,一个建筑工地,或者一个野营地,访问者可能会认为这是一个地理地图。为了避免这种错误,可以把可见链接叫做类似于网站目录 的东西,但是为了 SEs 的缘故,要确保实际的页面叫做sitemap.html
。主页上的链接列表如下所示:
`
`
生成的网站地图
如果一个网站有很多页面,那么创建一个文本链接页面将会非常乏味。然而,三个主要的搜索引擎接受免费的在线生成器的结果,这些生成器会在一瞬间为一个大型网站创建一个网站地图。首选的生成器是[
www.sitemaps.org](http://www.sitemaps.org)
,但是在本节的后面,我建议使用一个稍微友好一点的生成器,名为auditmypc.com
。
搜索引擎将接受一个类似于清单 16-3 中的纯文本网站地图;然而,搜索引擎更喜欢阅读 XML 格式的站点地图。在线生成器生成一个通用的 XML 站点地图,因此它可以被所有搜索引擎接受。清单 16-4 是一个生成的站点地图的例子(这个清单不能下载)。
清单 16-4。 使用生成器以 XML 格式创建的网站地图示例
`
http://www.rapidembroidery.co.uk/
http://www.rapidembroidery.co.uk/logo-embroidery-about.html
http://www.rapidembroidery.co.uk/logo-embroidery-garments.html
http://www.rapidembroidery.co.uk/logo-embroidery-contact.html
-
http://www.rapidembroidery.co.uk/logo-embroidery-commend.html
http://www.rapidembroidery.co.uk/index.html
`
生成器允许您添加可选信息(lastmod
、changefreq
、priority
),如下面的代码片段,但我倾向于使用默认设置:
<url> <loc>http://www.rapidembroidery.co.uk/index.html/</loc> <lastmod>2011-01-01</lastmod> <changefreq>monthly</changefreq> <priority>0.8</priority> </url>
网站地图生成器的下一个例子是对[www.sitemaps.org](http://www.sitemaps.org)
的替代。
使用审计我的电脑
确保您没有运行需要站点地图的网站。转到[
www.auditmypc.com](http://www.auditmypc.com)
这个第三方生成器是免费的(与试图定位和使用搜索引擎的工具相比,也是用户友好的)。生成的 sitemap 适合 Bing,Yahoo!,还有谷歌。
On the home page, click Site Map Builder on the top menu bar. You will see a video; Don't run it, but click Skip Video above the video.
Click Run on the security pop-up window. A window named XML Site Map Tool will appear. Expand the window and type the URL of your website.
Click the start button (the green right arrow at the bottom left).
Click export site map XML.
Save the generated site map in the root folder of the website on your hard disk. Rename it to sitemap.xml
. Then use your FTP client to upload it to the root directory of the website server.
向搜索引擎提交网站地图
一旦你生成了网站地图并上传到你网站的服务器上,你需要告诉搜索引擎在哪里可以找到它。将它提交给 Google 和 Bing 的说明如下:
谷歌
Log in to the Google website map account at [
google.com/webmasters/tools/](http://google.com/webmasters/tools/)
(if necessary, create an account).
Add a site map.
Enter the URL of your site map file such as [
www.mywebsite.co.uk/sitemap.xml](http://www.mywebsite.co.uk/sitemap.xml)
.
兵
[
www.bing.com/toolbox/webmaster](http://www.bing.com/toolbox/webmaster)
Sign in to the Bing Webmaster tool (sign in with Windows Live ID for details).
On the home tab, click the Add Site button and submit its URL. Verify ownership by selecting option 1. Download an XML file named BingSiteAuth.xml
.
Save it to the root folder of the website on your hard disk.
Then use your FTP client to upload it to the root folder of the website on the host/server.
In the browser address bar, enter the URL of the XML file. Click the verify button.
After verification, the site map can be submitted.
Go to [
www.bing.com/toolbox/webmaster/](http://www.bing.com/toolbox/webmaster/)
to register.
On the home tab page, click the website you just verified. Click the grab tab site map to add a Feed.
Enter the full URL of the site map like this: [
www.yourwebsite/sitemap.xml](http://www.yourwebsite/sitemap.xml)
Click submit.
雅虎!
这个 SE 现在和 Bing 挂钩了;因此,不再需要单独提交。去雅虎!站点资源管理器了解更多信息。
注意 在生成 站点地图的情况下,主页没有到站点地图的链接。XML 文件放在网站的根目录中,搜索引擎知道它在哪里,因为您必须在生成 XML 文件的过程中包含这些信息。
获取和提交网站地图可能会很棘手,因为目标一直在变。你认为你已经理解了这个过程,但是下一次一些事情已经改变或者隐藏在一个链接和子链接的迷宫中。一些界面有褪色的颜色和低对比度的颜色,这样标签就看不清楚了。一般的方案好像是:首先给 SE 添加一个网站 URL,然后验证你是网站的主人。当这被验证后,你就可以提交站点地图了。站点的所有者一词不是字面意思;意思是你是被主人授权维护网站的人。
提示 参见[
www.sitemaps.org/protocol.html](http://www.sitemaps.org/protocol.html)
了解更多关于网站地图的信息。该网站强调了站点地图的价值,并解释了 Google、Yahoo!,还有必应。
让人们知道你的网站的存在
当你的网站出现在搜索引擎的页面上时,这就是一种免费广告。你的目标是销售商品和服务,提供信息,或者为某项事业获得支持。为了最大限度地增加网站的访问者数量,可以通过其他形式的广告来补充搜索引擎的结果。
注意 记住你的网站的目的是说服人们雇佣或购买你的产品,或使用你的服务;因此,使用每一个 可用的方法把人送到你的网站以达到这个目的。
一个商业网站可能排名较低,但它比排名高的竞争对手获得更多的访问。这可能是因为排名较低的网站在行业杂志、行业目录和手册中被广泛宣传。不要忽视宣传你的网站。定期在合适的杂志和小册子上刊登小广告会收到很好的效果。
不一定懂电脑的满意客户可以告诉别人你的产品。这些人可能会在搜索引擎上寻找你的产品。
在每一份小册子、传单、包装纸和所有其他印刷品上,确保你的网站地址被醒目地显示出来。在你所有的资料上也使用二维码。这种广告媒体将在下一节描述。
使用快速响应(QR)码
现在,您应该已经熟悉了一种叫做 QR 码或矩阵码的新型条形码。现代智能手机可以扫描二维码。这使得智能手机无需点击 URL 就能访问网站。一款名为 QR 阅读器的免费应用必须下载到移动设备上,才能读取 QR 码。
前往[
createqrcode.appspot.com](http://createqrcode.appspot.com)
即可生成免费二维码。这个谷歌托管的应用是由杰森·德尔波特设计的。
将出现图 16-4 中所示的表单。你会看到我已经填写了我的网址, ` `www.colycomputerhelp.co.uk`` 你可以选择不同的图片尺寸,但我选择了默认的 300 × 300 像素。点击创建二维码。
注意 不要输入任何其他文本,否则手机设备会认为这是一条短信,你的网站将无法加载。但是,如果您不想加载 URL,QR 码也可以包含从电子邮件地址到一长段文本的任何内容。
图 16-4。 用于输入您的网站网址的对话框
代码图像将出现,如图 16-5 所示。右键单击并保存它,或者将其复制并粘贴到文档中。
***图 16-5。【http://www.colycomputerhelp.co.uk 】生成的二维码 ***
你也可以把它的代码嵌入到网页中,虽然我不确定这是否有用。要抓取用于嵌入的代码,请从http://chart…
开始选择 QR 图像下方的所有文本,并将其粘贴到网页中。
注 参见维基百科 QR 文章,了解 QR 码组成部分的精彩解释。
总结
为了确保人们可以找到你的网站,它必须被广告。本章讨论了两种主要的广告方式:搜索引擎和印刷品。第三种方法是口口相传。
这一章以对搜索引擎的概述和对折磨网站所有者的骗局的警告开始。你学习了网页排名以及如何选择关键词和短语。还有一部分描述了你必须永远不要 做的事情。
就精心设计的内部和外部联系提出了建议。一个为搜索引擎优化而设计糟糕的页面的例子给出了不要做什么的实用建议。网站地图的一个部分演示了如何制作网站地图并上传到搜索引擎,这样他们就可以更容易地索引你的网站。
这一章建议了宣传你的网站的方法,包括二维码,这样智能手机用户就可以从打印的文档中立即访问你的网站。
在下一章中,你将了解到网站的三个有用的附加功能。第一部分描述了如何在页面上显示防垃圾邮件的电子邮件地址。第二部分向您展示了如何向关键页面添加访问者计数器。最后一节解释了将用户重定向到其他页面或网站的方法。
十七、打印、计数和重定向
顾名思义,本章提供了实现以下四个实用程序的实用方法:
Page printing
Self-service visitor counter
Analyze Google Visitor Counter
redirect
我将首先研究如何避免从浏览器工具栏打印的陷阱,以及用户如何节省墨水和纸张。然后,您将看到如何创建访问者计数器。最后,我将描述重定向到另一个页面、同一页面上的另一个位置或另一个网站的方法。
页面打印
通过使用浏览器工具栏上的“打印机”按钮或插入到页面顶部附近的“页面打印机”按钮,可以在没有特殊样式表的情况下从网站页面打印页面。
不幸的是,这两种方法都会打印出不需要的项目,如背景色、横幅标题、菜单按钮、页脚和广告。这些项目不必要地消耗纸张和墨水。此外,打印机必须设置为横向格式,以防止切断页面的右侧。诸如菜单按钮和“转到顶部”箭头等功能在打印的文档上毫无用处。此外,冗长的文档可能会在不方便的地方分页。下一节将展示如何通过研究以下主题来避免这些问题:
Create this page button
Prevent unwanted items from printing.
Simplify printout to save ink and paper.
page break
Print URL (web address)
Print check box
Search engines and printable pages
Test CSS printable page
创建一个“打印本页”按钮
可以使用浏览器工具栏按钮打印页面,但大多数用户更喜欢突出的打印本页按钮,尤其是初学者。可以在页面顶部附近插入页面打印机按钮,如图图 17-1 所示。
图 17-1。 两种类型的页面打印机按钮
对于一个标准的窗口按钮(就像图 17-1 中的上部按钮),把这个标记放在你想要按钮出现的页面上。下面只给出清单 17-1 的一部分,但是完整的清单可以从本书的页面[
www.apress.com](http://www.apress.com)
下载
清单 17-1。【button-types.html 分部分项清单两种类型页面打印按钮】(??)
<div id="button"> <input type="button" **value="Print this page"** onclick="window.print()"![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/prac-h5-proj/img/U002.jpg) title="Print this page"> </div>
value
(标记中以粗体显示)提供了按钮上的文本。
Windows 样式按钮的 CSS 是:
#button { text-align:center; }
对于图 17-1 中的自定义下部按钮,使用以下标记:
<div id=button> <input id="printbtn" type="button" value="Print this page" ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/prac-h5-proj/img/U002.jpg) onclick="window.print()" title="Print this page"> </div>
自定义按钮的 CSS 是
#button { text-align:center; } #printbtn { margin-bottom:10px; padding:5px; font-weight:bold; ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/prac-h5-proj/img/U002.jpg) background:aqua; color:black; }
防止打印不需要的项目
为了在打印页面时去掉不需要的项目,必须创建一个附加的“打印”样式表。这将以更方便的纵向格式打印页面,以黑白方式打印,并删除所有不需要的项目。
Main style sheet; For example, mainstyle.css
will determine how the page is displayed on the screen.
Print style sheet; For example, print.css
will determine how the page is printed.
仅当单击“打印本页”按钮(或浏览器的“打印”按钮)时,打印样式表才会起作用。
在 HTML 页面的<head>…</head>
部分,将打印样式表链接放在屏幕样式表链接 之后,如下所示:
<link rel="stylesheet" href="**mainstyle.css**" type="text/css" **media="screen"**> <link rel="stylesheet" href="**print.css**" type="text/css" **media="print">**
简化打印输出以节省墨水和纸张
图 17-2 、 17-3 和 17-4 显示打印输出可以删除所有不必要的项目。
图 17-2。 屏幕显示(仅页面的上半部分)
图 17-3 。第一个打印页面
图 17-4。 第二印页
在图 17-2 、图 17-3 和图 17-4 中,我选择从打印输出中省略以下项目:
Background color (to save color ink).
Header (which contains no useful information). This can save paper and ink.
Print this page button because it doesn't work on printout.
Menu buttons, because they don't work on printouts. On the screen display
Headings (h1
to h6
) have large line spacing. I choose to reduce the text size and line height in the printout to save the user's paper.
Go to the "Up" arrow at the top of the page because it doesn't work on printout.
Footer, because it is a set of links that don't work on printout.
我还决定拆分栏目。这个项目中的屏幕页面有两列;每一栏包含不同的主题。因此,我设置了打印输出,以便为每一列/主题生成不同的页面。这可以防止页面在不适当的位置断开。我通过在第二列顶部放置分页符来实现这一点。
我保留了打印输出中的指导图像,因为它们对用户有用。
清单 17-2a 、 17-2b 和 17-2c 提供了两列页面和两个样式表的内容。这种情况下的菜单是一个带有翻转按钮的水平菜单栏。它包含在标题<div>
中。没有使用语义标签,所以练习的要点可以被清楚地理解,而没有 IE 的 JavaScript hack 的混乱。在清单 17-2a 中,为了节省空间和清楚地显示打印 CSS 所针对的项目,大部分文本内容都被省略了。包含两个样式表的完整页面可以从 Apress companion 网站下载。屏幕和打印样式以粗体显示。打印机忽略的<div>
也以粗体显示。
注意 打印的页面有一个小缺点:多栏页面打印每一栏,使其横跨页面的整个宽度,如图图 17-3 和 17-4 所示。
清单 17-2a。【twocol-printer.html】展示页面打印的两栏页面
`<!doctype html>
<title>Two column page for printer</title>
<meta charset=utf-8>
*meta details go here*
**<link rel="stylesheet" type="text/css" href="twocol.css" media="screen">**
**<link rel="stylesheet" type="text/css" href="twocol-print.css" media="print">**
</head>
<body>
<a id="top"></a>
<div id="container">
**<div id="hdr">**<!--the CSS removes the header from the print-out-->
<h1>Coly Computer Help</h1></div>
**<ul id="hmenu">**<!--the CSS removes the menu from the print-out-->
<li class="hbtnew">
<a title="Computer Jargon explained" href="glossary.php">Jargon</a></li>
*The rest of the code for the horizontal menu bar goes here*
**</ul>**
<br>
**<div id="button">**<!--the CSS removes the print button from the print-out-->
<input type="button" value="Print this page" onclick="window.print()" title="Print this page">
**</div>**<br><!--End of page printer button-->
<h3>INSTALLING & CONFIGURING A FREE ANTI-VIRUS PROGRAM</h3>
<div id="leftcol">
<h3>How good is a free Anti Virus program?</h3>
<img title="XXX free" src="img/xxx-crop.jpg" alt="XXX free" width="158" height="81">
*The content of the first column goes*
</div></div>
<!--LEFT COLUMN BEGINS ON A SEPARATE PAGE-->` `**<div id="rightcol" style="page-break-before:always;">**
<h3>Configuring a free anti-virus program</h3>
*The content of the second column goes here*
</div>
</div>
**<div id="ftr">**<!--the CSS removes the footer from the print-out-->
**<b>THIS IS THE FOOTER THAT YOU DO NOT WANT TO PRINT</b>**
**</div>**</div>
</body>
</html>`
某些版本的 Mozilla Firefox 有时会因为一个内置的怪癖而插入一个空白页。为了避免任何浏览器怪癖,用re-set
开始样式表,如清单 17-2b 所示。
清单 17-2b。 打印机的 CSS 样式表(twocol-print.css)
`/PRINT.CSS: re-set style for printing only /
/re-set basic styles to avoid browser compatibility quirks /
html, h1, h2, h3, h4, h5, p { padding:0; margin:0; font-size:100%; font-weight:normal;
}
/TO SAVE INK , set the text to black with white background /
body { width:100%; padding:0; margin:0; float:none; color:black; background-color:white;
}
/TO SAVE PAPER , remove the large line space beneath a heading. Set headings to 14 point /
h1, h2, h3, h4, h5, h6 { margin-top:0; margin-bottom:0; font-weight:bold;
font-size:14pt; !important
}
/SELECT UNWANTED PRINT-OUT ITEMS , i.e., header, menu, print-button, footer and uparrow /
}
/REVEAL OUTGOING URL links on printed page. See item on Printing URLs /
ahref^="http://":after {content: "(" attr(href)")";
}
/SET PAGE BREAK class so that the printed pages do not break in undesirable places /
.break-before { page-break-before: always;
}`
![imaages 注意 `print.css`样式表不包括任何已经被主(屏幕)样式表覆盖的命令。打印页面时,打印样式表会覆盖一些主样式表命令。#### 关于分页符的更多信息先前的样式表,清单 17-2b,包含了一个命令,使得页面在第二列的顶部断开。该页面也可以在第一列的末尾用下面的 CSS 类断开:` .break-after { page-break-after:always; }`为了完成这个项目,主样式清单`twocol.css`如清单 17-2c 所示。清单 17-2c 。为页面的屏幕版本创建主样式(twocol.css) `body { background-color:#D7FFEB; font-family: "Times New Roman"; font-size: medium;
color: #000000;
}
container {text-align:center; margin: auto; width:960px;
}
img { border:0;
}
leftcol { float: left; width: 48%; padding:2px; text-align:left;
}
leftcol img { float:left; margin-right:5px;
}
rightcol { float: right; width: 48%; padding:2px; text-align:left;
}
hdr { background-position:35% 20%; background-image:url('img/compbkgcrop.jpg');
background-repeat:no-repeat; width:960px; height:170px;
}
h1 { position:absolute; top:90px; left:300px; width:450px; font-family:"Times New Roman";
font-size: 300%; color: #0080a0; font-weight:bold; margin-bottom:5px;
}
.uparrow { text-align:center;
}
}
li.hbtnew {display:block; margin:auto; float:left; text-align:center; padding:3px;
list-style-type:none; list-style-position:inherit;
}
li.hbtnew a {display:block; text-decoration:none; color:white; background-color:#0080a0;
font-weight:bold; padding:4px;
}
li.hbtnew a { background: #0080a0; border: 4px outset #AABAFF;
}
li.hbtnew a:hover { background: #0060a0; color:yellow; border: 4px outset #8ABAFF;
}
li.hbtnew a:active { background:#ABCBFF; border: 4px inset #ABCBFF;
}
h3, h4, h5, h6 { margin-top:0; margin-bottom:0;
}
span.tiny {font-size: x-small;
}
.cntr { text-align:center; margin:auto;
}
.lft {text-align:left;
}
.right {text-align:right;
}`
打印网址(网址)
如果网页有到其他页面的内部链接或同一页面上的锚,打印它们是没有意义的,因为它们在打印的页面上没有任何作用。CSS 标记的下一部分将打印对用户有用的网站的 URL。打印的 URL 将省略下划线,因为这有时会掩盖 URL 中的下划线。该代码适用于所有浏览器。
/*reveal links on printed page*/ a[href^="http://":after {content: "("attr(href)")"; }
注意中间的四个括号(大括号之间)是普通的弯括号。假设下面几行出现在 HTML…
`
Click for Free computer help
`
URL 的屏幕外观如下:
点击获取免费电脑帮助
相应的打印输出将是:
点击获取免费电脑帮助([
www.colycomputerhelp.co.uk](http://www.colycomputerhelp.co.uk)
)。
打印复选框
在订单等可打印页面上,使用 Wingdings 或 Webdings 的方形复选框(也称为勾选框)在 Mozilla Firefox 中不起作用。然而,几乎每台计算机都有 Lucida Sans Unicode 符号。Lucida Sans Unicode 复选框□
在所有流行的浏览器中都能正确显示。您需要在文本框中使用比文本更大的字体。
图 17-5。 这是盒子在所有流行浏览器中的显示和打印方式。
清单 17-5 提供了一个可以正确打印并在所有浏览器中正确显示的复选框。
清单 17-5 。适合在所有浏览器中打印的勾选框(tickbox-printer.html)
`<!doctype html>
This is box styled with Unicode Lucida font
The tick box shown below is styled with Unicode Lucida and it is
formatted as xx-large and bold
□
` `
`
搜索引擎和可打印页面
一些网页设计者创建一个易于打印的网页,它是主要文本内容的副本。搜索引擎不赞成使用重复的页面。以下是 Google 关于使用重复页面而不是页面的 CSS 可打印版本的说法:“不要在不同的 URL 下创建一个页面的多个副本。许多网站提供纯文本或打印友好版本的页面,这些页面包含与相应的图形丰富的页面相同的内容。为了确保您的首选页面包含在我们的搜索结果中,您需要使用 robots.txt 文件阻止重复的页面。有关使用 robots.txt 文件的信息,请访问我们关于阻止 Googlebot 的信息。”
有关robots_text
的信息,请访问:
[
code.google.com/web/controlcrawlindex/docs/robots_txt.html](http://code.google.com/web/controlcrawlindex/docs/robots_txt.html)
。
注 本章描述的页面打印机并没有颠覆搜索引擎。使用本章所示的 CSS 页面打印机可以避免这个问题。
测试 CSS 可打印页面
没有必要浪费纸张和墨水,即使测试需要合理的反复试验。将页面加载到浏览器中,然后单击文件 打印预览,查看可打印页面的外观。如果可打印页面包含分页符,请单击打印预览屏幕底部的向右箭头查看后续页面。
按 Esc 键退出打印预览模式。
自助游客柜台
许多客户要求设立访客柜台。支付了网站和托管费用后,他们会急于知道是否有人访问它。你必须在第三方柜台,依靠主机的柜台,或者在网站上放置自己的 DIY 柜台之间做出选择。
第三方计数器意味着向页面添加一些代码。该代码然后链接到一个为您管理计数的 URL。我发现第三方计数器有时会受到拒绝服务攻击(DOS ),使计数器暂时无法工作。一位网站所有者曾经告诉我,网站的计数不再有意义。因此,我使用 DIY 计数器,因为它完全在网站管理员的控制之下,不依赖于易受攻击的主机。
大多数主机提供访问者统计数据,但是所有者不愿意钻研他们网站的控制面板。这意味着 DIY 柜台可能是最好的选择。在接下来的部分中,我将向您展示如何创建一个。它确实涉及到一小段 PHP 脚本的简单应用,但这是完全解释。主要议题将介绍如下:
Why use the counter?
Explain visitor count
How does the counter work?
Step 1: Create a free PHP visitor counter.
Step 2: Create "count"
file
Step 3: Create three tiny and identical text files with a text editor.
Step 4: Match the menu with three PHP main pages.
Matching step 5: upload the counter to the host.
Step 6: Ensure
为什么要用计数器呢?
一些网页设计师不鼓励他们的客户设置访客柜台。他们说柜台是过时的,业余的,没有意义的。这些借口通常掩盖了设计师对搜索引擎优化的无能。他们不想因为访客数量少而暴露他们的无能。
仅限于主页的访问者计数器可能无法为网站所有者提供足够的信息。主页可能有很多点击率,但是如果主页过于花哨、混乱或者晦涩难懂,用户就不会浏览网站的其他部分。计数器只是告诉网站所有者有多少人访问了主页,这不是很有用。所有者需要知道访问者是否被诱惑去浏览其他页面。因此,访问者计数器应该放在其他关键页面上,也就是所有者希望被访问的页面。这将告诉所有者,主页是否已经说服用户进行更深入的研究。
解读访客数量
通过查看访问者数量以及多少页面应该有计数器,我们可以了解到什么?
假设主页上的访客计数器显示为 10,000。所有 10,000 个访问者可能只看了一眼你的主页,然后跳到另一个网站。或者他们可能看了好几页。所有者永远不会知道访问者是否被诱惑去更深入地研究网站。
很明显,只在主页上有一个计数器不会提供很多信息。如果计数器也放在另外三个关键页面上,我们可以了解更多。让我们将关键页面称为步行者页面、露营者页面和关于我们的页面。我们如何解释下面的访问者数量?
Home page: 10000 visitors
Traveler page: 5800 visitors
Camp page: 8700 visitors
About our page: 2300 visitors
这一信息表明
主页不会因为其他页面有访客而拒绝访客。* Tourists are more interested in camping equipment than walking equipment.* The sum of other page hits is greater than that of the first page; Therefore, the homepage will attract visitors to look at more than one other page.
计数器如何工作
这个计数器不仅免费,而且完全可靠。计数器需要一些 PHP 代码,但是您不需要 PHP 知识来实现它。只需将您自己的文件名和编号插入到本节包含的简单列表中。计数可以从所有者选择的任何数字开始;在这个例子中,我选择了 1000。该方法非常简单,只需将一段 PHP 代码插入到页面中。当用户访问网页时,这段代码触发一个小的 PHP 文件,将文本文件中存储的数字加 1。新的数字(现在是 1001)被传回网页并显示出来。该过程如图 17-6 所示。
图 17-6。 当一个页面被访问时,访问者的数量如何增加 1
一个虚拟主页?一些设计者创建了一个类似于index-dummy.html
的复制主页,这样所有的页面都链接到虚拟主页,而不是真正的主页。这种方法意味着,如果在浏览了网站上的其他页面后,访问者点击返回主页,他们将被发送到虚拟主页。正版主页上的计数器不会记录另一个唯一访问者。虽然这给出了一个更准确的访问者数量,但它确实意味着网站违反了搜索引擎的一条规则:“不要创建重复的页面。”所以,不推荐这种技术。
第一步:创建一个免费的 PHP 访客计数器
本章介绍的访客柜台是由 CJ 网站设计公司的詹姆斯·克鲁克设计的。他的网站是[
www.cj-design.com](http://www.cj-design.com)
。
这个柜台可以免费使用,条件是你要把他记在访客柜台旁边。完成这项工作的代码在三个count*.php
文件的步骤 2 中列出。
这个工作示例假设关键页面是index.html
、walk.html
和camp.html
。(在本例中,我们将假设所有者不希望“关于我们”页面上有计数器)。
注 只有列出的三页才会有一个DOCTYPE
。支持文件(*.dat
和count*.php
)必须而不是 有一个DOCTYPE
。
Use a text editor (such as Notepad or Notepad++) to insert the include
code type (shown in bold) directly above the end body tag (index.html
) of the homepage, or you can put it in the footer.
将修改后的索引页面保存为index.php
,如清单 17-6 所示。
清单 17-6.【index . PHP】包含访客计数器的主页
`<!doctype html>
index page with counter
*meta details go here*
*
*the home page content goes here*
****
****
**
**
`
注意 因为页面包含了一些 PHP,所以本例中的charset
必须是windows-1252
;否则,页面将无法验证.
Repeat the process in camp.html page
as follows: **<p>** **<?php include("countcamp.php");** **?>** **</p>**
Save the file as camp.php
.
Repeat the process in the walk.html
page. `
`
Save the file as walk.php
. Now you have three new .php
files: index.php
, camp.php
and walk.php
.
第二步:创建盘点文件
使用文本编辑器从头开始创建三个"count"
文件,并将它们保存为.php
文件。除了粗体显示的项目外,这些文件是相同的。
Create the first "count"
file for the home page, as follows: `";
}
?>
©CJ Counter
`
Save the file as counthome.php
.
Create a second "count"
file for the camping page, as follows: <?php $COUNT_FILE = "**countcamp.dat**"; if (file_exists($COUNT_FILE)) { $fp = fopen("$COUNT_FILE", "r+"); flock($fp, 1); $count = fgets($fp, 4096); $count += 1; fseek($fp,0); fputs($fp, $count); flock($fp, 3); fclose($fp); } else { echo "Can't find file, check '\$file'<br>"; } ?> <font color="#000000" size="x-small" face="Arial"> <?php echo $count; ?> <a href=”http://www.cj-design.com>©CJ Counter</a> </font>
Save the file as countcamp.php
.
Create a third "count"
file for the walking page, as follows: <?php $COUNT_FILE = "**countwalk.dat**"; if (file_exists($COUNT_FILE)) { $fp = fopen("$COUNT_FILE", "r+"); flock($fp, 1); $count = fgets($fp, 4096); $count += 1; fseek($fp,0); fputs($fp, $count); flock($fp, 3); fclose($fp); } else { echo "Can't find file, check '\$file'<br>"; } ?> <font color="#000000" size="x-small" face="Arial"> <?php echo $count; ?> <a href=”http://www.cj-design.com>©CJ Counter</a> </font>
Save the file as countwalk.php
.
第三步:使用文本编辑器创建三个微小的相同的文本文件
Only the starting number of the counter (such as 0 or 1000) is put in each file. Don't put anything else in these files, and don't insert commas to represent thousands.
Save these three files with the names of home.dat
, camp.dat
and walk.dat
.
您现在有了三个新的 PHP 网页、三个.dat
文件和三个*count.php
文件。
第四步:让菜单与三个 PHP 页面相匹配
在网站的每个 页面上,更改菜单超链接,使其链接到index.php
、camp.php
和walk.php
页面,而不是旧的*.html
页面。
第五步:上传计数器到主机
Use your FTP program to access the website on the host server.
Now upload three .dat
files, three count.php
files and three main PHP pages to the host server.
Using FTP program, right-click New File counthome.php
on the panel of the host server. In the drop-down menu, look for Properties/CHMOD and click it. Change the number 644 to 777.
对countcamp.php``countwalk.php``counthome.dat``countcamp.dat``countwalk.dat
,
重复此步骤
注 CHMOD 代表改变模式;也就是说,它使您能够更改文件的访问权限,从而使内容不能被 Linux 服务器上未经授权的人激活。主页面保留为 CHMOD 664,因此不会受到干扰。其他页面被设置为 777,以允许文件之间进行交互,从而在每次有人查看页面时改变访问者数量。在支持 PHP 的 Windows 服务器上,这要稍微复杂一些。最简单的方法是将.dat
文件放在子目录中,并将子目录设置为 777。
第六步:确保浏览器访问新的。php 页面而不是旧的 。html 页面
这很可能是最重要的一步,因为它防止浏览器访问旧的 HTML 文件;因为如果两个文件有相同的前缀,比如index.html
和index.php
,浏览器总是会选择 HTML 版本。
In the right server/host pane of FTP program, right-click the file index.html
, rename it indexold.html
or delete it. The user will now automatically access the index.php
file.
Repeat this step for camp.html
file and walk.html
file.
计数器现在的功能应该如下:当一个访问者访问一个页面时,这将触发一个相关的文件:countcamp.php
或countwalk.php
或counthome.php
。这些导致相关*.dat
文件上的数字增加 1。然后,新号码被传递到相关页面,并在那里显示。您现在需要测试计数器。
第七步:测试计数器
使用浏览器访问网站,以确保计数器数字显示在页面底部。如果计数器编号出现在页面上,请单击浏览器上的刷新图标。该数字应增加 1。访问其他主页,检查它们的计数器是否正常工作。
注意 如果出现 PHP 解析错误,很可能是在<?
和php
之间插入了空格。删除那个空格,使它看起来像<?php
。
使用谷歌分析追踪访客
Google Analytics 是之前描述的 DIY 计数器的替代产品。它为每个页面的访问者提供了详细的分析,甚至记录了访问者浏览每个页面的平均时间。你将能够发现游客流量来自哪里;例如,搜索引擎、推荐或直接 URL 输入。它甚至会告诉你哪些国家使用你的网页最多。
Google Analytics 要求你在网站的每个页面的<head>
部分添加一段 JavaScript。以下步骤将为您提供代码并帮助您安装它:
To install Google Analytics, please visit [
www.google.com/analytics](http://www.google.com/analytics)
and log in. If you have a Google account, log in with it; Otherwise, register an account.
In the form that appears, check the box to indicate that you agree to the terms.
Click the "Create Account" button, and you will see a code inserted into the <head>
section of each page. This code is essential; Without it, Google can't track your web page. Insert a code snippet before the closing </head>
tag.
当您下载代码时,它将类似于以下内容:
<script src="http://www.google-analytics.com/urchin.js" type="text/javascript"> </script> <script type="text/javascript"> _uacct = "UA-67xxx9-1"; urchinTracker(); </script>
24 小时后,您将能够看到第一批访客报告。随着时间的推移,这些报告将变得更有意义。要访问分析(称为我的仪表板),打开[www.google.com/analytics](http://www.google.com/analytics)
并登录。单击您的网站名称,统计数据就会显示出来。
在 Google Analytics 的左侧菜单中,选择流量来源 关键字。这将向您显示人们为了到达您的网站而搜索的所有关键字的列表。
如需帮助,请访问[
support.google.com/googleanalytics/?hl=en](http://support.google.com/googleanalytics/?hl=en)
。
重定向
重定向是链接的子集(或者用完整的术语来说是超链接 )。链接有三种形式:将用户从一页带到另一页的导航链接;页面的<head>
部分内将页面连接到脚本或 CSS 样式表的链接;和不属于其他两个类别的重定向链接。
大多数用户都熟悉顶部有一组链接的网页(见图 17-7 )。单击这些链接时,光标会跳转到页面上的各个部分。用户被重定向到页面上的特定位置。用户也可以被重定向到另一个页面上的特定位置。它们可以从一个网站重定向到另一个网站,旧网站可以将用户重定向到具有不同 URL 的较新版本。
锚和链接
重定向指向的地方称为锚 。最初,页面上的锚被定义为<a name="…"></a>
。虽然<a name="…"></a>
没有被弃用,但是 W3C 在 2002 年推荐用id
代替name
。然后代码变成了<a id="…"></a>
。同样的建议也适用于同一页面或其他页面上的锚;也就是用id
不要用name
。
将光标重定向到锚点的组件是一个链接。您将完全熟悉将您重定向到另一个页面的链接。这通常采取以下形式:
<b>For a desciption of the tennis courts</b> Please click <a href="tennis.html " title="Tennis court information"><b>Tennis</b</a>.
接下来的六个小项目显示,将光标发送到比整个页面更具体的锚点时,需要稍微不同的链接格式。
重定向到同一页面上的特定位置
页面顶部的链接列表可以将用户重定向到该页面的各个部分。对于长页面的信息,这是常见的做法。图 17-7 显示了在同一页面上移动的典型菜单。单击链接会将您带到页面上的相关部分。总是在每一部分的末尾放置一个向上箭头(或返回菜单链接),以允许用户重定向回菜单(见图 17-8 )。
图 17-7。 默认链接重定向
图 17-8。 使用向上箭头重定向
清单 17-7 中的粗体字显示了这两个图中重定向链接的位置。单击菜单上的一个项目会将您带到相关部分。单击页面上任意位置的向上箭头会将您重定向到菜单。完整的文件可以从 Apress 伙伴网站下载。
清单 17-7。【long-page-with-links.html 在长页面上创建两种类型的重定向
`<!doctype html>
Long page with links to items on page
** **
EMBEDDING SCRIPTS
** **
Introduction
*Long block of text goes here*
**Return to Menu
**
** **` `About Us
*Long block of text goes here*
**Return to Menu
**
** **
Embed scripts
*Long block of text goes here*
**Return to Menu
**
** **
Terms and Conditions
*Long block of text goes here*
**Return to Menu
**
`
您需要创建颜色和大小适合您的页面的箭头图像。
对于很长的文本块,可能需要不止一个向上箭头。为附加的向上箭头创建一个类,并将该类的上边距设置为 400 像素。向上的箭头将会在垂直方向上分开,而不会像<br><br><br><br><br>
或<p> </p><p> </p><p> </p><p> </p>
等那样在向上的箭头之间使用很多间隔。
重定向到同一网站不同页面上的特定位置
在下一个例子中,一个名为page1.html
的网页有一个到page2.html
的链接,但是锚是第 2 页上的一个特定位置。在page2.html
的那个特别的地方有使用网球场的费用清单。原理如图 17-9 中的所示。
图 17-9。 重定向到另一个页面上的特定位置
page1.html
中的重定向链接将是page2.html#tennis-prices
。完整的链接是:
<b>For details of the cost of using the tennis courts</b> Please click ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/prac-h5-proj/img/U002.jpg) <a href="page2.html#tennis-prices" title="Tennis court hire prices"><b>![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/prac-h5-proj/img/U002.jpg) Tennis prices</b </a>
href
指定目标页面(page2.html
),散列符号指定目标页面上的精确位置(#tennis-prices
)。在page2.html
中,就在网球场价格列表的前面,您将插入以下代码:
<a id="tennis-prices"></a>
当用户点击page1.html
上的链接时,浏览器立即跳转到page2.html
上的网球场价目表部分。
从旧网站重定向到新网站
所有者可能希望将流量从旧网站重定向到新网站。图 17-10 显示了一个被新网站取代的网站的典型页面。在显示页面的同时,用户将在几秒钟内被自动重定向到新的网站。
图 17-10。 一个典型的重定向页面
我们现在来看一个典型的例子。假设所有者是英国的一个镇议会。网址是[
www.brightville-council.com](http://www.brightville-council.com)
。委员会决定.com
域名并不真正适合英国市政厅。因此,委员会委托你设计并制作一个闪亮的新网站,名为[
www.brightville-council.org.uk](http://www.brightville-council.org.uk)
。对于知道旧网址的 100,000 人,委员会能做些什么?然后是所有文献和那些引用旧 URL 的目录所带来的问题?
此外,搜索引擎将索引旧网站的一些页面,以便输入“Brightville”或“Brightville council”将访问旧网站。
最简洁的解决方案是让旧站点与新站点并行运行几年,但是您需要确保新旧站点之间没有紧密的重复。搜索引擎不会容忍重复的网站。
下一步需要一些侦查工作。使用搜索引擎来发现当输入关键字时搜索引擎选择了哪些页面。出现在结果的前三页的页面就足够了。记下页面名称,因为必须向这些页面添加重定向。
使用旧网站的 FTP 详细信息下载这些页面的副本。使用清单 17-10 中显示的标记创建这些页面的新版本,并保持相同的页面名称。重定向指令以粗体显示。
清单 17-10 为这个问题提供了一个简单的解决方案,它自动通知用户,然后将他们重定向到新的网站。此列表没有可下载的模板。
清单 17-10 。添加到另一个网站的重定向
`<!doctype html>
Redirection page
****
*no need for any other meta content*
A search engine such as Google has directed you to an old version of our web site
Please accept our apologies
>
You will be switched to the new version at ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/prac-h5-proj/img/U002.jpg)
![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/prac-h5-proj/img/U002.jpg)
www.***brightville-council.org.uk*** in 5 seconds
If re-direction does not occur after 5 seconds, please click ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/prac-h5-proj/img/U002.jpg)
Here
`
插入您自己的新网站详细信息,以取代粗体斜体显示的 URL。在存储旧 URL 的主机中,上传修改后的页面以替换旧页面。重定向消息上的文本可能类似于图 17-10 中的文本。在每一页上稍微改变一下文字,这样搜索引擎就不会被重复的页面打乱。
创建“返回”按钮
可打印表单等页面可能没有导航菜单。通过返回按钮进行重定向将是一个有用的功能。返回按钮可能类似于图 17-9 中的所示。
图 17-11。 典型的返回按钮
通常只有在网站的单个页面上才需要返回按钮,所以内部样式表是一个明智的选择。但是,如果网站中有几个页面需要“返回”按钮,请使用外部样式表。清单 17-11 创建了如图图 17-11 所示的返回按钮。此列表没有可下载的模板。
清单 17-11。 在网页中插入返回按钮
`<!doctype html>
A Go-back-button
` ` *meta details go here*
`
用您希望返回的页面的文件名替换**previous-page.html**
。
返回任何页面
如果用户已经从任何其他页面随机访问了一个页面,您将需要一点 JavaScript 来实现到未知页面的重定向。这确实复制了浏览器后退按钮的功能,但是它可能是有用的,例如,在反馈表单的错误报告页面上。按钮文本的值 将会是“返回表单”。
如果用户已经从任何其他页面到达一个名为page2.html
的页面,她可以通过该按钮返回到任何 的上一页(参见图 17-12 )。
图 17-12。 将用户重定向到上一页的按钮
当单击按钮时,用户返回到上一页。该按钮是用清单 17-12 中的创建的。(此列表不可下载)。
清单 17-12。 在页面上放置一个按钮,将用户重定向到上一页
`<!doctype html>
A Go-back-to previous page button
*meta details go here*
`
总结
本章讨论了三个主题:页面打印、访问者计数器和重定向。页面打印机代码旨在节省用户的纸张和墨水,并提供一个干净的打印输出,没有不必要的项目,如背景色,横幅标题,菜单按钮,广告和页脚。
DIY 访问者计数器为用户提供了一个简单的网站是否吸引访问者的视觉评估。这一章解释了为什么在不止一页上有一个计数器很重要。提供了安装 Google Analytics 作为 DIY 计数器替代方案的说明。
重定向部分列出并解释了五种类型的重定向。
在下一章中,您将了解为什么验证是重要的,以及如何解释验证器(如 W3C 验证器和html5.validator.nu
)提供的报告。
十八、验证
为什么你应该验证
验证是一个经常被请求的增强功能。客户要求我在他们的页面上添加一个 W3C 验证标志,以表明他们雇佣了一个有能力的网页设计师。验证使网页设计者为他们准确的编码感到自豪。验证还有一些实际原因,如下所示:
验证是解决模糊问题的另一种方法。通过在不同浏览器中测试页面之前进行验证,设计人员可以节省时间并避免失败。* It ensures that your page is coded correctly, so that the browser won't produce strange results.* It ensures that the search engine will not be blocked because of your tiny coding errors.* Disabled users will be able to access your page. Small coding errors will trouble automatic screen readers.* The mobile device has a reduced version of the browser; They can't handle errors in unverified websites.
html 5 和 XHTML5 的文档类型
要验证 HTML5 页面,DOCTYPE 必须设置为下列之一:
对于 HTML5
` <!doctype html>
<title>HTML5 test page</title>
<meta charset=utf-8>
*meta details go here*
</head>`
对于 XHTML5
`
` `XHTML5 test page
*meta details go here*
`
lang=en
指定英语语言。
提示 对于非英语语言,参见[
www.w3schools.com/tags/ref_language_codes.asp](http://www.w3schools.com/tags/ref_language_codes.asp)
和[
www.iana.org/assignments/language-subtag-registry](http://www.iana.org/assignments/language-subtag-registry)
标志
如果一个页面有一个可访问的数据表,该页面必须是 HTML4 或 XHTML1.0,因为屏幕阅读器(在编写时)不能正确读取 HTML5 表(见图 18-1 中 HTML4 和 XHTML 1.0 的相关验证标志)。
HTML4 和 XHTML 1.0 徽标
当 HTML4 或 XHTML 1.0 页面通过验证时,您有权在页面上放置验证证书,以向您的客户证明您能够按照最新标准正确编写网站代码。您还可以下载经过验证的 CSS2 样式表的徽标。对于 HTML4 和 XHTML 1.0,你可以选择蓝色或黄色的标志。HTML4 和 XHTML 1.0 标识如图图 18-1 所示。
图 18-1。 这些可下载的徽标可从 W3C 验证器获得
HTML5 的 logo 有点不一样。我们接下来会看到这一点。
html 5 标志
图 18-2 显示了 2011 年 1 月发布的 HTML5 标志。
图 18-2。 html 5 验证标志
目前,HTML5 标识并不表示 W3C 是提供验证的权威。你需要在你的页面上说明这一点。
HTML5 徽标有多种尺寸和多种配置。W3C 徽标网站很漂亮,但令人困惑。它在[
www.w3.org/html/logo/](http://www.w3.org/html/logo/)
被发现
注意 W3C 网址中没有字母“c”;是w3.org
不是w3c.org
。它是在知识共享署名 3.0 下许可的。您可以更改徽标的颜色和大小,以匹配您的网页。
可验证 HTML5 徽标的解决方案
HTML4 和 XHTML 1.0 徽标附带了完整的 HTML 代码,这样用户就可以单击徽标并收到页面经过真正验证的验证。在撰写本文时,HTML5 徽标没有这种保护措施;网站管理员可以欺骗并嵌入 HTML5 徽标来假装页面是有效的。
同时,我设计了一些代码来克服这个缺陷。该代码既可以消除动态嵌入 HTML5 徽标的需要,也可以从您的images
文件夹中调用它。在网页的适当位置输入清单 18-2 中粗体显示的代码;你用它不需要我的许可。
注意 一个页面必须上传到主机,使我的徽标代码在单击时产生验证报告。如果您不这样做,一个错误消息将告诉您验证程序无法定位 referer。
清单 18-2。【在网页上放置可验证的标志(verifiable-code-1.html)
`<!doctype html>
Validation logo for html5
****
****
** **
**
**
`
如果您希望从根文件夹中的 images 文件夹加载图像,而不是从 W3C 网站加载,请将 64 像素徽标下载到 images 文件夹中,然后使用下面的替代代码片段(verifiable-code-2.html
):
**<p>** **<a href="http://validator.w3.org/check?uri=referer">** **<img src="img/html5_logo_64.png" width="64" height="64" alt="Validated HTML5"** ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/prac-h5-proj/img/U002.jpg)
**title="Validated HTML5"></a>** **</p>**
如果您喜欢较小的徽标,请在代码片段中将 64 的每个实例都改为 32。您需要下载 32 像素版本的徽标,以使第二个代码片段能够显示小徽标。
注意 验证 HTML4、XHTML 1.0、XHTML5 或 HTML5 时,验证报告有时会引用错误的行号。报告将引用一个行号,但您不会在该行上找到错误。这很正常;在所示行附近的行中查找错误,尤其是在前面的行中。
使用 W3C 验证器
W3C 验证器和 HTML5 徽标目前位于 W3C 网站的不同文件夹和不同页面中。此外,没有必要代码的 W3C 标志并不意味着页面是有效的。希望这本书出版时这些遗漏能被弥补。
我强烈推荐 W3C 验证器。图 18-3 显示了 W3C 验证器的界面,它在[
validator.w3.org](http://validator.w3.org)
被访问。
注意 不管你用哪个DOCTYPE
,HTML4,XHTML 1.0,HTML5,还是 XHTML5,验证器都会识别出来并产生报告与之匹配。这同样适用于编码;它将自动检测它,并根据您的页面是utf-8
还是任何 Windows 或 ISO 编码进行验证。
图 18-3。 W3C 验证器的接口
当你在浏览器中打开 W3C 验证器时,你会看到三个标签:通过 URI 验证、通过文件上传验证和通过直接输入验证。以下提示将帮助您决定应该选择哪个选项卡:
如果你的页面已经上传到一个网络主机 ,选择第一个标签,将页面的 URL 复制粘贴到地址栏或者输入;比如[
www.mywebsite.co.uk/myhomepage.html](http://www.mywebsite.co.uk/myhomepage.html)
。
单击"检查"按钮,等待几秒钟。最终会出现一份报告如果页面尚未上传到您的 web 主机,请单击文件上传选项卡,在您的计算机上浏览到该页面的文件,并加载它。然后单击“检查”按钮。
或者单击"通过直接输入验证"选项卡,将页面的整个标记粘贴到提供的文本区域中。然后单击"检查"按钮
图 18-4 显示了一次成功的标记。
图 18-4。 W3C 验证器成功验证了一个标记页面
图 18-4 显示了粘贴到文本区域的标记页面的成功验证。如果验证给出一个或两个警告,它们可以被忽略,因为它们指的是验证器是实验性的,而utf-8
是自动假定的。警告与您的页面无关。
如果验证报告有一个绿色的标题,那么你的网页是有效的。如果它有一个红色的标题,那么你有一个或多个错误。我认为这是一个糟糕的颜色选择,因为最常见的色盲是红色/绿色。无论如何,以下部分回顾了一些错误和建议的解决方法。
提示 为了最大限度的方便,使用文本编辑器来显示行号并打印页面标记。将打印结果放在计算机旁边,以便可以参考认证报告提供的行号。
HTML4 和 XHTML 1.0 的早期验证器检查正确的代码样式和标记错误。HTML5 验证器只关心标记错误。因为 HTML5 是向后兼容的,它将接受任何早期的样式,验证器也相应地工作。例如,HTML5 验证器将接受<meta charset=utf-8>
、<META charset="utf-8">
、<meta CHARSET=UTF-8 />
或这些样式的任意组合。但是,它不会验证<meta charset=utf8>
,因为缺少的连字符是错误的标记。
一些典型的 HTML5 验证错误以及如何修复它们
与验证 HTML4 和 XHTML 1.0 相比,HTML5 文档报告的错误更少,因为 HTML5 验证器只查找错误的标记;它不检查代码样式。
如果验证器报告的标题是红色的,问题列表和建议的解决方案将出现在红色标题的下面。
看到红顶报告中列出大量错误,您可能会感到震惊。不要担心,验证器总是报告许多错误,而实际上只存在少数错误(许多报告的错误是重复的)。
以下部分描述了一些典型的验证报告和适当的修复。
一份 W3C 验证报告发现了以下三个错误
下面是提交给验证器的 HTML5 标记的一个片段。我在括号中添加了行号,仅用于教学目的。
(10) <!--[if lte IE 8]><!-- conditional Javascript added --> (11) <script src="html5.js" type="text/javascript"> (12) </script> (13) <![endif]-->
验证报告的第一部分如下:
`Line 10, Column 23: Consecutive hyphens did not terminate a comment. -- is not permitted
inside a comment, but e.g. - - is.
Line 10, Column 23: The document is not mappable to XML 1.0 due to two consecutive hyphens in
a comment.
Line 13, Column 3: Bogus comment.
<![endif]-->
Line 13, Column 11: The document is not mappable to XML 1.0 due to two consecutive hyphens in
a comment.
<![endif]-->
Line 13, Column 12: The document is not mappable to XML 1.0 due to a trailing hyphen in a comment.
<![endif]-->`
不要让报告难倒你,而是按照以下四个步骤开始清除警告和一些重复。
提示 将报告复制到 Notepad++或其他显示行号的文本编辑器中。然后清除警告。删除引用 XML 的行,因为这些行是已经报告的行的变体。这留下了一个更清晰的工作区域(如下所示)。
从报告中删除了所有警告,因为它们适用于验证器,而不是文档。我删除了所有对 XML 的引用,因为它们重复了前面的错误消息。以下是报告第一部分的剩余内容:`Line 10, Column 23: Consecutive hyphens did not terminate a comment. -- is not
permitted inside a comment, but e.g. - - is.
Line 13, Column 3: Bogus comment.
<![endif]-->`
报告指出,评论中不允许出现连续的连字符。我们知道注释中的连续连字符是正确的,那么问题是什么呢?验证器将条件代码块视为注释。这是正确的,因为它以<!--
开始,以-->
结束。报告应该说你不能在评论里有*的评论于是,我将注释移到了条件注释的上方,并再次尝试验证。修改后的标记如下所示。`
`*
此验证成功;只剩下第三个错误,如下所示
Line 38, Column 42: Bad value 88px for attribute width on element img: Expected a digit but saw p instead. title="Valid CSS!" alt="Valid CSS!" /></a>Syntax of non-negative integer: One or more digits (0–9). For example: 42 and 0 are valid, but -273 is not.
:
查看标记,很明显出现了一个愚蠢的错误,如粗体所示
<p><a href="http://jigsaw.w3.org/css-validator/"><img src="img/vcss-blue.gif" ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/prac-h5-proj/img/U002.jpg) width="88**px**" height="31" title="Valid CSS!" alt="Valid CSS!"></a>![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/prac-h5-proj/img/U002.jpg) <span class="small"><br><br>Markup Validated by the World Wide Web Consortium</span></p>
The last paragraph of the report said that it saw a letter "P" instead of a number. The width of images in HTML tags can only be numbers. 88px
is very good in CSS stylesheets, but it is not a good tag when it is included in HTML pages. After px
is removed, the whole page is verified successfully.
视频文件会产生验证错误和警告
一个播放视频的 HTML5 文件被提交给验证器,验证器报告了 14 个错误和 2 个警告。这两个警告被忽略,因为它们与验证程序有关,而与页面无关。其中 12 个错误是相同的——12 个&符号被写成'&'
。验证器建议将&符号改为实体&
。使用“查找和替换”,十二个“与”符号变成了实体。然后,在几个浏览器中测试该页面,以检查其功能是否正常;幸运的是,它做到了。页面再次被提交给验证器。该报告只给出了两个错误,如下所示:
Line 20, Column 49: Element object is missing one or more of the following attributes: data, type. <object width='320' height='265' id='flvPlayer'>Attributes for element object: Line 24, Column 9: Stray end tag embed. </embed>
我注释掉了</embed>
标签,然后页面在浏览器中测试,然后重新提交给验证器。这一次,唯一的错误在第 20 行,这里的属性在<object>
标签中丢失了。
验证程序推荐了一个data
或一个type
属性。首先,一个Mime
type
被匹配到视频,这是一个冲击波文件。
在互联网上快速搜索发现了一个冲击波文件的 MIME type
;它被输入到代码中,如粗体所示。
<object width='320' height='265' id='flvPlayer' **type="application/x-shockwave-flash"**>
修改后的页面在浏览器中运行正常,并且验证成功。
找到字节顺序标记
Microsoft Expression Web 是创建标记的程序之一,这些标记会产生神秘的警告“发现字节顺序标记”。
字节顺序标记(BOM)是嵌入在utf-16
页中的字节序列。它确保您的 utf-16 文档能被 web 浏览器正确读取。不幸的是,默认情况下,MS Expression Web 会在不需要 BOM 的地方向utf-8
页面或 PHP 页面添加 BOM。
在 MS Expression Web 中,要防止 BOM 包含在新页面中,请按照下列步骤操作:
Click Tools and select the Page Editor Options dialog box.
On the authoring tab, check the contents under New Document.
Then add a byte order mark (BOM) to the new utf-8
document with these file extensions, and you will see a list of file extensions.
Clear the check box next to each file extension that you do not want BOM.
要从现有页面中删除 BOM,请执行以下操作:
Open the document in Expression Web.
In Code view, right-click anywhere, and then click Encoding.
In the text file encoding dialog box, clear the check box marked "Include a byte order mark (BOM)".
Save the page and upload it; And then re-verify.
注意 免费的 Notepad ++程序有一个 BOM 移除工具。加载页面,单击菜单上的“格式”,然后选择“转换为不带 BOM 的 UTF”。Notepad ++还提供了行号、颜色编码和许多其他用于编辑任何类型的 web 文档的强大功能。
检测到罕见或未注册的字符编码
如果您看到该错误消息,那么包含文本编码的 meta 标记中有一个错误。标记应如下所示:
<charset=utf-8>
很可能你省略了utf-8
中的连字符。
关于 PHP 页面,包含一些 PHP 代码是“罕见或未注册字符”错误消息的常见原因。要验证包含 PHP 的页面,字符集必须是windows-1252
,如下所示:
<charset=windows-1252>
验证可访问数据表:HTML4 和 XHTML 1.0 验证错误及解决方案
对于盲人和弱视者,任何数据表都必须出现在 XHTML 1.0 或 HTML4 页面上。在屏幕阅读器能够正确读取具有三列或更多列的 HTML5 数据表之前,这将是必要的。
以下部分主要处理 HTML4 和 XHTML 1.0 页面上的错误,但有些也适用于 HTML5 页面。本节只提到了少量的验证错误,因为有 447 个已知的错误,而且篇幅有限(请访问下面技巧中的w3.org
网站,查看所有已知的错误消息)。
提示 有关验证错误及其解决方案的列表,请访问网站[
line25.com/articles/10-common-validation-errors-and-how-to-fix-them](http://line25.com/articles/10-common-validation-errors-and-how-to-fix-them)
和[
validator.w3.org/docs/errors.html](http://validator.w3.org/docs/errors.html)
。虽然这些 URL 主要处理 HTML4 和 XHTML 1.0 验证错误,但有些也适用于 HTML5。
看到红顶报告中列出大量错误,您可能会感到震惊。验证器在页面顶部发现一个错误,然后它向下级联报告,多次重复相同的错误报告,有时使用不同的单词。例如,在验证有错误的页面时,这些错误可能会作为 XML 解析错误在报告中重复出现。只要忽略它们,当你纠正靠近报告顶部的错误时,它们就会消失。
一些最常见的验证错误信息
以下是一些最常见的验证错误消息:
OMITTAG NO :这是常见错误的前兆。查找未正确关闭的元素。
Line 78, Column 9: end tag for "html" omitted, but OMITTAG NO was not specified.
开始的结束标签应该出现在页面的最后一行。我漏掉了标签。
<p>
标签【XHTML 1.0 最常见的错误是<p>
缺少结束标签</p>
。****
****结束标签**:XHTML 1.0 中的一些结束标签与普通 HTML4 不同;必须用<br />
代替<br>.
标签<br />
称为自结束标签。所有的 XHTML 1.0 <meta>
标签和<img>
标签都必须用一个像这样的正斜杠…" />
结束。该报告陈述了这样的闭合错误:
Line 38, Column 10: end tag for "ul" omitted but OMITTAG NO was not specified.
这意味着在 HTML4/XHTML 1.0 页面中省略了结束标记尖括号>
,或者在 XHTML 1.0 或 XHTML5 页面中结束标记应该是/>
而不是>
。
当报告闭合错误时,即使只有一个闭合错误,也会有几个错误级联通过报告。修正错误,瀑布就会消失。
一个没有打开的元素 :闭包错误的反义词。
Line 87, Column 12: end tag for element "SPAN", which is not open.
这可能意味着您在文档的前面删除了一个内联标签,比如<span>
,但是忘记删除页面中它的结束元素。
小写 :记住 XHTML 1.0 标记必须全小写。验证器将会看到小写字母。
不正确的嵌套 :一些标签错误可能被描述为在不允许的地方。您可能将<ul> <li>
元素与表格元素<tr> <td>
混合在一起。错误消息将会显示如下内容:
Line 33, Column 32: document type does not allow element "li" here.
内嵌元素 嵌套:在下一个例子中,验证器说像<ul>
这样的块元素标签不能包含在<span>
标签中。
Line 52, Column 4: document type does not allow element "ul" here. **<span class="list">** <ul> <li>he Haven provides sheltered housing companionship in retirement</li> <li>Thirteen purpose built units for single or double occupancy</li> </ul> **</span>**
应该去掉<span>
标签,将类插入到<ul>
标签中。
此处不允许的其他错误是用内嵌标签包围块元素的结果。例如,用<span>
标签、<b>
标签或<strong>
标签包围一个无序列表。
*弃用的标签和属性 :错误报告会发现 HTML4 或 XHTML 1.0 中不再接受的弃用元素;例如:
Line 32, Column 7: there is no attribute "CENTER".
这意味着中心 在 HTML 标记中不再被接受;必须使用样式表使元素居中。
W3C 验证程序更有帮助的解释示例:
Line 137, Column 19: value of attribute "ALIGN" cannot be "ABSBOTTOM"; must be one of "TOP", "MIDDLE", "BOTTOM", "LEFT", "RIGHT". align="absbottom" width="199" height="231">
有些属性(如 align)不再适用于将文本与图像对齐,只接受顶部、中间、底部、左侧和右侧。
alt :验证器会报告"alts"
图像丢失。
有些报道不明确;例如:
Line 25, Column 39: document type does not allow element "li" here; missing one of "ul", "ol", "menu", "dir" start-tag . <li>Home page<li>.
我忘记了在结束标签中加一个正斜杠,就像这样</li>
。
出现了一些误报,如下例所示:
Elements not allowed here Line 23, Column 9: document type does not allow element "h2" here; missing one of "object", "applet", "map", "iframe", "button", "ins", "del" start-tag . <h2>some heading text was here</h2>
我查看了第 23 行,没有发现错误;h2
元素已正确关闭。然后我查看了附近的行,发现在第 22 行,没有一个<p>
元素的结束</p>
标记。错误报告的错误通常可以通过查看未关闭的<p>
报告行的上方和下方来修复。***
***提示你会得出结论,报告的错误并不总是像它们看起来那样。您需要通过查看错误行之前或之后的行来确定报告应该说些什么。就像纵横字谜中的神秘线索一样,通过练习,你会认识到这些模式,并知道如何纠正编码错误。
The。nu HTML5 验证程序
替代验证网站是[
html5.validator.nu](http://html5.validator.nu)
我发现这相当容易使用,但是它的报告不如 W3C 验证器的信息丰富。W3C 验证器实际上使用了.nu
验证器作为其代码扫描过程的一部分。我倾向于只使用 W3C 验证器,但这可能是因为我对它太熟悉了。你不应该让我个人的偏好阻止你探索.nu
验证器。它在不断改进,它的界面是不言自明的。整洁的界面如图图 18-5 所示。
图 18-5。 美国。nu 验证器的界面
在撰写本文时,.nu
验证器没有提供 HTML5 徽标。为此,您需要访问 W3C 徽标网站。然后,您将需要添加我的代码片段,使用户能够检查验证。
注意 在撰写本文时,W3C HTML5 和 XHTML5 验证器以及.nu
验证器都是“高度实验性的”此外,随着时间的推移,.nu
验证器的外观会随着每次更新而改变。XHTML5 页面的.nu
祝贺消息指出被检查的文件是 HTML5,反之亦然。在编写本文时,.nu
验证器只会产生一个 HTTP 错误 415,并且拒绝验证任何 HTML5 文件。这有望在本书出版时得到纠正。
验证 CSS2
转到[
jigsaw.w3.org/css-validator/](http://jigsaw.w3.org/css-validator/)
,你会发现一个类似于 HTML 验证器的界面,但是标题是 CSS 验证服务。
如果你的 CSS 页面已经上传到你的网络主机 ,使用以下格式输入你想要验证的 CSS 样式表的 URL:[
www.mywebsite.co.uk/mystylesheet.css](http://www.mywebsite.co.uk/mystylesheet.css)
。
单击"检查"按钮,等待几秒钟。最终会出现一份报告如果 CSS 页面尚未上传到您的 web 主机,请单击文件上传选项卡,在您的计算机上浏览到该页面的文件,并加载它。然后单击“检查”按钮。
或者单击"通过直接输入验证"选项卡,并将半铸钢ˌ钢性铸铁(Cast Semi-Steel)页面标记粘贴到提供的字段中。然后单击"检查"按钮
如果标记未能通过验证,您将得到有关错误的提示。如果它通过验证,你会得到一个标志放在你的网页上。
下面的例子可能令人困惑:
`29 li.btn a Same color for background-color and border-right-color
29 li.btn a Same color for background-color and border-top-color
29 li.btn a Same color for background-color and border-left-color
30 li.btn a:hover Same color for background-color and border-top-color
30 li.btn a:hover Same color for background-color and border-left-color
30 li.btn a:hover Same color for background-color and border-right-color
32 li.btn a:active Same color for background-color and border-top-color
32 li.btn a:active Same color for background-color and border-left-color
32 li.btn a:active Same color for background-color and border-right-color
35 Same colors for color and background-color in two contexts li.btn a:active and
菜单 3D 按钮的起始边框颜色已设置为与背景颜色相同。可以安全地忽略这些警告,但是如果您愿意,可以通过稍微更改开始的边框颜色使其不同于背景颜色来消除错误。
如果文本和渐变背景使用相同的颜色,CSS 样式表也将无法验证。例如,如果背景是带有绿色背景渐变的白色,并且文本也是白色。验证器忽略渐变,将真实背景(白色)与文本(白色)进行比较。它会将此报告为错误。
CSS3 验证和供应商特定错误
要验证 CSS3 样式表,请转到[
jigsaw.w3.org/css-validator/](http://jigsaw.w3.org/css-validator/)
。
注意 对于 CSS3,必须点击更多选项按钮。为您的标记条目选择一个选项卡。然后单击 Profile 字段中的下拉箭头,并选择 CSS Level 3。
If your CSS page has been uploaded to the network host , use this format.
[
www.mywebsite.co.uk/mystylesheet.css](http://www.mywebsite.co.uk/mystylesheet.css)
键入你想要验证的 CSS 样式表的 URL。
单击"检查"按钮,等待几秒钟。最终会出现一份报告如果 CSS 页面尚未上传到您的 web 主机,请单击文件上传选项卡,在您的计算机上浏览到该页面的文件,并将其加载。然后单击“检查”按钮。
或者单击"通过直接输入验证"选项卡,并将半铸钢ˌ钢性铸铁(Cast Semi-Steel)页面标记粘贴到提供的字段中。然后单击"检查"按钮
CSS3 验证器将报告样式表中任何供应商特定项目的错误;即-mozkit-
、-webkit-
等项目。这是您所期望的,因为特定于供应商的项目不是 W3C 推荐的;验证器的作用是检查是否符合 W3C 推荐标准。这样的错误将会继续被报道,直到浏览器厂商支持 CSS3 并放弃他们特定的攻击。尽一切办法玩 CSS3,但也许你应该忘记 CSS3 和它在客户网站上的验证标志,直到这些黑客不再需要,当 IE 7 和 IE 8 最终过期。同时,在客户的网站上使用 CSS2。
例如,测试了一个 CSS 样式表,验证器给出了一个带有红色横幅的报告。典型故障报告的内容如图 18-6 所示。
图 18-6。 CSS3 表的 CSS 验证报告
我检查了提交的代码,发现了错误和警告,如下面粗体文本所示:
(1) table { width: 500px; border:1px black solid; border-collapse:collapse; } (2) td { border:1px black solid; padding:0 **5px;**0 5px } (3) th { border:1px black solid; } (4) caption { font-weight:bold; } (5) table tr:nth-child(even) { **background-color: #C8F0F0;** } (6) .right { text-align:right; }
在第 2 行中,5px 后面的分号应该位于行尾,如下所示:
td { border:1px black solid; padding:0 5px 0 **5px;** }
关于第五行的警告建议总是指定文本颜色和背景颜色。这一行应该是:
table tr:nth-child(even) { background-color: #C8F0F0; **color:black;** }
当修正后的 CSS 代码被重新验证时,它给出祝贺信息,如图图 18-7 所示。这个案例中的横幅是绿色的。
图 18-7。 W3C CSS3 验证程序显示验证成功
在撰写本文时,CSS3 的验证标志还不可用,但正如你在图 18-7 中看到的,你可以看到传统的 CSS 标志和代码,使用户能够验证验证。
总结
在本章中,您发现了验证对于故障排除和确保代码在各种设备上正常运行是多么有用。提供了一个代码片段来嵌入 HTML5 徽标,使用户能够检查页面是否经过真正的验证。您还了解了从验证器收到的报告可能相当神秘,为了熟悉它们的含义和解决方案,需要进行一些练习。
在下一章,你将学习如何处理设计网站时出现的一些问题。故障排除是 web 开发的一个重要方面;下一章的提示和捷径将会节省你的时间和挫折。***
十九、故障排除
这一章旨在帮助你找到那些占据了网页设计师大量时间的难以捉摸的问题。它涵盖了最常见的问题和测试方法。本章没有涉及的问题通常可以通过 W3C 验证器运行问题页面或者将问题发布到搜索引擎中来解决。
测试你的页面
在你的电脑上安装五种主要的浏览器——Internet Explorer、Mozilla Firefox、Safari、Chrome 和 Opera。将它们的图标放在桌面上,并在工作时在每个浏览器中测试您的页面。如果你使用 IE 9,你需要 IETester 工具来测试 IE 6、IE 7 和 IE 8 中的网站。或者你可以在另一台电脑上用 XP 和 IE 8 进行测试。
一些勇敢的设计者在他们的计算机上安装 Apache 本地主机来测试 PHP 表单和计数器。我花了很多令人沮丧的时间试图安装 Apache,但没有成功;有时它会工作两三个星期,但最终失败了。一个更简单快捷的解决方案是,使用 Mozilla Firefox 查看存储在计算机上的 PHP 页面。要测试 PHP 反馈表单或 PHP 页面计数器的交互性,请在您现有的网站主机上创建一个测试文件夹。然后将交互文件上传到测试文件夹并运行;与花几个小时安装 Apache 相比,这大约只需要两分钟。
提示 这个漂亮的 IETester 工具是无价之宝,对于在旧版本的 ie 浏览器上测试你的网页来说,它是一个真正的省时工具。从[
www.my-debugbar.com/wiki/IETester/HomePage](http://www.my-debugbar.com/wiki/IETester/HomePage)
下载并安装。这个工具是免费的,但是非常值得捐赠。关于其他一些好的测试资源,请访问位于[
browserlab.adobe.com/en-us/features.html](https://browserlab.adobe.com/en-us/features.html)
的 Adobe BrowserLab 和位于[
netrenderer.com](http://netrenderer.com)
的快速“版本检查器”。
使用 IETester 可能会令人困惑。似乎无法打开存储在计算机文件夹中的网页。首先,您需要在浏览器中加载页面。然后从浏览器的地址栏中选择并复制它的地址(Ctrl+C)。它应该像下面这样开始:
file:///C:/Documents%20and%20Settings/User/…
或者像C:\Documents and Settings\User\My Documents\BOOK\Ch10 \filename
。
打开 IETester,点击其中一个标签,(比如 IE 6)。您将在地址栏中看到一个蓝色的网址。不要点它;只需按 Ctrl+V 将地址替换为您的文件位置,然后按 Enter。单击另一个选项卡(比如 IE 7),重复 Ctrl+V 并按 Enter。一旦一个页面被加载到 IETester 中,您就可以点击它的导航按钮,用 IETester 测试站点上的其他页面。
当使用 IETester 时,偶尔会弹出一条错误消息,说程序需要关闭,但这是一个 bug,它实际上并没有关闭程序。
大多数所见即所得的网页编辑器都有错误检查 功能。比如 MS Expression Web 有一个优秀的错误检查器;在“代码”视图中按 F9 键会逐步显示并解释错误。
如果你有一个关于浮动下降或者定位 的问题,这个提示可以帮助你找到原因。在问题页面的标题部分添加一个临时行,如下所示:
``
在浏览器中查看时,块元素将被红色边框包围;这可以揭示你的问题的原因。
其他测试方法和工具包含在相应的章节中。例如,第十八章展示了如何测试你的代码是否符合 W3C。第十四章给出了残疾人可以进入的考场信息。
如果浏览器将页面视为没有文档类型
这表明DOCTYPE
不是页面上的第一行。在DOCTYPE
之前不能有任何东西,甚至不能是空行。如果这个错误存在,浏览器将使用怪癖模式来显示页面,您可能不会喜欢这个结果。然而,可以将一段 PHP 代码放在DOCTYPE
之前,而不会产生负面影响。
如果您有定位问题
元素可能不会出现在页面上您希望它们出现的位置。以下是一些例子:
The left navigation menu appears on the right side of the screen: try to put one or more <br>
labels before <div>
or <nav>
containing the menu.
The image will not stay at the position: sometimes it is centered instead of left aligned, and vice versa. Check the stylesheet and delete any image positioning styles that cause misalignment. The stylesheet can contain two image alignment instructions; The web page will follow the last of the two.
The page can't be displayed normally in WYSIWYG webpage design program : In this case, the page viewed in various browsers may be displayed normally in all browsers. Some WYSIWIG programs are not completely accurate in displaying the appearance of web pages in the browser.
如果有横向菜单问题
以下是两个最常见的水平菜单问题:
One of the buttons dropped, especially when viewed in Internet Explorer 6.
One button increases the depth, or one button becomes two buttons.
这些故障如图 19-1 所示。
图 19-1。 首页按钮有故障的横向菜单
这些故障也可能是由 IE 6 引起的,因为它使用的默认字体比任何其他浏览器都大。较大的字体扩大了按钮的宽度,因此菜单对于其容器来说太宽了。为了解决这个问题,你只需要为 IE 6 指定一个较小的字体。创建一个名为ie6style.css
的特殊附加样式表。它只需要包含来自mainstyle.css
的#
容器或#菜单代码,但是将它的字体大小从中等改为较小,如下面的粗体所示:
#container{text-align:center; background-color:#D7FFEB; font-family: "times new roman"; **font-size: small;** color: #000000; margin: auto; width:95%;}
在 HTML 的 head 部分,插入一个条件链接(以粗体显示)。将它放在其他链接的下面,如下面的代码片段所示。
`
<title>Home page …</title>
*meta details go here*
<link rel="stylesheet" type="text/css" href="mainstyle.css" media="screen">
**<!--[if lte IE 6]>**
**<link rel="stylesheet" type="text/css" href="ie6style.css" media="screen">**
**<![endif]-->**
<link rel="stylesheet" type="text/css" href="print.css" media="print">
</head>`
还有另外两个问题需要考虑。弱视用户可以用自己的样式表增加字体大小。请注意这一点,并尝试在按钮上为更大的文本尺寸留出足够的空间。
如果水平菜单拒绝在页面上居中,确保在样式表中将<ul>
块的容器设置为text-align:center;
。
如果你的服务器有问题
反病毒警报:“威胁被阻止。”这是一个真正的警报,因为您没有故意在您的网站中构建任何恶意软件。但是一些卑鄙的家伙入侵了你的网站,并在一个或多个页面中插入了一些 JavaScript 代码。使用您的 FTP 程序下载页面,并查找 JavaScript 片段。流氓脚本通常位于标签<body>
之后。
典型的流氓脚本如下所示:
<!-- ad --><script language='JavaScript' src='http://powergym.be/xxxxfs31dj.js'>![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/prac-h5-proj/img/U002.jpg) </script><!-- /ad -->
这种情况不会发生在像样的主机上,但偶尔会发生在安全意识较差的主机上。作为预防措施,请始终使用包含特殊字符和数字的更长、更复杂的密码。但是,如果问题已经发生,补救措施是登录到主机上的控制面板,将 FTP 密码更改为更复杂的密码。然后使用您的 FTP 客户端上传所有受感染页面的干净副本。然后联系主机大声抱怨,直到它让它的服务器更安全。
如果主机服务器突然不接受你的 FTP 密码,可能是因为上一段描述的同样的问题;解决方法是一样的。
如果您遇到浏览器变异问题
如果您的页面在一个或多个浏览器中显示不正确,不要认为问题是您的错。我花了两个小时追踪一个问题,结果发现是 Mozilla Firefox 的一个 bug。最右边的列显示在中间的容器中。一次偶然的机会,我在另一台使用火狐浏览器的电脑上查看了这个页面,它没有问题。答案?每台电脑都有不同版本的 Firefox。旧的火狐版本是问题所在;通过更新到最新版本,页面显示正确。总是在浏览器的最新版本和之前的版本上进行测试。
另一个问题可能是,在 Mozilla Firefox 中,可打印页面或屏幕上的方形复选框显示为圆形。在显示订单等可打印页面的屏幕上,使用 Wingdings 或 Webdings 的方形复选框在 Firefox 中不起作用。几乎每台计算机都有 Lucida Sans Unicode 符号。通过使用这种字体,复选框可以在所有流行的浏览器中正确显示(见图 19-2 )。
图 19-2。 这是这个盒子在所有流行浏览器中的外观
盒子的代码是□
,如清单 19-2 所示。当打印包含勾选框的反馈表单或订单表单时,此代码使框能够正确打印。
清单 19-2。【tickbox-printer.html 创建在 Mozilla Firefox 中正确显示的复选框
`<!doctype html>
This is a box styled with Unicode Lucida font
The tick box shown below is styled with Unicode Lucida and it is formatted as ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/prac-h5-proj/img/U002.jpg)
xx-large and bold
□
`
是否应该排查 IE 6 等老浏览器的问题?
这取决于目标受众以及是否可能使用较旧的浏览器。在英国和美国,只有不到 2%的电脑用户仍然使用 IE 6 上网。然而,你可以接受一个使用 IE 6 的客户(例如,一些政府部门和一些地方政府服务)。
大多数设计师现在都忽略了 IE 6,理由是微软发起了一场强有力的运动,让人们不再依赖它。Mozilla、Chrome、Safari 和 Opera 的用户通常会下载最新版本的浏览器。
提示 访问 Stat Counter Global Stat ( [
gs.statcounter.com](http://gs.statcounter.com)
)查看最新统计数据,评估浏览器流行趋势。选择条形图版本,以便更清楚地了解当前情况。选择趋势的折线图版本。
另见[
marketshare.hitslink.com/browser-market-share.aspx?qprid=3](http://marketshare.hitslink.com/browser-market-share.aspx?qprid=3)
。有关 2012 年全球浏览器使用百分比的表格,请参见附录。各个组织的统计数据各不相同。我们永远不会知道哪些是最可靠的,但你将能够发现非常有用的明确趋势。
浏览器可能会有微小的显示差异
IE 6 不识别max-width
和min-width
。如果客户使用 IE 6(例如,一些地方政府部门可能会被时间扭曲),你需要给它的网站页面固定的宽度。
消除小的分歧。尽管最新的浏览器符合 W3C 标准,但仍然存在一些小的差异,特别是在边距和填充方面,这些差异可以通过在样式表的开头包含一个重置来避免,就像 David Sawyer McFarland 在CSS:The Missing Manual (O ' Reilly,2009)中展示的那样。
/*reset all browsers to a common standard*/ html, body, h1, h2, h3, h4, h5, h6, p, ol, ul, li, pre, code, address, variable, ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/prac-h5-proj/img/U002.jpg) form, fieldset, blockquote { padding: 0; margin: 0; font-size: 100%; font-weight: normal; } table { border-collapse: collapse; border-spacing: 0; } td, th, caption { font-weight: normal; text-align: left; } img, fieldset { border: 0; } ol { padding-left: 1.4em; list-style: decimal; }
在 IETester、IE 9、Mozilla Firefox、Chrome、Opera 和 Safari 中创建页面时测试它们。
如果屏幕上出现奇怪的符号
这些可以采取正方形的形式。检查符号在屏幕上出现的位置处的标记。用字符实体代替引起问题的符号。例如,英国符号将显示为正方形。用字符实体£
替换符号。
如果你改变了 CSS,但它看起来是一样的
这可能会令人沮丧。有两个常见的原因。
第一个原因是浏览器缓存已经存储了以前的样式表,因此,您看到的是旧样式表的结果。要查看由修改后的样式表设计的页面,请使用浏览器的刷新按钮,或者在 IE 和 Chrome 中尝试 Ctrl+F5。在 Firefox 中尝试 Ctrl+Shift+R。
第二个原因是样式、<link>
和 JavaScript 在<head>
部分中的顺序不正确。标记中出现的顺序应该遵循一个计划。
以下代码片段显示了包含在<head>
部分中的项目的正确顺序:
`<!doctype html>
Correct order for head items
*meta details go here*
`
代码片段显示,如果页面链接到多个基于设备的样式表,链接的顺序应该是手持、屏幕和打印。如果某个页面有特定页面的内部样式(例如,在前面的清单中,用白色背景和黑色文本显示页面),该样式应该在主样式链接之后。条件样式和 JavaScript 应该放在最后。
一般规则是最后一种风格胜出。在前面的代码片段中,计算机屏幕上的显示很大程度上是由屏幕链接决定的,内部样式只覆盖主页的颜色和文本颜色。只有当访问者使用 IE 8 或 IE 的早期版本时,条件和 JavaScript 才会生效。
如果您遇到浮动下降
浮动元素可能会受到浮动下降的影响;也就是说,一个元素下降到了它原本要占据的位置之下。这可能发生在以下两种相关情况下:
Static : When the width of the container is not enough to accommodate the lateral contents.
Dynamic : When the browser window is horizontally reduced by the user, the width is not enough to accommodate the content in the horizontal direction.
任何包含固定宽度元素的水平行的页面都可能遭受浮动丢失。本例中选择的页面包含一个菜单块和水平行中的三个图像。图 19-3 显示了预期的显示。
我非常感谢艺术家安·罗·琼斯,她友好地允许我使用她给人留下深刻印象的肖像照片。我为她设计的网站使用了这些肖像图片。请务必访问她的网站[
www.annroejones-artist.co.uk](http://www.annroejones-artist.co.uk)
图 19-3。 没有浮动下降的显示
图 19-3 没有飘降,但是图 19-4 演示飘降:女孩的画像滑落到了另外两张画像的下方。
图 19-4。一幅肖像落在了其他肖像的下方。
放下的肖像会在其他肖像的右侧留下一大片空白。如果您认为可以通过将图像的宽度和菜单块的宽度相加来设置页面容器的最小宽度,这是情有可原的。然而,还有隐藏的额外费用。像图像和菜单块这样的项目可能有水平填充、边框和边距。这些项目都增加了宽度。你可以决定这些额外的尺寸,并设置容器的最小宽度。
我发现设置最大和最小容器宽度来匹配最流行的屏幕尺寸和分辨率更快更方便。然后我让水平元素适合最小的容器宽度。这可以通过在图形程序中裁剪或调整图像大小,和/或调整菜单块和图像的水平边距和填充来实现。
从本书的页面[
www.apress.com](http://www.apress.com)
下载故障排除章节的文件和文件夹。在浏览器中查看文件portraits-drop.html
( 清单 19-4a )。然后水平缩小浏览器的窗口,看到女孩的图像下降到其他人的下方。
清单 19-4a。【portraits-drop.html 演示飘降的例子
`<!doctype html>
Float drop test
*meta details go here*
` `
SOME PORTRAITS BY ANN ROE (JONES) SWAc
Professor Robert Clements OBE
Reuben
Megan
All of Ann's portraits are painted in oils on canvas.
For information on commissioning a portrait, click the ' ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/prac-h5-proj/img/U002.jpg)
Commissions' button
Click the 'Contact Ann' button to request more detailed ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/prac-h5-proj/img/U002.jpg)
information.
`
在清单 19-4b 中,容器的min-width
(以粗体显示)导致了浮动下降,因为它太小了,无法包含所有的水平元素。
在 ( portraits-drop.css
)你在[
www.apress.com](http://www.apress.com)
从书的页面下载的 CSS 表中,把容器的宽度从 850 像素改成 960 像素,看看这是如何防止浮动下降的。
清单 19-4b。 清单 19-4a 的 CSS 样式表
`/set attributes for consistent appearance in all browsers /
p, ul, li, h1, h2 {margin:0; padding:0;
}
img { border:0;
}
/add display attributes for the semantic tags /
header, footer, section, article, nav { display:block;
}
/A container width that prevents float drop /
/#container {min-width:960px; font-family:"times new roman"; font-size:medium; color:black; margin:auto; max-width:1050px;
} /
/* A container width that causes float drop*/
container {min-width:850px; font-family:"times new roman"; font-size:medium; color:black; margin:auto; max-width:1000px;
}
header {width:100%; margin:auto; height:60px; text-align:center;
}
midcol-portraits {margin-left:165px; margin-right:15px;
}
figure { float:left; margin-right:5px; display:inline;
}
figure p { font-size:80%; height: 15px; margin:0 auto 0 auto; text-align:center;
width:200px;
}
gallery img { margin-right:20px; margin-top:5px;
}
aside { float:left; width:260px;
}
footer {clear:both; text-align:center;
}
/* set side menu position /
nav {float:left; margin-left:0; width :135px; padding:0; zoom:1;
}
/ set general side button styles /
nav ul li{ margin-bottom: 4px; text-align: center; list-style:none;
}
/ set general anchor styles /
nav ul li a { color: white; background:#D20B0D; font-weight: bold; text-decoration: none
}
/ specify state styles /
/ mouseout (default) /
nav li a { background: #D20B0D; border: 4px outset #FFAAAA; display:block;
}
/ mouseover /
nav li a:hover { background: maroon; border: 4px outset maroon;
}
/ onmousedown */
nav li a:active { background:#AECBFF; border: 4px inset #AECBFF;
}
h1 {font-size:300%; font-weight:bold; color:#D20B0D; margin-top:0; margin-bottom:0; font-family:"Calligraph421 BT"; font-style:italic; text-align:center;
}
span.swac {font-size:x-large; font-weight:bold; color:#D20B0D;
font-family:"Calligraph421 BT"; font-style:italic; text-align:center;
}
h3,h4 { margin-top:0; margin-bottom:0;
}
h2 {font-size:x-large; font-weight:bold; margin-top:0; margin-bottom:0;
}`
通过将容器的min-width
改为890px
,防止了浮子掉落。
如果一个 HTML5 页面在 IE 7 和 IE 8 中没有样式
你改变了风格,在 IE 7 和 IE 8 的显示中什么也没发生。可能的原因有以下几种:
The JavaScript file html5.js
of Remy Sharp has not been uploaded to the folder of the server.
JavaScript is not called in the <head>
part of the HTML page. It should read as follows: <!--[if lte IE 8]> <script src="html5.js"> </script> <![endif]-->
The following line is omitted from the CSS page of the link: header, nav, article, footer { display:block; }
Maybe you enclosed the condition in the style label of the style sheet or internal style. The HTML tag must contain a condition.
如果数据表有双边框
虽然您将不再使用表格进行页面布局,但表格是显示数据的推荐和基本工具。默认表格在单元格边框周围显示双线。这是相当不吸引人的,而且有点过于繁琐。图 19-5 显示了这些边界是如何被一个默认的 2 像素间隙分开的。
图 19-5。 双边框数据表
清单 19-5 产生了双边框。主要的 WYSIWYG 网站编辑器有一个表格对话框,可以消除这种差异。学生和初学者经常不能勾选对话框上的将消除间隙的框;通常这是因为他们还不理解 CSS 属性border-collapse
的含义。
清单 19-5。【default-table.html 创建双边框默认数据表
`<!doctype html>
Default table
` `
`
要移除边框之间的 2 像素间隙,请更改 CSS 样式以包含属性border-collapse:collapse;
。这合并了两个边界,在每个单元格周围给出了一条单独的、无间隔的线,如图 19-6 所示。
图 19-6。 将双边框折叠成单边框
下面的 CSS 片段替换了清单 19-5 中的 CSS 样式来折叠边框。border-collapse
项以粗体显示(collapsed-table.html
)。
<style type="text/css"> table, tr, td { width: 600px; border: 1px solid #000000; **border-collapse:collapse;** } </style>
如果网站所有者没有收到安全反馈表的回复
网站的所有者抱怨她没有从安全表单收到任何反馈(如第十一章所述)。原因显然是忘记在表单处理程序中切换电子邮件地址。相信我,这是真的。web 设计者急于通知所有者表单可以工作(当用他自己的电子邮件地址测试时),以至于忘记交换地址,或者他更改了地址但忘记上传修改后的版本。
如果您看到以下代码,请检查处理程序:
<?php // -------- SET THE EMAIL HEADINGS ------------------------ /* set the recipient’s email address (i.e., the person you want to send the feedback to) //$mailto = "***your-client@her-isp.co.uk***" ; $mailto = "***me@my-isp.co.uk***" ;
按如下方式交换注释掉的斜线:
<?php // -------- SET THE EMAIL HEADINGS ------------------------ /* set the recipient’s email address (i.e., the person you want to send the feedback to) $mailto = "***your-client@her-isp.co.uk***" ; //$mailto = "***me@my-isp.co.uk***" ;
别忘了上传修改后的处理程序。
总结
在本章中,您学习了如何测试您的页面,以及如何对开发网站时出现的一些最常见的问题进行故障排除。如果您遇到模糊的问题,通常可以通过验证第十八章中描述的页面进行诊断和解决。互联网论坛提供了另一种可能性。尝试在搜索引擎中输入问题,或者注册成为网页设计师论坛的成员。
本章后面有一个附录。它包含了 CSS2 和 CSS3 的快速参考部分,关于在页面上定位元素的提示,插入 IE 条件的提示,HTML 元素的排序说明,以及浏览器流行度的统计表。它还包含关于设置 MIME 类型的建议和一个通用实体表。
二十、附录:快速参考、技术和有用的数据
本附录有以下三个主题:
Quick reference chapter . Why do readers of this book want such basic information? Because even the most experienced web designers will have short-term amnesia. It is convenient to remind the basic principles in one place of a book; It saves time searching in several books, chapters or the Internet.
Technical summary . This paper summarizes some useful technologies, such as positioning, floating, tag sorting and ensuring that MIME type is set on the server.
Table information . Include useful data tables so that you can find information about character entities and browser statistics.
快速参考章节
HTML5 和 XHTML5 快速参考
HTML5 和 XHTML5 的文档类型比早期的表单简单得多。
| **对于 HTML5:** | `
HTML5 test document
*meta details go here*
` |
| **对于 XHTML5:** | `
XHTML5 test document ` `
meta details go here
` |
注意 对于标记为 XHTML5 的页面,可以使用更简单的 HTML5 DOCTYPE。
对于英语以外的语言,请访问[www.w3.org/International/questions/qa-choosing-language-tags.en](http://www.w3.org/International/questions/qa-choosing-language-tags.en)
或[www.w3.org/blog/International/tag/qa-choosing-language-tags/](http://www.w3.org/blog/International/tag/qa-choosing-language-tags/)
验证
这两种文档类型都将在 W3C 验证器([
validator.w3.org](http://validator.w3.org)
)或.nu
验证器([
html5.validator.nu](http://html5.validator.nu)
)中进行验证。
在撰写本文时,这两种验证器都是实验性的。那个。XHTML5 检查的 nu 祝贺消息表明检查的文件是 HTML5,反之亦然。这应该在本书出版时得到纠正。参见第十八章,其中涵盖了验证的全部细节。
如果选择使用 XHTML5 标记,应该遵守 XHTML 中的自结束标记和双引号规则。如果你像我一样喜欢使用 HTML5 标记,生活会变得更容易;您可以忘记自结束标记和双引号以及许多其他以前的标记要求。例如,要指定语言,使用<html lang=en>
;要指定字符集,请使用<meta charset=utf-8>
。不需要为 JavaScript 指定 MIME 类型,因为新浏览器,由于 HTML5,不再需要被告知 JavaScript 文件是type="text/javascript
。
CSS2 快速参考
有关 CSS 的更多信息,请尝试以下手册:
用可扩展的超文本标记语言开始超文本标记语言和 CSS 作者克雷格·库克和大卫·舒尔茨(阿普莱斯,2006 年).
ProCSS and HTML Design Pattern Author Michael Bowles (April, 2007).
[ CSS: Missing Manual 2nd edition, by David Sawyer McFarlane (O'Reilly Media, 2009).
在[
www.apress.com](http://www.apress.com)
还有很多其他的标题。访问该网站,在搜索框中键入“css”或“html”。
美国拼写必须用于三个属性
使用gray
、center
、color
;不像英国、澳洲和纽西兰的grey
、centre
和colour
。
CSS 选择器的四个主要类别
以下是 CSS 选择器的四个主要类别:
id
(identity)
class
span
group
身份(id)
在 CSS 样式表中,用散列符号写了一个id
选择器;例如:
#credits {font-size:small;}
每页仅使用一个id
。
在这种情况下,网页上的目标将是<div id="credits">
类(。)
在样式表中,类选择器以句号开头;例如
.bigblue {font-size:xx-large; color:blue;}
这个类会产生一个蓝色的大字体。您可以在每页上使用任意多个相同的类。
在这种情况下,网页中的目标是
<p class="bigblue">The Sausage Shop</p>
跨度<跨度>
跨度选择器在页面中内联使用,用于定位较大元素中的小元素,例如段落中的几个单词。CSS 的一个例子是
span.redfont {color:red;}
这将把一段文本变成红色。A <span>
不会像标签<div>
和<p>
以及标题hi
、h2
、h3
等那样在一行文本的上下添加行间距;每页使用尽可能多的相同跨度。
本例中的 HTML 目标是
<p>We hope you will visit <span class="redfont">The Sausage Shop</span> very soon</p>
分组目标
可以在每个标签后使用逗号将样式表选择器分组。本示例将所有标题的边距和填充设置为零。
h1, h2, h3, h4, h4, h5, h6 {margin:0; padding:0 }
特定群体目标
通过在选择器中选择一个选择器,选择器可以变得更加具体,但是没有逗号。例如:
header strong {color:blue;}
在这种情况下,选择器的目标是包含在<strong>
标签中的一些文本,但是只有当<strong>
标签本身包含在一个 header 标签中,如下所示:
<header><strong>some text</strong></header>
单词some text
将被涂成蓝色。这个选择器的行话是后代选择器 。<strong>
标签是<header>
标签的后代。
其他目标
HTML 标签如<img>
、<html>
、<body>
、<ul>
都可以是目标;它们就像特殊的<div>
一样。例如,下面这段样式去除了所有图像的边框:
img { border:none; }
下一种样式设置网站上每个页面的总体外观。
body { font-family:arial; font-size:medium; background:#FFF; color:#000;}
锁定超链接
链接的外观和行为应该由样式表决定。CSS 可以是
/*set the hyperlink colour to blue and the font size to mediuml*/ a.small-normal:link { color: blue; text-decoration:none; font-weight:normal; font-size:medium; } a.small-normal:visited { color: blue; text-decoration: none; font-weight:normal; font-size:medium; } a.small-normal:hover { color: red; text-decoration: none; font-weight:normal; font-size:medium; } a.small-normal:active { color: blue; text-decoration: none; font-weight:normal; font-size:medium; }
在这个例子中,目标链接将是蓝色的,以使它从默认的黑色文本中突出出来,并且它不会被加下划线,因为文本装饰被设置为“none”。当鼠标指针悬停在链接上时,链接将从蓝色变为红色。
前一种样式对应的 HTML 可能是
<a title="Computer Jargon explained" href="jargon.html">Go to Jargon page</a>
如果您希望链接在悬停时加下划线,请按如下方式更改悬停条件的文本装饰:
a.small-normal:hover { color: red; **text-decoration: underline;** font-weight:normal; font-size:medium; }
使用 3D 按钮定位滚动导航菜单
以下代码片段使用一个无序列表来生成 3D 菜单按钮(第四章给出了工作示例):
nav {position:absolute; top:100px; left:3.6%; width: 866px; padding: 5px; ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/prac-h5-proj/img/U002.jpg) list-style: none; overflow: hidden; height: 35px; }
nav li { display:inline; padding: 5px; padding-top:15px; margin:5px 0 0 2px; ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/prac-h5-proj/img/U002.jpg) height:25px; width:100px; } nav a {height:25px; width:100px; color: #fff; font-size:80%; font-size: 100%; ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/prac-h5-proj/img/U002.jpg) font-weight:bold; text-decoration: none; background-color: #72b720; ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/prac-h5-proj/img/U002.jpg) border: 4px outset #5edd51; padding:5px 5px 0 5px; display: inline-block; } nav a:hover { font-weight: bold; background-color:green; color:white; } .clear { clear:both; }
伪元素前的
CSS 可以生成一段特殊的高亮文本,并将其放在所选段落的开头,如图图 App-1 所示。单词注释 是用彩色框中的白色文本生成的。
图 App-1。 生成内容
IE 7 不支持伪元素:before
。清单 App-1 有一个内部 CSS 样式,而:before
的伪样式以粗体显示。
清单 App-1。【为段落中的第一个单词创建特殊效果(css2-before.html)
`<!doctype html>
<title>Generate some content before a selected paragraph</title>
<meta charset=utf-8>
*meta details go here*
<style type="text/css">
p { font-size: 100%; }
**.note:before { content:"Note: "; background-color:red; color:white;}**
</style>
</head>
<body>
<p>surrounding paragraph</p>
<**p class="note">**The text with the coloured background<br>is generated with CSS2 ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/prac-h5-proj/img/U002.jpg)
but is not supported by IE 6 and IE 7.<br>The class "note" is targeted by the ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/prac-h5-proj/img/U002.jpg)
<br>pseudo-element <strong>:before</strong></p>` `<p>surrounding paragraph</p>
</body>
</html>`
更广泛的命名颜色
最初,只有 17 种命名的颜色可用。这个数字大大增加了,像巧克力,黑鲑鱼,蜜露这样的名字可以用来代替 RGB 或十六进制颜色。
如需完整列表,请访问[
somacon.com/p142.php](http://somacon.com/p142.php)
。
排序标记:什么在<头>部分中排在第一/最后?
某些项目必须以特定的顺序出现在标记的<head>
部分,否则您可能会遇到意想不到的结果。首选顺序如下。
链接到不同的媒体
`
`
注意 print
媒体链接应该出现在screen
链接之后。screen
链接指的是默认的台式机/笔记本电脑显示屏。要记住顺序,试试这个助记符:H otS oupP lease(H and held,S screen,以及 P rint)。
使用特殊样式表的链接进行打印的替代方法是在全局样式表中包含一个将应用于所有页面的@media print
指令。例如,您可能希望减小从网站打印的任何页面上的标题大小和行距。此外,让我们假设网站使用无衬线,10 点字体;我们将把字体改为 12 磅乘以新罗马体,因为它在印刷品上更容易阅读。为此,您可以将以下代码添加到主外部样式表中:
@media print { p { font-family: "times new roman"; font-size:12pt; } h1 { font-size:20pt; margin-bottom:0; } h2 (font-size: 14pt; margin-bottom:0; } }
将链接样式放在内部样式之前
将默认链接语句放在任何内部样式 之前,如下所示:
<link rel="stylesheet" type="text/css;" href="stylesheet.css"> <style type="text/css"> body {background: #FFF; color:#000; } </style>
IE 条件句所在
在<head>
部分找到任何条件样式。它们必须在之后出现,如下所示:
`
`
包括 JavaScript
将 JavaScript 链接放在链接样式和内部样式之后,如下所示:
`<!doctype html>
Home page
*meta details go here*
`
在<正文>部分列出视频源
<body>
部分中的视频源必须按以下顺序列出,否则某些手持设备可能会出现问题:
IE 7 和 IE 8 的后备文件应该位于列表的末尾。
订购伪类
设计链接样式时,顺序很重要。应该是这样的:
interlinkage
Visit
hover
having the initiative
一个有用的记忆方法是永远不变。
CSS3 快速参考
CSS3 有几个期待已久的增强功能。这些正在逐步完善和发布;大部分浏览器(除了 IE 7 和 IE 8)都开始回升了。IE 7 和 IE 8 忽略了这些增强,例如,带有 CSS3 圆角的页面将显示方形角。IE 9 可能会利用一些新的 CSS3 增强功能。
CSS3 元素的当前列表包括以下内容:
[fillet] (see chapter 7 of )
Multi-column (see Chapter 15 of )
Shadows (see chapter 8 )
Shading the text (see chapter 8 of )
Multi-background (see Chapter 3 of )
Font selector (see chapter 5 of ).
An opaque attribute (see chapter 5 of )
RGBA color notation (see chapter 5 of )
A template layout module
Frame picture
Grid layout
注 这本书给出了标有章节号的模块的工作示例。
技术总结
元素的相对定位
CSS 相对定位相对于项目通常出现的位置移动项目。通过相对定位,图 App-2 中左边的圆被做成了向右 320 像素,但是这个的 CSS 代码并不像你预期的那样。CSS 代码实际上告诉你原来的圆在哪里;即向左 320 像素,向上 70 像素。CSS 代码是
#circle { position:relative; left:320px; top:70px; }
记住这一点的最好方法是假设左边的和上边的 和的尺寸是边距。
图 App-2。 相对定位将元素从其原始位置移开
为了说明这一点,我们将使用第三章中一个熟悉的图像。图 App-3 显示了带有玫瑰花结的割台。
图 App-3。 玫瑰花结定位前的位置
玫瑰花结位于页眉边框的内部左侧边缘。清单 App-3 为玫瑰花结设置原始 默认位置。
清单 App-3。 在其默认位置叠加一个玫瑰花结(original-position.html)
`<!doctype html>
Rosette in original position
*meta details go here*
Devon's Rural Retreats
`
相对放置玫瑰花结
从逻辑上来说,你可能会认为玫瑰图必须放在右边的位置,但是如前所述,你需要想象相对的位置尺寸是 ?? 边距。所以,通过反复试验,我使用下面的 CSS 样式,给玫瑰图左边 750 像素和上边 5 像素 的假想边距:**
#rosette { position:relative; left:750px; top:5px; }
玫瑰花结的新位置如图 App-4 所示。
图 App-4。 玫瑰花结相对定位后的位置
通过清单 App-4 中的粗体显示的代码应用相对位置。
清单 App-4。【re-positioned.html】相对定位玫瑰花结
`<!doctype html>
Rosette relatively re-positioned
*meta details go here*
Devon's Rural Retreats
`
元素的绝对定位
绝对定位相对于以下内容定位元素:
The edge of the browser window . For example
#element { position:absolute; left:0; top:0; }
This CSS style will position an element so that it is close to the left and top of the browser window.
The edge of its nearest container . In this case, the container must be a direct ancestor and it must also have positioning applied to it. The ancestor’s positioning does not need to have any dimensio NS such as left, top, right or bottom.
For example, the following CSS statement absolutely locates the horizontal navigation bar in the container; The container applies some positioning, which in this case is relative. The location of the container can be zero, as shown in bold in the first line, it still works; In fact, the items shown in bold in the first row can be completely omitted.
#container {position:relative; **top:0; left:0;** width:950px; margin:auto; ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/prac-h5-proj/img/U002.jpg) text-align:center; } nav { **position:absolute; top:100px;** left:8%; width: 785px; padding:5px; ![images](https://gitee.com/OpenDocCN/vkdoc-html-css-zh/raw/master/docs/prac-h5-proj/img/U002.jpg) list-style: none; height: 35px; }
提示 为了避免跨浏览器的问题,总是给绝对定位和固定位置的元素一个宽度。
显示内嵌、块或内嵌块
有些元素默认为inline
元素。要改变这种行为,可以使用 CSS display
style 属性来设置元素的样式。
display:inline;
: line height, width, top and bottom filling; The top margin and bottom margin cannot be changed. Increasing the height or width has no effect. And padding margins can only be added to the right and left sides of the content. However, the width of the element will be determined by any text and/or images contained in the element in the line. By default, these elements are inline; <span>
、 <a>, <label>
、 <input>
、 <img>
、 <strong>
、 <b>
、 <em>
。 Elements such as < UL >, < Li > can be changed to inline
. In this case, they are subject to the same restrictions: width, height, top and bottom padding and top and bottom margins cannot be adjusted.
display:block;
: Ensure that an element has top and bottom line spacing, and allow optional width, height, top and bottom padding and top and bottom margin. If there is no width, the element will default to the width of the element it contains, such as the sidebar column. Examples of blocks are <div>
, <h1>
, <h2>
, <h3>
, <h4>
, <h5>
, <p>
, <form>
, <dl>
, <dd>
, <dt>, <ul>
, <li>
, <ol>
and <br>
. Elements are placed on top of each other, so they are very suitable for vertical lists like menus.
display:inline-block;
: Delete the space between the upper and lower rows, but allow padding up and down. This is a very useful style for embedded menu buttons. It was not fully utilized in the past because some old browsers did not support it.
All three styles allow left and right filling.
Inline elements can only contain text and other inline elements. A block can contain text and inline elements.
浮动元素
浮动是定位元素的另一种方法。项目可以向左或向右浮动。默认为float:none;
。浮动元素应该总是有宽度(浮动的图像 已经有预定义的宽度)。当一个元素被浮动时,它不能 被赋予position:absolute;
或position:relative;
。CSS 为float:left;
或float:right;
或float:none;
提示 浮动的元素可以有正或负的边距来帮助定位。
图 App-5 显示顶部玫瑰花形向左浮动,下部玫瑰花形向右浮动。
图 App-5。 左右浮动的玫瑰花结
清单 App-5 创建了如图 20-5 所示的浮动属性的演示。
清单 App-5。【float-1.html 演示左右浮动
`<!doctype html>
float-1
` ` *meta details go here*
The rosette is floated left. The paragraph flows around the rosette. The rosette is floated
left. The paragraph flows around the rosette. The rosette is floated left. The paragraph flows
around the rosette. The rosette is floated left. The paragraph flows around the rosette.
The rosette is floated right. The paragraph flows around the rosette. The rosette is
floated left. The paragraph flows around the rosette. The rosette is floated left. The
paragraph flows around the rosette. The rosette is floated left. The paragraph flows around
the rosette.
`
应用于浮动元素的<清除>属性
文本围绕浮动项目流动。有时你不希望文本四处流动;您希望文本位于浮动元素的下方。这可以通过使用clear
属性来实现;然而,我从来不记得什么清除了什么,以及左右应该如何应用。
一般的规则是,如果一个项目,比如一个图像,向左浮动,给文本 CSS 属性clear:left;
——换句话说,清除向左浮动的项目。相反,如果一个元素是右浮动的,并且你不希望文本围绕它流动,那么给文本 CSS 属性clear:right;
。
CSS 命令clear
也可以像在clear:both;
中一样拥有属性both
。这对于将像页脚这样的元素放在页面的列下面非常有用。
在图 App-6 中举例说明了clear:left;
和clear:right;
属性。
图 App-6。 段落被设计为清除浮动图像。
清单 App-6 中粗体显示的代码强制文本远离图像。
清单 App-6。【使用清晰属性(float-2.html)
`<!doctype html>
float-2
*meta details go here*
` `
The rosette is floated left. The paragraph has been given a class
clear-left . The rosette is floated left. The paragraph has been given a class
clear-left .
**The rosette is floated right. The paragraph has been given a class
clear-right . The
rosette is floated right. The paragraph has been given a class clear-right .
`
了解 MIME 类型
MIME 类型(多用途互联网邮件扩展)告诉浏览器正在处理什么类型的文件。尽管最初是为电子邮件设计的,但该标准已经扩展到了网站。你在网页上看到几种 MIME 类型;它们是这样出现的:type="something"
。以下是典型的 MIME 类型:
HTML 页:??]
JavaScript: type="text/javascript"
MP3 文件:type="audio/mpeg"
SVG:??㎡t
CSS:??]
幸运的是,网页设计者不必过多担心 MIME 类型,因为浏览器足够聪明,知道.jpg
、.gif
和.png
是图像,它们自动知道应用哪种 MIME 类型。这在 HTML5 中会变得更加普遍;例如,以后的浏览器会识别 JavaScript,这样就不需要在标记中声明脚本的 MIME 类型。
基于服务器的 MIME 类型
MIME 类型并不总是输入到网页中;有些位于服务器/主机中。这尤其适用于新 HTML5 建议的音频和视频。
以下笔记摘录自[
tomraftery.com2005/01/15//creating-an.htaccess-file/](http://tomraftery.com2005/01/15//creating-an.htaccess-file/)
和[
www.javascriptkit.com/howto/htaccess.shtml](http://www.javascriptkit.com/howto/htaccess.shtml)
的网站。
注意 有些主机允许网站设计者向服务器添加 MIME 类型权限。你可以创建自己的.htaccess
文件,但是你需要弄清楚你的主机是否允许你上传它。请注意,在更改.htaccess
文件时,您必须非常小心。如果可能的话,请你的主人改变它。一些主机在其网站的控制面板中有一个工具,可以让你自己修改文件。否则,如果你能在主机的文件夹里看到一个.htaccess
文件,就下载一份。该文件通常存储为隐藏文件,因此您可能看不到它。在这种情况下,您将无法下载它(尽管文件名前面的点表示一个隐藏的文件,但它可能不会隐藏在您的特定主机上)。始终保留一份.htaccess
文件的备份 ;如果你犯了一个错误,你可以上传原件。在.htaccess
文件中犯一个错误会让你的整个网站停止工作。如果发生这种情况,只需从备份中上传原件。无论是出版社还是作者都不会对你在主机服务器上犯的任何错误负责。
视频 MIME 类型
在尝试为网站提供 HTML5 视频之前,请务必联系主机服务器,请求为.ogv
、.mp4
、.flv
、.swf
和.webm
视频文件设置 MIME 类型。如果你忽略了这一点,你的视频将无法在某些浏览器上播放。
下面是大多数主机用来在服务器上设置 MIME 类型的代码片段。它和其他名为AddType
的权限一起存在于.htaccess
文件中。
AddType video/ogg .ogv AddType video/mp4 .mp4 AddType video/webm .webm AddType video/x-flv .flv AddType application/x-shockwave-flash swf
注意 使用纯文本编辑器创建文件是绝对必要的。可以使用笔记本创建文件,并先保存为.htaccess.txt
。然后您必须通过右击文件并将其重命名为.htaccess
来删除.txt
文件类型。如果在.htaccess
文件名后面写任何东西都不行。
Each AddType
must be on its own line, and no line break is allowed. If the text editor wraps the text, make sure it doesn't insert line breaks to create the wrapping.
Use #
(hash) at the beginning of a line to comment out a line.
Ignore multiple or single spaces, but do not use tabs.
When uploading files using FTP, should not be sent in binary. You must upload it in ASCII mode.
You should upload the .htaccess
file to the folder (root folder) where your homepage is located. Then, the file affects every folder in the entire site.
Use your FTP client, find the .htaccess
file you uploaded, and right-click it. Set CHMOD to 644 or (rw-r–r–). This prevents unauthorized people from interfering with it. This also makes it available to the server, but it can't be seen in the browser.
提示 你的主机/服务器可能选择不显示.htaccess
文件,但是它仍然存在,所以试试这个:在你的 FTP 程序中,点击下载按钮,不选择文件名。通常会出现一个文本框,要求您输入文件名。键入.htaccess
然后点击 OK 下载文件。
如果你的文本编辑器不允许你像一样重命名一个文件。 htaccess
如果前面有一个点,请尝试在 MyComputer 中查看该文件(或在 Windows 7 中在 Computer 中查看)。然后右键单击该文件,选择重命名,键入新名称,并按 Enter 键进行确认。或者,您可以将.htaccess
上传到您的主机服务器,并在服务器上重命名它。然而,如果主机使文件不可见,这将不起作用。如果您的 FTP 程序可以配置为查看所有文件,它可能会克服这个问题。在 FTP 程序中重命名文件后,您可能看不到该文件。
上传您的新.htaccess
后,您可能会在尝试查看您的网站时看到错误消息。这意味着你的.htaccess
文件有问题。上传保存好的,好的版本;或者在绝望中,你可以尝试上传一个完全空的.htaccess
文件来覆盖这个有问题的文件。
永远保存好你的htaccess.txt
文件,以防你将来需要修改。
主持人可能允许你改变。htaccess 文件
我使用[www.bargainhost.co.uk](http://www.bargainhost.co.uk)
是因为它对网页设计者/所有者有很多有用的功能,而且支持人员是我见过的最有帮助的。我可以使用以下步骤从廉价主机 cPanel(控制面板)访问.htaccess
文件:
Log in to cPanel. Click under File Manager Options.
。
Select the home directory.
Select the public_html
folder.
htaccess
Internet Explorer 条件句
有时 IE 需要一个简短但附加的样式表来克服浏览器无法符合标准建议的问题。
条件链接必须放在 HTML 标记的 head 部分,在样式化整个网站的主链接之后。条件位由if
和endif
包围。
如果 IE 6、IE 7 和 IE 8 是不符合特定 W3C 标准的浏览器,那么 HTML 将如下所示:
<link rel="stylesheet" type="text/css" href="*global.css*"> <!--[if lt IE 9]> <link rel="stylesheet" type="text/css" href="*style-IE.css*">
` <![endif]-->
`
表达式<!--[if lt IE 9]>
中的lt
表示“如果浏览器低于 IE 9。”
如果 IE 6 是唯一不符合特定 W3C 标准的浏览器,那么 HTML 将如下所示:
`
`
如果 IE 6 和 IE 7 是不符合特定 W3C 标准的浏览器,那么 HTML 将如下所示:
`
`
表达式<!--[if lte IE 7]>
中的lte
表示“如果浏览器小于或等于 IE 7。”
注意 你大概习惯打“IE6”、“IE7”、“IE8”。输入条件句的时候一定要在 IE 和数字之间加一个空格,否则会被浏览器忽略。
IE 条件句的全部细节可以在[
msdn.microsoft.com/en-us/library/ms537512(VS.85).aspx](http://msdn.microsoft.com/en-us/library/ms537512(VS.85).aspx)
找到。同样参见[
www.conditional-css.com/usage](http://www.conditional-css.com/usage)
了解所有浏览器的条件。
数据表
常见的人物实体
在 HTML5 中,有些字符必须用字符实体来表示。表 App-1 显示了最常见的实体。
要了解全部细节,请在搜索引擎中输入“ISO-8859-/entities”。
浏览器流行度统计
网页设计者需要知道他们的大多数目标用户使用的是哪种浏览器。当决定我们的目标受众时,我们可以把杂志投票作为设计技术网站的指南,比如教程和 W3C 信息。对于提供新闻、商品、服务、旅游信息的网站,以及一般的网站,表 App-2 中的统计数据更适用。总是问你的潜在客户她正在使用哪个浏览器。
警惕计算机杂志调查收集的统计数据。调查结果并不代表公众的观点。相反,他们给出了一组精选的计算机爱好者的观点。大多数人和商业公司使用 Windows 和该操作系统免费提供的内容。在表格 App-3(computer active 杂志和[
gs.statcounter.com](http://gs.statcounter.com)
)中比较两类用户 2012 年 2 月在英国的数字。
表 App-2 和表 App-3 并不能说明全部情况。IE 的数据包括好的和不太好的版本。我们可以忽略 IE 6。如果我们假设到 2015 年,Windows 7 和 Windows 8 的用户已经成为主导,这些用户可能会遵循他们早期的偏好,使用他们的操作系统自带的任何东西——IE 9 和 IE 10。与此同时(2012 年 2 月),IE 7 仅占英国 IE 总使用量的 12 %,而且还在快速减少。IE 8 占 IE 总数的 62 %,并逐渐被 IE 9 取代,2012 年 2 月 IE 9 占 26%。
调查变得更加复杂,因为现在许多人有不止一台电脑,每台电脑都装有不同的 Windows 操作系统和不同的浏览器。政府机构有时落后于更有知识的公众。
短期内,确保你的网站可以在所有浏览器上运行,包括 IE 7 和 IE 8。希望到 2015 年我们可以忘记 IE 条件,因为所有的浏览器都将更加符合标准。
提示 访问[
gs.statcounter.com](http://gs.statcounter.com)
时,选择条形图版本,清晰了解当前情况。选择折线图版本以查看趋势。另请参见[
marketshare.hitslink.com/browser-market-share.aspx?qprid=3](http://marketshare.hitslink.com/browser-market-share.aspx?qprid=3)
。
浏览器使用的统计数据也由以下网站监控:
[
www.w3schools.com/browsers/browsers_stats.asp](http://www.w3schools.com/browsers/browsers_stats.asp)
[
gs.statcounter.com](http://gs.statcounter.com)
[
www.netmarketshare.com/browser-market-share.aspx?qprid=0&qpcustomd=0](http://www.netmarketshare.com/browser-market-share.aspx?qprid=0&qpcustomd=0)
[
en.wikipedia.org/wiki/Usage_share_of_web_browsers](http://en.wikipedia.org/wiki/Usage_share_of_web_browsers)
不同组织的统计数据差异很大。我们永远不会知道哪个数据是最可靠的,但是你应该能够发现明确的趋势。