XieYang-blog

初学 HTML 的 30 条最佳实践

保持标签闭合

以前,经常见到类似下面的代码(译注:这是多久以前啊……):

1
2
3
<li>Some text here. 
<li>Some new text here.
<li>You get the idea.

注意外面包裹的 UL / OL 标签被遗漏了(谁知是故意还是无意的),而且还忘记了关闭 LI 标签。按今天的标准来看,这是很明显的糟糕做法,应该 100% 避免。总之,保持闭合标签。否则,你验证 html 标签的时候可能遇到问题。

更好的方式

1
2
3
4
5
<ul> 
<li>Some text here. </li>
<li>Some new text here. </li>
<li>You get the idea. </li>
</ul>

声明正确的文档类型

声明正确的文档类型

笔者早先曾加入过许多 CSS 论坛,每当用户遇到问题,我们会建议他首先做两件事:

  • 验证 CSS 文件,保证没有错误。

  • 确认添加了正确的 doctype

DOCTYPE 出现在HTML标签之前,它告诉浏览器这个页面包含的是 HTML,XHTML,还是两者混合,这样浏览器才能正确解析。

通常有四种文档类型可供选择:

1
2
3
4
5
6
7
<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01//EN' 'http://www.w3.org/TR/html4/strict.dtd'>

<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN' 'http://www.w3.org/TR/html4/loose.dtd'>

<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'>

<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'>

关于该使用什么样的文档类型声明,一直有不同的说法。通常认为使用最严格的声明是最佳选择,但研究表明,大部分浏览器会使用普通的方式解析这种声明,所以很多人选择使用 HTML4.01 标准。选择声明的底线是,它是不是真的适合你,所以你要综合考虑来选择适合你得项目的声明。

永远不要使用内联样式

当你在埋头写代码时,可能会经常顺手或偷懒的加上一点行内 css 代码,就像这样:

1
2
3
<p style="color: red;">
I'm going to make this text red so that it really stands out and makes people take notice!
</p>

这样看起来即方便又没有问题。然而,这在你的编码实践中是个错误。

在你写代码时,在内容结构完成之前最好不要加入样式代码。

这样的编码方式就像打游击,是一种很山寨的做法。——Chris Coyier

更好的做法是,完成标签部分后,再把这个P的样式定义在外部样式表文件里。

建议

1
#someElement > p { color: red; }

将所有外部css文件放入head标签内

理论上讲,你可以在任何位置引入 CSS 样式表,但 HTML 规范建议在网页的 head 标记中引入,这样可以加快页面的渲染速度。

雅虎的开发过程中,我们发现,在 head 标签中引入样式表,会加快网页加载速度,因为这样可以使页面逐步渲染。 —— ySlow 团队

1
2
3
4
5
<head>
<title>My Favorites Kinds of Corn</title>
<link rel="stylesheet" type="text/css" media="screen" href="path/to/file.css" />
<link rel="stylesheet" type="text/css" media="screen" href="path/to/anotherFile.css" />
</head>

javascript文件放在底部

要记住一个原则,就是让页面以最快的速度呈现在用户面前。当加载一个脚本时,页面会暂停加载,直到脚本完全载入并执行完成。因此会浪费用户更多的时间。

如果你的JS文件只是要实现某些功能,(比如点击按钮事件),那就放心的在body底部引入它,这绝对是最佳的方法。

建议

1
2
3
4
5
        <p>And now you know my favorite kinds of corn. </p> 
<script type="text/javascript" src="path/to/file.js"></script>
<script type="text/javascript" src="path/to/anotherFile.js"></script>
</body>
</html>

永远不要使用内联 javascript 。现在不是 1996 年了!

许多年以前,还存在一种这样的方式,就是直接将 JS 代码加入到 HTML 标签中。尤其是在简单的图片相册中非常常见。本质上讲,一个 “onclick” 事件是附加在 标签上的,其效果等同于一些JS代码。不需要讨论太多,非常不应该使用这样的方式,应该把代码转移到一个外部 JS 文件中,然后使用 “addEventListener / attachEvent” 加入事件监听器。或者使用 jquery 等框架,只需要使用 “click” 方法。

1
2
3
$('a#moreCornInfoLink').click(function () {
alert('Want to learn more about corn?');
});

边开发,边验证

很多人并不真正理解标准验证的意义和价值,笔者在一篇博客中详细分析了这个问题。一句话,验证是为你服务的,不是给你找麻烦的。如果你刚开始从事网页制作,那强烈建议你下载 Web Developer Toolbar(chrome 用户请自行在应用商店搜索,ie 用户可能就杯具了) ,并在编码过程中随时使用“HTML 标准验证” 和 “CSS 标准验证”。如果你认为 CSS 是一种非常好学的语言,那么它会把你整的死去活来。你不严谨的代码会让你的页面漏洞百出,问题不断,一个好的方法就是—— 验证,验证,再验证。

下载firebug

Firebug 是当之无愧的网页开发最佳插件,它不但可以调试 JavaScript,还可以直观的让你了解页面标记的属性和位置。不用多说,下载

使用firebug

据笔者观察,大部分的使用者仅仅使用了 Firebug 20% 的功能,那真是太浪费了,你不妨花几个小时的时间来系统学习这个工具,相信会让你事半功倍。

资源:

保持标签名小写

理论上讲,html不区分大小写,你可以随意书写,例如:

1
2
3
<DIV>
<P>Here's an interesting fact about corn. </P>
</DIV>

但最好不要这样写,费力气输入大些字母没有任何用处,并且会让代码很难看.

建议

1
2
3
<div>
<p>Here's an interesting fact about corn. </p>
</div>

使用 H1-H6 标签

笔者建议你在网页中使用其中全部六种标记,虽然大部分人只会用到前四个,但使用最多的H会有很多好处,比如设备友好、搜索引擎友好等,不妨把你的P标签都替换成 H6。

1
2
<h1>This is a really important corn fact! </h1>
<h6>Small, but still significant corn fact goes here. </h6>

写博客时,请将H1留给文章标题

今天笔者在 Twitter 上发起一次讨论:是该把 H1 定义到 LOGO 上还是定义到文章标题上,有 80% 的人选择了后者。

当然具体如何使用要看你的需求,但我建议你在建立博客的时候,将文章题目定为 H1,这对搜索引擎优化(seo)是非常有好处的。

下载ySlow

在过去几年里,雅虎的团队在前端开发领域做了许多伟大的工作。前不久,它们发布了一个叫 ySlow 的 Firebug 扩展,它会分析你的网页,并返回 一个“成绩单”,上面细致分析了这个网页的方方面面,提出需要改进的地方,虽然它有点苛刻,但它绝对会对你有所帮助,强烈推荐 —— ySlow

使用无序列表(UL)包裹导航菜单

通常网站都会有导航菜单,你可以用这样的方式定义:

1
2
3
4
5
<div id="nav">
<a href="#">Home </a>
<a href="#">About </a>
<a href="#">Contact </a>
</div>

如果你想书写优美的代码,那最好不要用这种方式。

为什么要用 UL 布局导航菜单? ——因为UL生来就是为定义列表准备的
最好这样定义:

1
2
3
4
5
<ul id="nav">
<li><a href="#">Home</a></li>
<li><a href="#">About</a></li>
<li><a href="#">Contact</a></li>
</ul>

学习如何应对 IE

IE一直以来都是前端开发人员的噩梦!

如果你的 CSS 样式表基本定型了,那么可以为 IE 单独建立一个样式表,然后这样仅对IE生效:

1
2
3
<!--[if lt IE 7]>
<link rel="stylesheet" type="text/css" media="screen" href="path/to/ie.css" />
<![endif]-->

这些代码的意思是:如果用户浏览器是 IE6 及以下,那这段代码才会生效。如果你想把 IE7 也包含进来,那么就把 “[if lt IE 7]” 改为 “[if lte IE 7]”。

选择合适的IDE

不论你是Windows还是Mac用户,这里都有很多优秀的编辑器供你选择:

上线前,压缩代码

通过压缩您的 CSS 和 Javascript 文件,您可以减少总大小的 25% 左右,但在开发过程中不必压缩,然而,一旦网站完成后,利用一些网络压缩程序或多或少节省一些带宽。下面列出一些工具。

精简,精简,再精简

回望我们大多数人写的第一个页面,一定会发现严重的 “DIV 癖”( divitis ),通常初学者的本能就是把一个段落用 DIV 包起来,然后为了控制定位而套上更多的 DIV。 —— 其实这是一种低效而有害的做法。

网页写完后,一定要多次回头检查,尽量的减少元素的数量。能用 UL 布局的列表就不要用一个个的 DIV 去布局。

正如写文章的关键是 “缩减,缩减,缩减” 一样,写页面也要遵循这个标准。

给所有图片加上 “alt” 属性

为图片加上 alt 属性的好处是不言而喻的 —— 这样可以让禁用图片或者使用特殊设备的用户无障碍得了解你的网页信息,并且对图像搜索引擎友好。

糟糕的做法

1
<IMG SRC="cornImage.jpg" />

更好的做法

1
<img src="cornImage.jpg" alt="A corn field I visited." />

通宵达旦

我经常不知不觉的学习工作到凌晨,我认为这是个很好的状况。

我的 “啊~哈!” 时间( “AH-HA” moments,指柳暗花明或豁然开朗的时刻)通常都发生在深夜,比如我彻底理解 JavaScript 的 “闭包” 概念,就是在这样一种情况下。如果你还没有感受过这种奇妙的时刻,那就马上试试吧!

查看源代码

没有什么比模仿你的偶像能让你更快的学习HTML。起初,我们都要甘做复印机,然后慢慢得发展自己的风格。研究你喜欢的网站页面代码,看看他们是怎么实现的。这是高手的必经之路,你一定要试一下。注意:只是学习和模仿他们的编码风格,而不是抄袭和照搬!

留意网络上各种炫酷的 JavaScript 效果,如果看上去是使用了插件,那根据它源码中head标签内的文件名,就可以找到这个插件名称,然后就可以学习它据为己用。

为所有的元素定义样式

这一条在你制作其他公司企业网站时尤为必要。你自己不使用 blockquote 标记?那用户可能会用,你自己不使用 OL?用户也可能会。花时间做一个页面,显示出 ul, ol, p, h1-h6, blockquotes, 等等元素的样式,检查一下是否有遗漏。

使用第三方服务

现在互联网上流行着许多可以免费加在网页中的API,这些工具非常强大。它可以帮你实现许多巧妙的功能,更重要的是可以帮你宣传网站。

掌握Photoshop

Photoshop 是前端工程师的一个重要工具,如果你已经熟练掌握 HTML 和 CSS ,那不妨多学习一下 Photshop。

  1. 观看 Psdtuts+ 上的视频课程
  2. 花费每月 25$ 注册成为 Lynda.com 的会员,海量精品课程。
  3. 推荐 “You Suck at Photoshop” 系列
  4. 花费几个小时记住尽可能多的 PS 快捷键。

学习每一个HTML标签

虽然有些 HTML 标签很少用到,但你依然应该了解他们。比如 “abbr”、“cite” 等,你必须学习它们以备不时之需。

顺便说下,如果你不熟悉上面两个标签,可以看下下面的解释:

  • abbr 和你估计的差不多,它是abbreviation的缩写,“Blvd” 能用 <abbr> 标签包裹,因为他是 “boulevard” 的缩写。
  • cite 被用来作为引用内容的标题(blockquote)。例如,如果你在你的博客中引用本篇文章,你可以将 “初学 HTML 的 30 条最佳实践” 用 <cite> 包裹,注意它不应该被用来包裹引用的作者,这是常见的误区。

参与社区讨论

网络上有许许多多优秀的资源,而社区中也隐藏着许多高手,这里你既可以自学,也能请教经验丰富的开发者。

使用 reset.css

Css Reset 也就 Reset Css,就是重置一些HTML标签样式,或者说默认的样式。

关于是否应该使用 CSS Reset,网上也有激烈的争论,笔者是建议使用的。你可以先选用一些成熟的 CSS Reset,然后慢慢演变成适合自己的。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
html, body, div, span, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, img, ins, kbd, q, s, samp, small, strike, strong, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td { 
margin: 0;
padding: 0;
border: 0;
outline: 0;
font-size: 100%;
vertical-align: baseline;
background: transparent;
}
body {
line-height: 1;
}
ol, ul {
list-style: none;
}
blockquote, q {
quotes: none;
}
blockquote:before,
blockquote:after,
q:before,
q:after {
content: '';
content: none;
}
table {
border-collapse: collapse;
border-spacing: 0;
}

对齐元素

简单来说,你应该尽可能的对齐你的网页元素。可以观察一下你喜欢的网站,它们的LOGO、标题、图表、段落肯定是对得非常整齐的。否则就会显得混乱和不专业。

关于PSD切片

现在你已经掌握了HTML、CSS、Photoshop知识,那么你还需要学习如何把PSD转换为网页上的图片和背景,下面有两个不错的教程:

不要随意使用框架

Javascript 和 CSS 都有许多优秀的框架,但如果你是初学者,不要急于使用它们。如果你还没能熟练的驾驭 CSS,使用框架会混淆你的知识体系。尽管你可能能会说 javascript 和 jQuery 是可以同时学习的,但这对 css 并不适合。我个人提倡 960 CSS 网格框架(英文网站),并且我经常使用它。还是那句话,如果你是 css 的初学者,学习框架只会让你更加困惑。

CSS 框架是为熟练开发者设计的,这样会节省它们大量的时间。

🐶 您的支持将鼓励我继续创作 🐶