搜尋
首頁web前端css教學css程式碼規範分享

css程式碼規範分享

Feb 03, 2021 am 11:40 AM
css規範

css程式碼規範分享

我們在學習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 id="My-nbsp-name-nbsp-is-nbsp-span-nbsp-class-red-nbsp-blod-Wiky-span">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中文網其他相關文章!

陳述
本文轉載於:博客园。如有侵權,請聯絡admin@php.cn刪除
這麼多顏色鏈接這麼多顏色鏈接Apr 13, 2025 am 11:36 AM

最近有一系列有關顏色的工具,文章和資源。請允許我通過將它們四捨五之後關閉幾個標籤,以供您享受。

自動利潤在Flexbox中的工作方式自動利潤在Flexbox中的工作方式Apr 13, 2025 am 11:35 AM

羅賓以前已經介紹過這一點,但是我在過去的幾周里聽到了一些關於它的困惑,看到另一個人在解釋它,我想

移動彩虹移動彩虹Apr 13, 2025 am 11:27 AM

我絕對喜歡三明治網站的設計。在許多美麗的功能中,這些標題是滾動時帶有彩虹的下線。它不是

新年,新工作?讓我們做一個網格驅動的簡歷!新年,新工作?讓我們做一個網格驅動的簡歷!Apr 13, 2025 am 11:26 AM

許多流行的簡歷設計通過以網格形狀鋪設部分來充分利用可用的頁面空間。讓我們使用CSS網格創建一個佈局

將用戶擺脫過多習慣的一種方法將用戶擺脫過多習慣的一種方法Apr 13, 2025 am 11:25 AM

頁面重新加載是一回事。有時,當我們認為它沒有響應或認為新內容可用時,我們會刷新頁面。有時我們只是生氣

域驅動的設計與React域驅動的設計與ReactApr 13, 2025 am 11:22 AM

關於如何在React世界中組織前端應用的指導很少。 (只需移動文件,直到“感覺正確”,大聲笑)。真相

檢測非活動用戶檢測非活動用戶Apr 13, 2025 am 11:08 AM

大多數情況下,您並不真正在乎用戶是否積極參與或暫時非活動。不活躍,意思,也許他們

Wufoo ZapierWufoo ZapierApr 13, 2025 am 11:02 AM

Wufoo一直在集成方面非常出色。他們與特定應用程序(例如廣告系列顯示器,MailChimp和Typekit)進行集成,但他們也

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
4 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能