高維護性的CSS

2022-07-20 12:18:13 字數 4634 閱讀 1484

1、如何高效地組織css**。

所有的css都可以分為兩大類:通用類和業務類。將它們的**放置於不同的目錄中。

(1) 通用類資料夾下應該有default.css、common.css、ie-style.css樣式檔案等。

default.css檔案中是重置元素的預設樣式,目的是讓元素在各個瀏覽器中有統一的外觀。

common.css檔案中放置共通模組的樣式和一些基礎樣式。共通模組包括頁面對話方塊、提示框等共通元件的樣式以及頁面頭部、底部、側邊欄等共通ui模組的樣式;基礎樣式包括全域性的頁面布局設定、字型設定、背景和前景色等,也包括一些公有的class。

乙個公有class是用來設定文字不可見的,**如下:

.text-hide

ie-style.css檔案中放置相容舊版ie瀏覽器的樣式。在頁面中使用ie瀏覽器獨有的條件注釋方法引用此樣式檔案。示例**如下:

(2)具體業務模組:不同模組的樣式檔案放置於不同的資料夾中。分割模組的粒度並沒有乙個標準,原則上盡量保證每個模組對應的樣式檔案行數不超過200行。

檔案中按照一定的規則來組織個樣式宣告:

樣式宣告的順序應該按照模組中元素的層級關係來處理,比如,應該從父元素開始定義。如果是同一級的元素,則按照元素在頁面的位置從上到下、從左到右地定義對應的樣式。在多個元素共用相同的宣告時,則先宣告共通樣式,然後宣告個體樣式。

使用less和sass來編寫css樣式:

less和sass是動態的樣式語言,將css賦予了動態語言的特性,如變數、繼承、函式等,並且可利用css樣式的預編譯技術產生最終的css樣式。

less:lesscss.org 

sass:

2、使用css reset:統一瀏覽器顯示效果。

重置元素預設樣式的方式稱為css reset技術。

第乙個重置樣式檔案——undohtml.css,它有6條樣式規則,**如下:

:link, :visited ul, ol h1,h2,h3,h4,h5,h6,

pre,

form,

body,

html,

p,blockquote,

fieldset,

input a img, :link img, :visited img address

另乙個樣式重置方案。這個方案簡單,但是增加了後續開發的複雜度,並不能有效地提高整體開發的效率。**如下:

*

目前使用較廣泛的重置方案有eric meter開發的reset css: 和雅虎公司前端技術團隊開發的yui reset css:

3、給css樣式定義排序。

如果css屬性按照一定的規則排序,那麼在開發過程中可以防止屬性的重複定義,**的檢查者也能很清晰地檢視css樣式定義,更關鍵的是在後續維護過程中能快速定位特定的樣式屬性。

(1)按型別分組排序

這種排序最複雜,卻也是最合理的方式。andy ford推薦過一種按照型別分組排序的方式,他把css屬性分為7大類:顯示與浮動(diaply&flow)、定位(positioning)、尺寸(dimensions)、邊框相關屬性(margin、padding、borders、outline)、字型樣式(typographic styles)、背景(backgrounds)、其他樣式(opacity、cursors、generated、content)。andy ford給出了乙個例子:

(2)按字母序排序

規則是按照屬性的首字母從a到z排序,忽略瀏覽器字首(如-webkit-、-moz-、-o-及-ms-)。

(3)按定義長度排序

排列的方式可以從長到短,也可以從短到長(使用較少)。

4、合理利用css的權重:提高**的重用性。

css權重指的是選擇符的優先順序,優先順序高的css樣式會覆蓋優先順序低的樣式,優先順序越高說明權重越高。

css權重是通過如下規則計算的:

1)標籤中使用style=""屬性設定的樣式的權重(=a,相當與1000)。

2)計算選擇符中的id選擇器的數量(=b,相當與100)。

3)計算選擇符中的類選擇器、屬性選擇器和偽類選擇器的數量(=c,相當與10)。

4)計算選擇符中的標籤型別選擇器和偽物件選擇器的數量(=d,相當與1)。

5)忽略全域性選擇器(*相當與0)。

6)!important 的權重是最高的。

基礎選擇器具有這樣的優先順序:id> 類|偽類|屬性選擇 > 標籤型別|偽物件 > 萬用字元。

a     /*

特殊性值:0,0,0,1

*/div a /*

特殊性值:0,0,0,2

*/.demo a /*

特殊性值:0,0,1,1

*/.demo input[type="text"] /*

特殊性值:0,0,2,1

*/.demo *[type="text"] /*

特殊性值:0,0,2,0

*/#demo a /*

特殊性值:0,1,0,1

*/div#demo a /*

特殊性值:0,1,0,2

*/

如果兩個選擇符的權重相同,則可按照「就近原則」來判斷,最後定義的選擇符會被採用。

定義選擇符的原則是盡量使選擇符的權重低:

1)css樣式中盡量不要使用id選擇器。

2)減少子選擇器的層級

減少選擇器的層級的過程就是降低選擇符整體權重的過程。同時,子選擇器的層級越少,對html結構的依賴就越低。

3)使用組合的css類選擇器

使用css選擇器組合的方式,開發者可以不用考慮css樣式覆蓋的問題,避開了計算選擇符權重的過程,同時提高了**的重用性,還減少了類的數量。

組合的概念是把乙個複雜的父類中可變的部分和穩定部分分割開來,把穩定部分作為主體類,至於可變部分,則按照邏輯分為幾個簡單的類,類與類之間沒有繼承關係。

乙個簡單的例子:例子中,不變的是文字的字型尺寸,可變的是文字的顏色。

<

div

id="test"

class

="test"

>

這是一段

<

span

class

="common"

>重要的文字

span

>

,請

<

span

class

="important"

>不要刪除。

span

>

div>

/*

這是css樣式

*/.test .common .important

5、css**的相容性:如何相容ie瀏覽器。

為了相容舊版瀏覽器而新增的額外**,被稱為hack**。

以下是一些相容ie瀏覽器的實踐方法:

1)熟悉ie瀏覽器中常見的樣式相容問題

有相容問題的ie瀏覽器主頁集中在ie8及以下版本中。ie瀏覽器下的相容問題一般分為兩類,一類是瀏覽器本身的bug,另一類是和標準不相容,或者不支援標準。

2)分離樣式相容**

一般樣式hack方法包括選擇器的hack和樣式屬性的hack。

最佳的做法是集中管理相容**。在ie瀏覽器中可以使用新增注釋,讓不同瀏覽器載入不同的樣式檔案以達到相容**和正常**分離的目的。

<

link

rel="stylesheet"

media

="screen"

href

="style.css"

/>

為了提高相容樣式的優先順序,可以在根元素(或者元素)上針對不同的瀏覽器新增不同的樣式類,示例**如下:

6、em、px還是%

w3c官方文件主要把尺寸單位分為相對長度單位和絕對長度單位兩種。相對單位長度分為字型相對單位和視窗相對單位,字型相對單位包括:em、ex、ch、rem,視窗相對單位包括:vw、vh、vmin及vmax。絕對長度單位定義的長度是固定的,使用的是物理度量單位,包括:cm、mm、in、px、pt及pc。

1)px:是pixel的縮寫,表示畫素。

2)em:em是乙個相對單位。等同於元素上計算的字型大小值,比如2em表示的大小等同於所應用於元素上字型大小的兩倍

3)百分比:%是相對於父元素尺寸來計算的。

最佳實踐:

1)盡量設定相對尺寸:如果期望尺寸隨著字型的改變而改變,則應該使用em,如果期望尺寸尺寸隨著父元素尺寸的改變而改變,則應該使用百分比。例如:設定行高一般使用em,而設定高度或者寬度則一般使用百分比。

2)只有在可預知元素尺寸的情況下才使用絕對尺寸

3)使用em設定字型大小:在使用em設定字型大小時應該避免設定超過兩層的字型相對尺寸。css3中引入了rem單位,rem是相對於根元素的字型大小來計算的。

軟體的可維護性和可復用性

軟體的復用 reuse 或重用擁有眾多優點,如可以提高軟體的開發效率,提高軟體質量,節約開發成本,恰當的復用還可以改善系統的可維護性。物件導向設計復用的目標在於實現支援可維護性的復用。在物件導向的設計裡面,可維護性復用都是以物件導向設計原則為基礎的,這些設計原則首先都是復用的原則,遵循這些設計原則可...

oracle維護資料的完整性

oracle維護資料的完整性 約束 在oracle中,約束包括 not null,unique,primary key,foreign key 和check五種.a not null 即非空 b unique 唯一 當定義了唯一約束後,該列值是不能重複的,但是可以為null c primary ke...

可維護性的常見度量指標

可維護性的常見度量指標 行數 指 中的行數。非常高的數值可能表明某種型別或方法試圖做太多工作,應該將其分解為幾個部分分別實現。同時,也表明型別或方法可能難以維護。可維護性指數 通過計算,得到乙個0 100的索引值,用以表示維護 的相對容易性,該索引值越大,表明程式越容易維護。該指數基於以下幾點進行計...