我們在學習css的過程中會發現css學習起來並不難,但是在大型專案中,它會變得很難打理。不同的程式設計師在書寫風格上有很大不同,這導致在團隊合作時會很難溝通。因此便有了css程式碼書寫規範。
1、使用Reset但並非全域Reset
不同瀏覽器元素的預設屬性有所不同,使用Reset可重設瀏覽器元素的一些預設屬性,以達到瀏覽器的相容。但要注意的是,請不要使用全域Reset:
*{ margin:0; padding:0; }
這不僅因為它是緩慢和低效率的方法,而且還會導致一些不必要的元素也重置了外邊距和內邊距。在此建議參考YUI Reset和Eric Meyer的做法。我跟Eric Meyer的觀點相同,Reset並不是一成不變的,具體還需要根據專案的不同需求做適當的修改,以達到瀏覽器的兼容和操作上的便利性。我使用的Reset如下:
/** 清除内外边距 **/ body, h1, h2, h3, h4, h5, h6, hr, p, blockquote, /* structural elements 结构元素 */ dl, dt, dd, ul, ol, li, /* list elements 列表元素 */ pre, /* text formatting elements 文本格式元素 */ form, fieldset, legend, button, input, textarea, /* form elements 表单元素 */ th, td, /* table elements 表格元素 */ img/* img elements 图片元素 */{ border:medium none; margin: 0; padding: 0; } /** 设置默认字体 **/ body,button, input, select, textarea { font: 12px/1.5 '宋体',tahoma, Srial, helvetica, sans-serif; } h1, h2, h3, h4, h5, h6 { font-size: 100%; } em{font-style:normal;} /** 重置列表元素 **/ ul, ol { list-style: none; } /** 重置超链接元素 **/ a { text-decoration: none; color:#333;} a:hover { text-decoration: underline; color:#F40; } /** 重置图片元素 **/ img{ border:0px;} /** 重置表格元素 **/ table { border-collapse: collapse; border-spacing: 0; }
2. 良好的命名習慣
#無疑亂七八糟或是無語義命名的程式碼,誰看了都會抓狂。就像這樣的程式碼:
.aaabb{margin:2px;color:red;}
我想即使是初學者,也不至於會在實際專案中如此命名一個class,但有沒有想過這樣的程式碼同樣是很有問題的:
<h1>My name is <span class="red blod">Wiky</span></h1>
問題在於如果你需要把所有原本紅色的字體改成藍色,那修改後就樣式就會變成:
.red{color:bule;}
這樣的命名就會很讓人費解,同樣的命名為.leftBar的側邊欄如果需要修改成右側邊欄也會很麻煩。所以,請不要用元素的特性(顏色,位置,大小等)來命名一個class或id,您可以選擇意義的命名如:#navigation{...},.sidebar{...},.postwrap{ ...}
這樣,無論你如何修改定義這些class或id的樣式,都不影響它跟HTML元素間的連結。
另外還有一種情況,一些固定的樣式,定義後就不會修改的了,那你命名時就不用擔憂剛剛說的那種情況,如
.alignleft{float:left;margin-right:20px;} .alignright{float:right;text-align:right;margin-left:20px;} .clear{clear:both;text-indent:-9999px;}
那麼對於這樣一個段落
<p class="alignleft">我是一个段落!</p>
如果需要把這個段落由原先的左對齊修改為右對齊,那麼只需要修改它的className就為alignright就可以了。
3. 程式碼縮寫
CSS程式碼縮寫可以提高你寫程式碼的速度,精簡你的程式碼量。在CSS裡面有不少可以縮寫的屬性,包括margin,padding,border,font,background和顏色值等,如果您學會了程式碼縮寫,原本這樣的程式碼:
li{ font-family:Arial, Helvetica, sans-serif; font-size: 1.2em; line-height: 1.4em; padding-top:5px; padding-bottom:10px; padding-left:5px; }
就可以縮寫為:
li{ font: 1.2em/1.4em Arial, Helvetica, sans-serif; padding:5px 0 10px 5px; }
如果您想更了解這些屬性要怎麼縮寫,可以參考《常用CSS縮寫語法總結》或下載CSS-Shorthand-Cheat-Sheet.pdf 。
4. 利用CSS繼承
如果頁面中父元素的多個子元素使用相同的樣式,那麼最好把他們相同的樣式定義在其父元素上,讓它們繼承這些CSS樣式。這樣你可以很好的維護你的程式碼,也可以減少程式碼量。那麼本來這樣的程式碼:
#container li{ font-family:Georgia, serif; } #container p{ font-family:Georgia, serif; } #container h1{font-family:Georgia, serif; }
就可以簡寫成:
#container{ font-family:Georgia, serif; }
5. 使用多重選擇器
你可以合併多個CSS選擇器為一個,如果他們有共同的樣式的話。這樣做不但程式碼簡潔且可為你節省時間和空間。如:
h1{ font-family:Arial, Helvetica, sans-serif; font-weight:normal; } h2{ font-family:Arial, Helvetica, sans-serif; font-weight:normal; } h3{ font-family:Arial, Helvetica, sans-serif; font-weight:normal; }
可以合併為
h1, h2, h3{ font-family:Arial, Helvetica, sans-serif; font-weight:normal; }
6. 適當的程式碼註解
程式碼註解可以讓別人更容易讀懂你的程式碼,且合理的組織程式碼註釋,可使得結構更加清晰。你可以選擇做的樣式表的開始添加目錄:
/*------------------------------------ 1. Reset 2. Header 3. Content 4. SideBar 5. Footer ----------------------------------- */
如此你程式碼的結構就一目了然,你可以容易的查找和修改程式碼。
而對於程式碼的主內容,也應適當的加以劃分,甚至在有必要的地方在對程式碼加以註解說明,這樣也有利於團隊開發:
/*** Header ***/ #header{ height:145px; position:relative; } #header h1{ width:324px; margin:45px 0 0 20px; float:left; height:72px;} /*** Content ***/ #content{ background:#fff; width:650px; float:left; min-height:600px; overflow:hidden;} #content h1{color:#F00}/* 设置字体颜色 */ #content .posts{ overflow:hidden; } #content .recent{ margin-bottom:20px; border-bottom:1px solid #f3f3f3; position:relative; overflow:hidden; } /*** Footer ***/ #footer{ clear:both; padding:50px 5px 0; overflow:hidden;} #footer h4{ color:#b99d7f; font-family:Arial, Helvetica, sans-serif; font-size:1.1em; }
7. 給你的CSS程式碼排序
如果程式碼中的屬性都能按照字母排序,那麼查找修改的時候就能更加快速:
/*** 样式属性按字母排序 ***/ div{ background-color:#3399cc; color:#666; font:1.2em/1.4em Arial, Helvetica, sans-serif; height:300px; margin:10px 5px; padding:5px 0 10px 5px; width:30%; z-index:10; }
8. 保持CSS的可讀性
書寫可讀的CSS將會使得更容易找到和修改樣式。對於以下兩種情況,哪種可讀性較高,我想不言而明。
/*** 每个样式属性写一行 ***/ div{ background-color:#3399cc; color:#666; font: 1.2em/1.4em Arial, Helvetica, sans-serif; height:300px; margin:10px 5px; padding:5px 0 10px 5px; width:30%; z-index:10; } /*** 所有的样式属性写在同一行 ***/ div{ background-color:#3399cc; color:#666; font: 1.2em/1.4em Arial, Helvetica, sans-serif; height:300px; margin:10px 5px; padding:5px 0 10px 5px; width:30%; z-index:10; }
當對於一些樣式屬性較少的選擇器,我會寫到一行:
/*** 选择器属性少的写在同一行 ***/ div{ background-color:#3399cc; color:#666;}
對於這個規則並非硬性規定,但無論您採用哪種寫法,我的建議是始終保持代碼一致。屬性多的分行寫,屬性少於3個可以寫一行。
9. 選擇更優的樣式屬性值
CSS中有些屬性採用不同的屬性值,雖然達到的效果差不多,當性能上卻存在著差異,如
差別在於border:0把border設為0px,雖然在頁面上看不見,但按border預設值理解,瀏覽器依然對border-width/border-color進行了渲染,即已經佔用了記憶體值。
而border:none把border設為「none」即沒有,瀏覽器解析「none」時將不作出渲染動作,即不會消耗記憶體值。所以建議使用border:none;
同樣的,display:none隱藏物件瀏覽器不作渲染,不佔用記憶體。而visibility:hidden則會。
10. 使用代替@import
首先,@import不属于XHTML标签,也不是Web标准的一部分,它对于较早期的浏览器兼容也不高,并且对于网站的性能有某些负面的影响。具体可以参考《高性能网站设计:不要使用@import》。所以,请避免使用@import
11. 使用外部样式表
这个原则始终是一个很好的设计实践。不单可以更易于维护修改,更重要的是使用外部文件可以提高页面速度,因为CSS文件都能在浏览器中产生缓存。内置在HTML文档中的CSS则会在每次请求中随HTML文档重新下载。所以,在实际应用中,没有必要把CSS代码内置在HTML文档中:
<style type="text/css" > #container{ .. } #sidebar{ .. } </style>
或
<li style="font-family:Arial, helvetica, sans-serif; color:#666; " >
而是使用导入外部样式表:
<link rel="stylesheet" type="text/css" href="css/styles.css" />
12. 避免使用CSS表达式(Expression)
CSS表达式是动态设置CSS属性的强大(但危险)方法。Internet Explorer从第5个版本开始支持CSS表达式。下面的例子中,使用CSS表达式可以实现隔一个小时切换一次背景颜色:
background-color: expression( (new Date()).getHours()%2 ? "#B8D4FF" : "#F08A00" );
如上所示,expression中使用了JavaScript表达式。CSS属性根据JavaScript表达式的计算结果来设置。
表达式的问题就在于它的计算频率要比我们想象的多。不仅仅是在页面显示和缩放时,就是在页面滚动、乃至移动鼠标时都会要重新计算一次。给CSS表达式增加一个计数器可以跟踪表达式的计算频率。在页面中随便移动鼠标都可以轻松达到10000次以上的计算量。
如果必须使用CSS表达式,一定要记住它们要计算成千上万次并且可能会对你页面的性能产生影响。所以,在非不得已,请避免使用CSS表达式。
13. 代码压缩
当你决定把网站项目部署到网络上,那你就要考虑对CSS进行压缩,出去注释和空格,以使得网页加载得更快。压缩您的代码,可以采用一些工具,如YUI Compressor
利用它可精简CSS代码,减少文件大小,以获得更高的加载速度。
相关推荐:CSS教程
以上是css程式碼規範分享的詳細內容。更多資訊請關注PHP中文網其他相關文章!