中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

CSS規范BEMCSS和OOCSS的示例分析

發布時間:2021-03-18 15:00:10 來源:億速云 閱讀:241 作者:小新 欄目:web開發

這篇文章主要介紹CSS規范BEMCSS和OOCSS的示例分析,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

BEM(Block, Element, Modifier) CSS 介紹

BEM是一種 前端命名規范 ,顧名思議就是將頁面拆分成每一個富有語義的塊,塊和塊可以嵌套,用 連接符 代表各模塊之間的關系以及元素狀態,生成一種模塊化、可復用、高可維護性和結構化的CSS代碼。

block

element

modifier(修飾語)

獨立且有意義的實體, e.g. header , container , menu , checkbox , etc.

Block的一部分且沒有獨立的意義, header title , menu item , list item , etc.

Blocks或Elements的一種標志,可以用它改變其表現形式、行為、狀態 disabled , checked , fixed

命名規則

通過雙下劃線__連接后代block或者element ,用雙連字符--連接修飾語。

CSS規范BEMCSS和OOCSS的示例分析

CSS規范BEMCSS和OOCSS的示例分析

我們完全可以通過css還原出html代碼結構

結論

程序員最大的困難是什么==>起名,日常開發中我們也遇到自己的樣式被其他人覆蓋了,大部分原因出在命名沖突,BEM恰恰解決了這一痛點,我們只需要外層樣式名是一個有意義且獨立唯一,他的后代就可以放心的用content,title等連接。(媽媽再也不用擔心我不會起名了)

優點:結構清晰,語義化。

缺點:如果html結構嵌套比較深會導致類名比較長。

OOCSS(Object Oriented CSS) 介紹

OOCSS并不是一種約定的命名規范,是一種面向對象的思想,面向對象我們并不陌生,將模塊抽象成對象,其核心就是用最簡單的方式編寫最整潔,最于凈的CSS代碼,從而使代碼更具重用性,可維護性和可擴展性。

核心思想:

  • 減少對 HTML 結構的依賴

  • 增加 CSS class 重用

原則

減少對 HTML 結構的依賴

CSS規范BEMCSS和OOCSS的示例分析

一般的導航欄寫法,如果要對那些 <a> 標簽定義樣式,CSS 的寫法可能寫成 .nav__main ul li a {} ,這種寫法先不管效能上的問題,可以看出來過度地依賴元素標簽的結構,有可能之后 HTML 結構改變,這個 CSS 就必須跟著重構,造成維護上多余的成本,OOCSS提倡給a標簽加上class .nav__main__item

增加 CSS class 重復性的使用

CSS規范BEMCSS和OOCSS的示例分析

在使用OOCSS之前我們寫一個樣式可能是這樣的,這樣寫的弊端是隨處可見的重復代碼,維護起來特別麻煩。

CSS規范BEMCSS和OOCSS的示例分析

我們可以通過分析抽象出他們共有的樣式,因此提出了一個可重用的字體樣式。

結論

OOCSS最重要的是從項目的頁面中分析抽象出“對象”組件,并給這些對象創建CSS規則進行完善,然后無論是在項目中新建頁面還是在模塊中添加元素,只須重寫少量的甚至不寫任何樣式。

BEM和OOCSS的結合

CSS規范BEMCSS和OOCSS的示例分析

我們開發一個顯示物品重量組件,我們平常寫的代碼可能是這樣的。

CSS規范BEMCSS和OOCSS的示例分析

CSS規范BEMCSS和OOCSS的示例分析

看起來沒什么毛病,但是無論是可維護性,簡潔度都非常的差。如果我們使用BEM和OCCSS我們可以將我們的代碼變成這樣。

CSS規范BEMCSS和OOCSS的示例分析

CSS規范BEMCSS和OOCSS的示例分析

相對于前種方案,命名比較冗長,但是保證CSS類名不會重復的,樣式不依賴html結構,復用class,正是BEM和OOCSS的核心思想。

以上是“CSS規范BEMCSS和OOCSS的示例分析”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

郸城县| 开封县| 固安县| 卢湾区| 潞城市| 岐山县| 旬阳县| 越西县| 开化县| 洞口县| 鞍山市| 敦煌市| 嘉禾县| 姜堰市| 江津市| 烟台市| 遵化市| 衡南县| 澄城县| 内丘县| 岑巩县| 台中市| 秀山| 黄浦区| 兰溪市| 谷城县| 无棣县| 县级市| 文水县| 平顺县| 阿勒泰市| 肇庆市| 广南县| 桐梓县| 尉氏县| 临安市| 清苑县| 夏津县| 通州区| 华亭县| 鄂托克旗|