6.14日音訊,書寫規(guī)范高效的CSS。雖然大家每天都在書寫css,為什么有的寫的很輕松有的則很費時間,全部書寫好了,還要在調兼容、錯位等等問題呢,其實這就是我們今天要說的是否語法書寫正確、代碼是否冗余、順序是否正確等,只有把這些都了解的透徹了,才能做好css這項工作,才能更加高效的完成我們的工作,今天
邯鄲網站建設首創(chuàng)網絡小編來給大家說一下CSS的一些經驗,告訴大家如何才能寫出標準的高效的樣式表來。
1.用哪個寫哪個標簽,不能全部默認屬性
不同瀏覽器元素的默認屬性有所不同,使用Reset可重置瀏覽器元素的一些默認屬性,以達到瀏覽器的兼容。但需要注意的是,請不要使用全局Reset:
*{margin:0;padding:0;}
這不僅僅因為它是緩慢和低效率的方法,而且還會導致一些不必要的元素也重置了外邊距和內邊距。在此建議參考YUIReset和EricMeyer的做法。
如div,img,a,p{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>Mynameis<spanclass="redblod">hdscwl</span></h1>
問題在于如果你需要把所有原本紅色的字體改成藍色,那修改后就樣式就會變成:
.red{color:bule;}
這樣的命名就會很讓人費解,同樣的命名為.leftBar的側邊欄如果需要修改成右側邊欄也會很麻煩。所以,請不要使用元素的特性(顏色,位置,大小等)來命名一個class或id,您可以選擇意義的命名如:#navigation{...},.sidebar{...},.postwrap{...}
這樣,無論你如何修改定義這些class或id的樣式,都不影響它跟HTML元素間的聯(lián)系。
另外還有一種情況,一些固定的樣式,定義后就不會修改的了,那你命名時就不用擔憂剛剛說的那種情況,如
.alignleft{float:left;margin-right:20px;}
.alignright{float:right;text-align:right;margin-left:20px;}
.clear{clear:both;text-indent:-9999px;}
那么對于這樣一個段落
<pclass="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.4emArial,Helvetica,sans-serif;
padding:5px010px5px;
}
4.利用CSS繼承
如果頁面中父元素的多個子元素使用相同的樣式,那最好把他們相同的樣式定義在其父元素上,讓它們繼承這些CSS樣式。這樣你可以很好的維護你的代碼,并且還可以減少代碼量。那么本來這樣的代碼:
#containerli{font-family:Georgia,serif;}
#containerp{font-family:Georgia,serif;}
#containerh1{font-family:Georgia,serif;}
就可以簡寫成:
#container{font-family:Georgia,serif;}
5.使用多重選擇器
你可以合并多個CSS選擇器為一個,如果他們有共同的樣式的話。這樣做不但代碼簡潔且可為你節(jié)省時間和空間。如:
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.適當?shù)拇a注釋
代碼注釋可以讓別人更容易讀懂你的代碼,且合理的組織代碼注釋,可使得結構更加清晰。你可以選擇做的樣式表的開始添加目錄:
/*------------------------------------
1.Reset
2.Header
3.Content
4.SideBar
5.Footer
-----------------------------------*/
如此你代碼的結構就一目了然,你可以容易的查找和修改代碼。
而對于代碼的主內容,也應適當?shù)募右詣澐?,甚至在有必要的地方在對代碼加以注釋說明,這樣也有利于團隊開發(fā):
/***Header***/
#header{height:145px;position:relative;}
#headerh1{width:324px;margin:45px0020px;float:left;height:72px;}
/***Content***/
#content{background:#fff;width:650px;float:left;min-height:600px;overflow:hidden;}
#contenth1{color:#F00}/*設置字體顏色*/
#content.posts{overflow:hidden;}
#content.recent{margin-bottom:20px;border-bottom:1pxsolid#f3f3f3;position:relative;overflow:hidden;}
/***Footer***/
#footer{clear:both;padding:50px5px0;overflow:hidden;}
#footerh4{color:#b99d7f;font-family:Arial,Helvetica,sans-serif;font-size:1.1em;}
7.給你的CSS代碼排序
如果代碼中的屬性都能按照字母排序,那查找修改的時候就能更加快速:
/***樣式屬性按字母排序***/
div{
background-color:#3399cc;
color:#666;
font:1.2em/1.4emArial,Helvetica,sans-serif;
height:300px;
margin:10px5px;
padding:5px010px5px;
width:30%;
z-index:10;
}
8.保持CSS的可讀性
書寫可讀的CSS將會使得更容易查找和修改樣式。對于以下兩種情況,哪種可讀性更高,我想不言而明。
/***每個樣式屬性寫一行***/
div{
background-color:#3399cc;
color:#666;
font:1.2em/1.4emArial,Helvetica,sans-serif;
height:300px;
margin:10px5px;
padding:5px010px5px;
width:30%;
z-index:10;
}
/***所有的樣式屬性寫在同一行***/
div{background-color:#3399cc;color:#666;font:1.2em/1.4emArial,Helvetica,sans-serif;height:300px;margin:10px5px;padding:5px010px5px;width:30%;z-index:10;}
當對于一些樣式屬性較少的選擇器,我會寫到一行:
/***選擇器屬性少的寫在同一行***/
div{background-color:#3399cc;color:#666;}
對于這個規(guī)則并非硬性規(guī)定,但無論您采用哪種寫法,我的建議是始終保持代碼一致。屬性多的分行寫,屬性少于3個可以寫一行。
9.選擇更優(yōu)的樣式屬性值
CSS中有些屬性采用不同的屬性值,雖然達到的效果差不多,當性能上卻存在著差異,如
區(qū)別在于border:0把border設為0px,雖然在頁面上看不見,但按border默認值理解,瀏覽器依然對border-width/border-color進行了渲染,即已經占用了內存值。
而border:none把border設為"none"即沒有,瀏覽器解析"none"時將不作出渲染動作,即不會消耗內存值。所以建議使用border:none;
同樣的,display:none隱藏對象瀏覽器不作渲染,不占用內存。而visibility:hidden則會。
10.使用<link>代替@import
首先,@import不屬于XHTML標簽,也不是Web標準的一部分,它對于較早期的瀏覽器兼容也不高,并且對于網站的性能有某些負面的影響。
11.使用外部樣式表
這個原則始終是一個很好的設計實踐。不單可以更易于維護修改,更重要的是使用外部文件可以提高頁面速度,因為CSS文件都能在瀏覽器中產生緩存。內置在HTML文檔中的CSS則會在每次請求中隨HTML文檔重新下載。所以,在實際應用中,沒有必要把CSS代碼內置在HTML文檔中:
<styletype="text/css">
#container{..}
#sidebar{..}
</style>
而是使用<link>導入外部樣式表:<linkrel="stylesheet"type="text/css"href="css/styles.css"/>
12.避免使用CSS表達式(Expression)
CSS表達式是動態(tài)設置CSS屬性的強大(但危險)方法。InternetExplorer從第5個版本開始支持CSS表達式。下面的例子中,使用CSS表達式可以實現(xiàn)隔一個小時切換一次背景顏色:
background-color:expression((newDate()).getHours()%2?"#B8D4FF":"#F08A00");
如上所示,expression中使用了JavaScript表達式。CSS屬性根據(jù)JavaScript表達式的計算結果來設置。
表達式的問題就在于它的計算頻率要比我們想象的多。不僅僅是在頁面顯示和縮放時,就是在頁面滾動、乃至移動鼠標時都會要重新計算一次。給CSS表達式增加一個計數(shù)器可以跟蹤表達式的計算頻率。在頁面中隨便移動鼠標都可以輕松達到10000次以上的計算量。
如果必須使用CSS表達式,一定要記住它們要計算成千上萬次并且可能會對你頁面的性能產生影響。所以,在非不得已,請避免使用CSS表達式。
最后不要忘了,當我們全部做好css后,我們要學會壓縮它的體積,也就是減少無用的代碼,比如多余的注釋、重復的寫法、不合理的屬性等,我們可以自己來檢查,也可以通過工具來測試,有些前端制作者寫的css都超過50k,并不是不可以,只是在此告誡大家,冗余的代碼是不太好的書寫習慣??傊卤赜H為,只有我們用心來做,才能做的更加完美。