HTML页面输出应该遵循的几点原则
- 不能少了DOCTYPE,浏览器根据你申明的DOCTYPE决定页面渲染规则,如果不声明,不同的浏览器显示效果可能不一样。
- 在<title>之前加上<meta>标签说明页面所用的编码。否则可能导致部分浏览器显示的页面标题为乱码。
- <style>应该放在<head>标签内。否则会导致页面在下载完成之前不美观,而且在下载完<style>的内容以后浏览器还要对页面重新进行渲染,会影响用户体验。
- CSS中尽量避免使用表达式。否则在每次页面内容改变(比如javascript动态添加或删除元素,改变浏览器窗口大小)时,浏览器都会重新计算表达式的值。一种可以替代的方法是用javascript在window.onload中动态判断并确认样式。用户端的资源我们也应该珍惜。
- 在使用javascript改变页面元互的显示效果时,尽量用className属性更改。应该尽量避免用element.style.color = "#ff0000"之类的语句,尤其是在一次更改多次属性的时候。这样做有两个理由:方便维护和节约客户端资源。使用className改更的时候,页面只需要重新渲染一次,而且style属性更改时,每次都要重新渲染,这比开销是很大的。
- <script />标签应该紧靠在</body>标签之前。浏览器在下载<script>中的内容时,不会同时下载其它内容(图片、flash、<script>后面的html文档等),如果使用了较多的外部script文件,有可能导致用户失支继续等待页面显示的耐心。
一个简单的例子:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>示范</title>
<meta name="keywords" content="test,示范" />
<link rel="Stylesheet" type="text/css" href="common.css" />
<style type="text/css">
.test{border:1px solid #ff0000;}
.dom{width:200px;height:100px;}
.notdom{width:202px;height:102px;}
</style>
</head>
<body>
<div id="main" class="test"></div>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
$(function(){
if($.support.boxModel){
$("#main").addClass("dom");
}else{
$("#main").addClass("notdom");
}
});
</script>
</body>
</html>