自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

編寫出色CSS代碼的13個建議

開發(fā) 前端
CSS學(xué)起來并不難,但在大型項目中,就變得難以管理,特別是不同的人在CSS書寫風(fēng)格上稍有不同,團(tuán)隊上就更加難以溝通,為此總結(jié)了一些如何實現(xiàn)高效整潔的CSS代碼原則。

[[205863]]

CSS學(xué)起來并不難,但在大型項目中,就變得難以管理,特別是不同的人在CSS書寫風(fēng)格上稍有不同,團(tuán)隊上就更加難以溝通,為此總結(jié)了一些如何實現(xiàn)高效整潔的CSS代碼原則:

1. 使用Reset但并非全局Reset

不同瀏覽器元素的默認(rèn)屬性有所不同,使用Reset可重置瀏覽器元素的一些默認(rèn)屬性,以達(dá)到瀏覽器的兼容。但需要注意的是,請不要使用全局Reset:

  1. *{ margin:0; padding:0; } 

這不僅僅因為它是緩慢和低效率的方法,而且還會導(dǎo)致一些不必要的元素也重置了外邊距和內(nèi)邊距。在此建議參考YUI Reset和Eric Meyer的做法。我跟Eric Meyer的觀點相同,Reset并不是一成不變的,具體還需要根據(jù)項目的不同需求做適當(dāng)?shù)男薷?,以達(dá)到瀏覽器的兼容和操作上的便利性。我使用的Reset如下:

  1. /** 清除內(nèi)外邊距 **/ 
  2. body, h1, h2, h3, h4, h5, h6, hr, p, 
  3. blockquote, /* structural elements 結(jié)構(gòu)元素 */ 
  4. dl, dt, dd, ul, ol, li, /* list elements 列表元素 */ 
  5. pre, /* text formatting elements 文本格式元素 */ 
  6. form, fieldset, legend, button, input, textarea, /* form elements 表單元素 */ 
  7. th, td, /* table elements 表格元素 */ 
  8. img/* img elements 圖片元素 */{ 
  9. border:medium none; 
  10. margin: 0; 
  11. padding: 0; 
  12. /** 設(shè)置默認(rèn)字體 **/ 
  13. body,button, input, select, textarea { 
  14. font: 12px/1.5 '宋體',tahoma, Srial, helvetica, sans-serif; 
  15. h1, h2, h3, h4, h5, h6 { font-size: 100%; } 
  16. em{font-style:normal;} 
  17. /** 重置列表元素 **/ 
  18. ul, ol { list-style: none; } 
  19. /** 重置超鏈接元素 **/ 
  20. a { text-decoration: none; color:#333;} 
  21. a:hover { text-decoration: underline; color:#F40; } 
  22. /** 重置圖片元素 **/ 
  23. img{ border:0px;} 
  24. /** 重置表格元素 **/ 
  25. table { border-collapse: collapse; border-spacing: 0; }  

2. 良好的命名習(xí)慣

無疑亂七八糟或者無語義命名的代碼,誰看了都會抓狂。就像這樣的代碼:

  1. .aaabb{margin:2px;color:red;} 

我想即使是初學(xué)者,也不至于會在實際項目中如此命名一個class,但有沒有想過這樣的代碼同樣是很有問題的:

  1. <h1>My name is <span>Wiky</span></h1> 

問題在于如果你需要把所有原本紅色的字體改成藍(lán)色,那修改后就樣式就會變成:

  1. .red{color:bule;} 

這樣的命名就會很讓人費解,同樣的命名為.leftBar的側(cè)邊欄如果需要修改成右側(cè)邊欄也會很麻煩。所以,請不要使用元素的特性(顏色,位置,大小等)來命名一個class或id,您可以選擇意義的命名如:#navigation{…},.sidebar{…},.postwrap{…}

這樣,無論你如何修改定義這些class或id的樣式,都不影響它跟HTML元素間的聯(lián)系。

另外還有一種情況,一些固定的樣式,定義后就不會修改的了,那你命名時就不用擔(dān)憂剛剛說的那種情況,如

  1. .alignleft{float:left;margin-right:20px;} 
  2. .alignright{float:right;text-align:right;margin-left:20px;} 
  3. .clear{clear:both;text-indent:-9999px;}  

那么對于這樣一個段落

  1. <p class="alignleft">我是一個段落!</p> 

如果需要把這個段落由原先的左對齊修改為右對齊,那么只需要修改它的className就為alignright就可以了。

3. 代碼縮寫

CSS代碼縮寫可以提高你寫代碼的速度,精簡你的代碼量。在CSS里面有不少可以縮寫的屬性,包括margin,padding,border,font,background和顏色值等,如果您學(xué)會了代碼縮寫,原本這樣的代碼:

  1. li{ 
  2. font-family:Arial, Helvetica, sans-serif; 
  3. font-size: 1.2em; 
  4. line-height: 1.4em; 
  5. padding-top:5px; 
  6. padding-bottom:10px; 
  7. padding-left:5px; 
  8.  

就可以縮寫為:

  1. li{ 
  2. font: 1.2em/1.4em Arial, Helvetica, sans-serif; 
  3. padding:5px 0 10px 5px; 
  4.  

如果您想更了解這些屬性要怎么縮寫,可以參考《常用CSS縮寫語法總結(jié)》或者下載CSS-Shorthand-Cheat-Sheet.pdf 。

4. 利用CSS繼承

如果頁面中父元素的多個子元素使用相同的樣式,那最好把他們相同的樣式定義在其父元素上,讓它們繼承這些CSS樣式。這樣你可以很好的維護(hù)你的代碼,并且還可以減少代碼量。那么本來這樣的代碼:

  1. #container li{ font-family:Georgia, serif; } 
  2.  
  3. #container p{ font-family:Georgia, serif; } 
  4.  
  5. #container h1{font-family:Georgia, serif; }  

就可以簡寫成:

  1. #container{ font-family:Georgia, serif; } 

5. 使用多重選擇器

你可以合并多個CSS選擇器為一個,如果他們有共同的樣式的話。這樣做不但代碼簡潔且可為你節(jié)省時間和空間。如:

  1. h1{ font-family:Arial, Helvetica, sans-serif; font-weight:normal; } 
  2.  
  3. h2{ font-family:Arial, Helvetica, sans-serif; font-weight:normal; } 
  4.  
  5. h3{ font-family:Arial, Helvetica, sans-serif; font-weight:normal; }  

可以合并為

  1. h1, h2, h3{ font-family:Arial, Helvetica, sans-serif; font-weight:normal; } 

6. 適當(dāng)?shù)拇a注釋

代碼注釋可以讓別人更容易讀懂你的代碼,且合理的組織代碼注釋,可使得結(jié)構(gòu)更加清晰。你可以選擇做的樣式表的開始添加目錄:

  1. /*------------------------------------ 
  2.  
  3. 1. Reset 
  4.  
  5. 2. Header 
  6.  
  7. 3. Content 
  8.  
  9. 4. SideBar 
  10.  
  11. 5. Footer 
  12.  
  13. ----------------------------------- */  

如此你代碼的結(jié)構(gòu)就一目了然,你可以容易的查找和修改代碼。

而對于代碼的主內(nèi)容,也應(yīng)適當(dāng)?shù)募右詣澐?,甚至在有必要的地方在對代碼加以注釋說明,這樣也有利于團(tuán)隊開發(fā):

  1. /*** Header ***/ 
  2. #header{ height:145px; position:relative; } 
  3. #header h1{ width:324px; margin:45px 0 0 20px; float:left; height:72px;} 
  4. /*** Content ***/ 
  5. #content{ background:#fff; width:650px; float:leftmin-height:600px; overflow:hidden;} 
  6. #content h1{color:#F00}/* 設(shè)置字體顏色 */ 
  7. #content .posts{ overflow:hidden; } 
  8. #content .recent{ margin-bottom:20px; border-bottom:1px solid #f3f3f3; position:relative; overflow:hidden; } 
  9. /*** Footer ***/ 
  10. #footer{ clear:both; padding:50px 5px 0; overflow:hidden;} 
  11. #footer h4{ color:#b99d7f; font-family:Arial, Helvetica, sans-serif; font-size:1.1em; }   

7. 給你的CSS代碼排序

如果代碼中的屬性都能按照字母排序,那查找修改的時候就能更加快速:

  1. /*** 樣式屬性按字母排序 ***/ 
  2. div{ 
  3. background-color:#3399cc; 
  4. color:#666; 
  5. font:1.2em/1.4em Arial, Helvetica, sans-serif; 
  6. height:300px; 
  7. margin:10px 5px; 
  8. padding:5px 0 10px 5px; 
  9. width:30%; 
  10. z-index:10; 
  11.  

8. 保持CSS的可讀性

書寫可讀的CSS將會使得更容易查找和修改樣式。對于以下兩種情況,哪種可讀性更高,我想不言而明。

  1. /*** 每個樣式屬性寫一行 ***/ 
  2. div{ 
  3. background-color:#3399cc; 
  4. color:#666; 
  5. font: 1.2em/1.4em Arial, Helvetica, sans-serif; 
  6. height:300px; 
  7. margin:10px 5px; 
  8. padding:5px 0 10px 5px; 
  9. width:30%; 
  10. z-index:10; 
  11. /*** 所有的樣式屬性寫在同一行 ***/ 
  12. 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; }  

當(dāng)對于一些樣式屬性較少的選擇器,我會寫到一行:

  1. /*** 選擇器屬性少的寫在同一行 ***/ 
  2.  
  3. div{ background-color:#3399cc; color:#666;}  

對于這個規(guī)則并非硬性規(guī)定,但無論您采用哪種寫法,我的建議是始終保持代碼一致。屬性多的分行寫,屬性少于3個可以寫一行。

9. 選擇更優(yōu)的樣式屬性值

CSS中有些屬性采用不同的屬性值,雖然達(dá)到的效果差不多,當(dāng)性能上卻存在著差異,如

區(qū)別在于border:0把border設(shè)為0px,雖然在頁面上看不見,但按border默認(rèn)值理解,瀏覽器依然對border-width/border-color進(jìn)行了渲染,即已經(jīng)占用了內(nèi)存值。

而border:none把border設(shè)為“none”即沒有,瀏覽器解析“none”時將不作出渲染動作,即不會消耗內(nèi)存值。所以建議使用border:none;

同樣的,display:none隱藏對象瀏覽器不作渲染,不占用內(nèi)存。而visibility:hidden則會。

10. 使用代替@import

首先,@import不屬于XHTML標(biāo)簽,也不是Web標(biāo)準(zhǔn)的一部分,它對于較早期的瀏覽器兼容也不高,并且對于網(wǎng)站的性能有某些負(fù)面的影響。具體可以參考《高性能網(wǎng)站設(shè)計:不要使用@import》。所以,請避免使用@import

11. 使用外部樣式表

這個原則始終是一個很好的設(shè)計實踐。不單可以更易于維護(hù)修改,更重要的是使用外部文件可以提高頁面速度,因為CSS文件都能在瀏覽器中產(chǎn)生緩存。內(nèi)置在HTML文檔中的CSS則會在每次請求中隨HTML文檔重新下載。所以,在實際應(yīng)用中,沒有必要把CSS代碼內(nèi)置在HTML文檔中:

  1. <style type="text/css" > 
  2.     #container{ .. } 
  3.     #sidebar{ .. } 
  4. </style>  

  1. <li style="font-family:Arial, helvetica, sans-serif; color:#666; " > 

而是使用<link>導(dǎo)入外部樣式表:

  1. <link rel="stylesheet" type="text/css" href="css/styles.css" /> 

12. 避免使用CSS表達(dá)式(Expression)

CSS表達(dá)式是動態(tài)設(shè)置CSS屬性的強大(但危險)方法。Internet Explorer從第5個版本開始支持CSS表達(dá)式。下面的例子中,使用CSS表達(dá)式可以實現(xiàn)隔一個小時切換一次背景顏色:

  1. background-color: expression( (new Date()).getHours()%2 ? "#B8D4FF" : "#F08A00" ); 

如上所示,expression中使用了JavaScript表達(dá)式。CSS屬性根據(jù)JavaScript表達(dá)式的計算結(jié)果來設(shè)置。

表達(dá)式的問題就在于它的計算頻率要比我們想象的多。不僅僅是在頁面顯示和縮放時,就是在頁面滾動、乃至移動鼠標(biāo)時都會要重新計算一次。給CSS表達(dá)式增加一個計數(shù)器可以跟蹤表達(dá)式的計算頻率。在頁面中隨便移動鼠標(biāo)都可以輕松達(dá)到10000次以上的計算量。

如果必須使用CSS表達(dá)式,一定要記住它們要計算成千上萬次并且可能會對你頁面的性能產(chǎn)生影響。所以,在非不得已,請避免使用CSS表達(dá)式。

13. 代碼壓縮

當(dāng)你決定把網(wǎng)站項目部署到網(wǎng)絡(luò)上,那你就要考慮對CSS進(jìn)行壓縮,出去注釋和空格,以使得網(wǎng)頁加載得更快。壓縮您的代碼,可以采用一些工具

利用它可精簡CSS代碼,減少文件大小,以獲得更高的加載速度。

14. 總結(jié)

在本文中,我力圖更詳盡的總結(jié)書寫更高效的CSS代碼的原則,但鑒于本人見識和精力有限,我還是希望這些原則能幫助您更好的書寫和管理您的CSS代碼,不知您又是如何書寫CSS的,是否也有一些想要分享的技巧?給我留言吧謝謝~ 

責(zé)任編輯:龐桂玉 來源: 前端大全
相關(guān)推薦

2012-05-22 00:06:01

程序員軟件開發(fā)代碼編寫

2024-10-22 08:11:15

2020-08-06 00:25:38

Python代碼開發(fā)

2012-06-27 14:12:45

CSS

2017-08-28 14:58:19

CSSFlexbox注釋格式優(yōu)化

2016-09-07 19:58:47

CSS代碼Web

2017-08-30 19:32:08

代碼程序員編程

2017-08-30 11:10:25

代碼

2022-02-01 16:02:03

PythonWeb服務(wù)器

2019-02-21 09:32:48

C語言源碼開發(fā)

2022-11-26 09:49:07

分布式鏈路追蹤技術(shù)

2012-05-30 15:58:39

Java編程代碼

2012-09-03 14:34:39

Java編程代碼

2010-09-01 11:08:09

CSS

2021-04-25 11:31:45

React代碼整潔代碼的實踐

2022-02-17 10:05:21

CSS代碼前端

2019-12-24 10:40:53

Java代碼編程

2022-03-11 12:14:43

CSS代碼前端

2022-06-27 19:01:04

Python應(yīng)用程序數(shù)據(jù)

2012-04-27 16:54:57

Java代碼
點贊
收藏

51CTO技術(shù)棧公眾號