Web 标准实践系列(一)——Google 的首页
文章来自:设计学院 | 发表时间:2007-9-28 22:27:18
今天我们来学习用 Web 标准的方法来制作
Google 首页(中文)。Google 首页一直是用
table 布局的。我们把 Google 首页用 PrtScr 截屏,作为制作时的设计稿参考,并且不打开 Google 首页查看其源代码——就当它不存在。这样和真实项目工作比较接近。
第一部分、HTML 的构建(基于XHTML Transitional)从设计稿上看到的内容,去揣摩结构。因为整个页面内容较少,容易理解,但也碰到了我们的第一个问题:是用
<p> 标签还是
<div>?各自代表着 paragraph 和 division,原则上说,这个页面上没有任何的段落存在,所以不应该用
<p>。但这里涉及到一个问题,抛开样式表显示的话,用
<p> 更加的清晰,因为默认
<div> 的
margin 和
padding 值都为零。好吧,用
<p> 还是用
<div> 是一个个人喜好问题,但是原则上应当用后者。在本例中也使用后者。开始找个称手的编辑器写 HTML :

1.
<div><strong>junchenwu@gmail.com
</strong> |
<a href="ig">个性化主页
</a> |
<a href="MyAccount">我的帐户
</a> |
<a href="logout">退出
</a></div> 
2.
<div><img src="http://www.google.com/intl/zh-CN_ALL/images/logo.gif" alt="Google" /></div>这包括头部的登陆状态和中间的大 Logo。我们先不增加任何样式
id 和
class。
然后我们看到中间有“网页 图片 资讯 论坛 更多 »”这些链接。怎么做?一般就两种写法,看个人喜好。把这几个链接写一行里面或者写在一个
ul 里面,如下:
<div><strong>网页
</strong> <a href="pic">图片
</a> <a href="info">资讯
</a> <a href="group">论坛
</a> <a href="more"><strong>更多 »
</strong></a></div>或者:

1.
<ul> 
2.
<li><strong>网页
</strong></li> 
3.
<li><a href="pic">图片
</a></li> 
4.
<li><a href="info">资讯
</a></li> 
5.
<li><a href="group">论坛
</a></li> 
6.
<li><a href="more"><strong>更多 »
</strong></a></li> 
7.
</ul>这两种写法各有什么优缺点呢?这里一共有 5 项,第一项是加粗的文字,其余 4 项是链接。如果使用第一种写法对于样式的控制就显得力不从心,比如控制这 5 项之间的间距;如果使用第二种写法,那么在脱离样式的情况下,分了 5 行显示。这里我把缺点都写出来,根据本例情况,我们还是选择第一种写法,这样要控制样式就需要在每一项前后增加无意义的
<span>。
我们先继续往下写,遇到了搜索表单以及边上的高级搜索等三个链接。先写哪一个?看上去是平级的啊。这个时候最好问一下产品设计师的本意。我们在这里先写表单。如下:
注意给每一项
radio button 添加一个
label,具体的效果大家可以自行测试一下。另外这里采用了
label 包含的写法,也可以写成
<label for="foo"> 针对 id 为 foo 的 label </label>。接下来是高级搜索等三个链接,以及底部的版权信息等,代码如下:

1.
<div><a href="advanced_search">高级搜索
</a> <a href="pref">使用偏好
</a> <a href="lang">语言工具
</a></div> 
2.
<div><a href="ad">广告计划
</a> -
<a href="all">Google 大全
</a> -
<a href="en">Google.com in English
</a></div> 
3.
<div>©2007 Google
</div> 第二部分、样式表我们采用直接把样式写在
head 里面的方式,较为简单也方便演示。首先我们看到除了头部的登陆状态,其余部分都是居中对齐的,并且发现字体是 Arial,默认文字大小为 13 px。我们在
head 区域增加以下样式:
1. body{#FF0000;">
2. font-family: Arial, sans-serif;#FF0000;">
3. font-size: 13px;#FF0000;">
4. text-align: center;#FF0000;">
5. margin-top: 3px;
6. }
7. a:link{#FF0000;">
8. color: #00C;
9. }
10. a:visited{#FF0000;">
11. color: #551a8b;
12. }
这里使用了 px 这个绝对单位。关于绝对单位和相对单位,网上相关文章很多,并且也一直是 Web 前台的热门话题,本文简单起见,直接使用绝对单位。
然后我们逐步增加其他样式:
1. #login{#FF0000;"> /*这是头部的登陆状态*/
2. text-align: right;
3. }
4. #stype{#FF0000;"> /*这就是上文提到的那 5 项搜索类型*/
5. margin-bottom: 4px;
6. }
7. #stype span{#FF0000;"> /*此处增加了无意义的 span*/
8. padding: 0 6px;
9. }
之后的搜索表单,我们碰到了样式化的难点,首先作为搜索的 size 为 55 的输入框从布局上来说是绝对居中的,而右侧高级搜索那三项的宽度加上输入框在内并不是绝对居中。也就是说视觉上,高级搜索那三项偏右了。如下图所示:

这里我们使用绝对定位的方法来处理它(在 HTML 中将高级搜索这三项的内容放入
form 之内):
1. #search{#FF0000;"> /*这是搜索表单*/
2. margin: 0 auto;#FF0000;">
3. width: 400px;#FF0000;">
4. position: relative;
5. }
6. #more{#FF0000;">
7. width: 4em;#FF0000;"> /*4个汉字宽,这样可以形成类似列表的效果*/
8. position: absolute;#FF0000;">
9. top: 0;#FF0000;">
10. right: -4.5em;
11. }
最后我们加上底部链接和版权信息部分的样式:
1. #ft{#FF0000;">
2. margin: 54px auto 16px;
3. }
在浏览器里面预览并且微调一下各个数值,这样就完成了 Google 首页的制作。
这在 Firefox 1.5 下测试,与 Google 首页没有任何像素的差异。在 IE 下会有一些像素上的差异,这就是各个浏览器的兼容性问题,留给大家自行处理了。本系列以后会有专门的文章讨论这些问题。
本例的最终代码还能够有进一步的优化,做法每个人习惯不同,希望本文能够帮助到大家。