国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

六種組織CSS的方式

warmcheng / 1946人閱讀

摘要:意為面向對象的。這種書寫代碼的風格建議將樣式分為幾個部分,稱為層。這種方法避免了類名的重疊。一些開發者注意到使用這種原則來書寫和維護代碼是相當方便的在某種程度上,作者拿出了最好的成果,并且以一種簡潔的方式展示了這項技術。

Ben Frain曾經說過,寫css代碼很容易,但是擴展和維護卻很難。本文就介紹了一套方案來解決這個問題。

OOCSS

OOCSS 意為面向對象的CSS。這種方法有兩種主要 觀點:

結構與設計分離

容器和內容分離

使用這套結構,開發者能得到可以在不同地方使用的一般類。

在這一步,會存在兩點(通常就好和壞):

好: 通過重復利用減少代碼量 (DRY原則)。

壞: 組合使用。當你改變一個特定元素的樣式, 你需要改變的很有可能不僅僅是CSS(因為大多是類都是公共的),而且還會添加新的類。

此外,這種OOCSS的方法本身并沒有明確的規則,而是抽象的建議,所以這種方法在生產中的結果會有不同。

實際結果就是,這種OOCSS的思想啟發了其他人創建出屬于他們自己更具體的代碼結構。

SMACSS

SMACSS 意為可擴展、模塊化(Scalable and Modular Architecture)的CSS。這種方法的主要目的是減少代碼量,并且使代碼維護更簡單。

Jonathan Snook將樣式分為了5個部分:

Base rules. 這些是主要的網頁元素樣式 - body, input, button, ul, ol等。在這部分, 我們主要使用
HTML標簽和屬性選擇器, 特殊的情況下使用 - 類 (例如, 你有JavaScript的樣式選擇);

Layout rules. 這些是全局元素的樣式,比如

的尺寸等。Jonathan建議在這些元素中使用id選擇器,因為這些元素在頁面中不會出現超過一次。然而,這篇文章的作者認為這并不是好的做法。(在樣式文件中,不管id什么時候出現,都會在其它的某個地方造成些麻煩).

Modules rules.在單個頁面中,塊會被多次使用。對于模塊的分類,并不建議使用id和標簽選擇器(分別為了重復使用和上下文獨立性)。

State rules. 在這一部分,規定了模塊的不同狀態和網頁基礎,這是唯一可以使用關鍵字!Important 的地方。

Theme rules. 設計你可能需要更換的樣式。

另外,還建議對屬于某個特定分組的類設定命名空間,并為JavaScript中使用的類使用多帶帶的命名空間。

這種方法使得編寫和維護代碼都更加容易,并且吸引了很多開發者。

Atomic CSS

使用Atomic CSS,為每一個可重用的屬性創建一個多帶帶的類。比如 margin-top: 1px;就可以創建一個類 mt-1,width: 200px;可以創建一個w-200。

這種風格允許通過重復聲明來盡可能減少代碼,并且改變模塊樣式也相對容易,for example, when changing a technical task.

然而,這種方法也有很大的缺點:

類名都是描述性的屬性名,而不是對元素本身的語義化描述,有時會使得開發復雜化。

直接在HTML中顯示設置。

因為這些缺點,這種方法遭到了大量批評。但是,這種方法對于大型項目而言,還是很有效的。

此外Atomic CSS也被用在不同的框架里來指明矯正元素樣式,還有一些其它方法的展現層。

MCSS

MCSS是多層CSS。這種書寫代碼的風格建議將樣式分為幾個部分,稱為層(layers)。

底層(Zero layer or foundation)。這層代碼負責重置瀏覽器樣式(比如reset.css 和
normalize.css);

基礎層(Base layer)包含網站重復使用的元素的樣式:按鈕、文本輸入框等。

項目層(Project layer)包含多帶帶的模塊和一個“上下文”——根據客戶端瀏覽器,查看站點/應用程序的設備,用戶角色等對元素的修改。

修飾層(Cosmetic layer)代碼是OOCSS的風格,對元素的外觀做一些小的修改。建議只保留影響元素外觀,但不會破壞網站布局的樣式(比如顏色和不重要的縮進)。

層級之間的交互層次是很重要的:

基礎層(base layer)定義中性樣式,不影響其他層。

基礎層(base layer)的元素只會影響本層的類。

項目層(project layer)的元素能影響基礎層和項目層。

修飾層(cosmetic layer)是以描述性OOCSS類(“atomic”類)的形式設計的,并且不會影響其他的CSS代碼,可選擇性的用于標記當中。

AMCSS

AMCSS就是"Attribute Modules for CSS(css的屬性模塊)"。

讓我們看一個例子:

Button

這樣一個類的鏈并不簡單,所以讓我通過屬性來組織這些值。

結果如下:

Button

為了避免命名沖突,添加命名空間到屬性上是個好主意。然后,我們的按鈕就變成了下面的樣子:

Button

如果你使用驗證器檢查代碼,會發現并沒有am-button這個屬性,所以可以在屬性名稱前加上data-。

使用一個鮮為人知,作為class屬性的選擇器"~ =" (IE7+):該選擇器選擇屬性值包含指定單詞的元素,用空格分隔。所以,這種class~="link"的選擇器類似于a.class.button這樣的選擇器。即使專門使用,因為class選擇器也只是該屬性選擇器的特殊情況。

因此,CSS代碼

.button {...}
.button--large {...}
.button--blue {...}

轉換為

[am-button] {...}
[am-button~="large"] {...}
[am-button~="blue"] {...}

如果你覺得這樣的代碼不常見,也可以使用不那么激進的AMCSS形式:

FUN

FUN 表示選擇器的扁平結構(Flat hierarchy of selectors),功能樣式(Utility styles),命名分割組件(Name-spaced components)。

每個字母后面都有特定的原則:

F, flat hierarchy of selectors: 建議使用類來選擇元素,避免無用的串聯,并且不使用id。

U, utility styles: 鼓勵創建atomic風格的服務來解決典型的拼湊任務,比如 w100表示width:
100%;,fr表示float: right;

N, name-spaced components: Ben建議添加命名空間來指定特殊的模塊元素的樣式。這種方法避免了類名的重疊。

一些開發者注意到使用這種原則來書寫和維護代碼是相當方便的;在某種程度上,作者拿出了最好的成果,并且以一種簡潔的方式展示了這項技術。

這種方法對項目和代碼結構還有不小要求,它只建立記錄元素的首選形式和標記使用的方法。但是在小項目中,這些規則足夠創建出足夠高質量的代碼。

總結

正如你所見,這些方法里并沒有一個完美的。這些方法中沒有一條絕對的規則——你可以從開始使用一套方案來創建你自己的東西, 或者從頭開始創建一條新的方法。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/114750.html

相關文章

  • 六種組織CSS方式

    摘要:意為面向對象的。這種書寫代碼的風格建議將樣式分為幾個部分,稱為層。這種方法避免了類名的重疊。一些開發者注意到使用這種原則來書寫和維護代碼是相當方便的在某種程度上,作者拿出了最好的成果,并且以一種簡潔的方式展示了這項技術。 Ben Frain曾經說過,寫css代碼很容易,但是擴展和維護卻很難。本文就介紹了一套方案來解決這個問題。 OOCSS showImg(https://segment...

    leeon 評論0 收藏0
  • 六種組織CSS方式

    摘要:意為面向對象的。這種書寫代碼的風格建議將樣式分為幾個部分,稱為層。這種方法避免了類名的重疊。一些開發者注意到使用這種原則來書寫和維護代碼是相當方便的在某種程度上,作者拿出了最好的成果,并且以一種簡潔的方式展示了這項技術。 Ben Frain曾經說過,寫css代碼很容易,但是擴展和維護卻很難。本文就介紹了一套方案來解決這個問題。 OOCSS showImg(https://segment...

    raledong 評論0 收藏0
  • Zepto 源碼分析 4 - 核心模塊入口

    摘要:對象構造函數讀入的兩個參數與在中也有明確的規范,用以保證構造函數的簡單性。 承接第三篇末尾內容,本篇結合官方 API 進入對 Zepto 核心的分析,開始難度會比較大,需要重點理解幾個核心對象的關系,方能找到線索。 $() 與 Z 對象創建 Zepto Core API 的首個方法 $() 按照其官方解釋: Create a Zepto collection object by pe...

    xzavier 評論0 收藏0
  • 搞定css三欄布局(六種方法)

    摘要:塊級元素生成一個矩形框,作為文檔流的一部分行內元素則會創建一個或多個行框,置于父級元素中。元素框相對于之前正常文檔流中的位置發生偏移,并且原先的位置仍然被占據。元素框不再占有文檔流位置,并且相對于視窗進行定位。 談到布局,首先就要想到定位,當別人問我,css的position定位有哪些取值,分別表示什么意思?呃.....抓頭.gif,是時候回歸本質,看定義了。 1. 定位 1.1 po...

    evin2016 評論0 收藏0
  • ELSE 技術周刊(2017.12.18期)

    摘要:程序人生從黑客到創業,他說技術創業該這么做知道創宇,安全焦點民間白帽黑客組織核心成員,分享他創業感悟和踩過的那些坑。技術周刊由小組出品,匯聚一周好文章,周刊原文。 業界動態 他們寫的代碼能上天!NASA的10條安全編碼準則大公開 NASA的10條代碼編寫規范準則 本期推薦 Node.js 中遇到含空格 URL 的神奇Bug——小范圍深入 HTTP 協議 本文闡述了博主遇到含空格 URL...

    douzifly 評論0 收藏0

發表評論

0條評論

warmcheng

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<