BEM
Block Element Modifiercss
http://getbem.com/introduction/
https://cssguidelin.es/#bem-l...
https://www.w3cplus.com/css/s...
http://www.sohu.com/a/1501527...
http://suitcss.github.io/
https://smacss.com/ scalable modular architecture
http://oocss.org/ object oriented
網絡發展是由模塊化的目的驅動的:將項目分割成幾部分以使其易於管理。Web組件
1.避免繼承,並經過每一個元素(如)使用獨特的 CSS類提供某種範圍。.my-component__list-item
2.經過將CSS 特性保持在最低水平來減小樣式衝突。
3.模塊化環境中繞過繼承
4.嵌套選擇器提升了CSS的特異性。須要變得更具體,以贏得現有的特異性。模塊化上下文須要低特異性html
獨立的實體,它自己是有意義的。
雖然塊能夠嵌套和相互做用,在語義上,他們保持平等; 沒有優先級或層次結構。
僅使用類名稱選擇器
沒有標籤名稱或ID
不依賴頁面上的其餘塊/元素
header,container,menu,checkbox,input,logo,buttongit
<div class =「block」> ... </div> .block {color:#042; }
塊的一部分,沒有獨立的含義,在語義上與塊相關聯
任何元素都被語義綁定到它的塊。
menu__item,list__item,checkbox__caption,header__title,menu__elementsgithub
<div class =「block」> ... <span class =「block__elem」> </ span> </div> .block__elem {color:#042; }
塊或元件上的標誌。
用它們來改變外觀,行爲或狀態
.block--mod或.block__elem--mod和.block--color-black與.block--color-red。複雜修飾符中的空格被短劃線代替
disabled,highlighted,checked,fixed,size big,color yellow,
input size big ,button theme green網絡
<div class="block block--mod">...</div> <div class="block block--size-big block--shadow-yes">...</div>
<form class="form form--theme-xmas form--simple"> <input class="form__input" type="text" /> <input class="form__submit form__submit--disabled" type="submit" /> </form> .form { } .form--theme-xmas { } .form--simple { } .form__input { } .form__submit { } .form__submit--disabled { }
<form class="site-search site-search--full"> <input type="text" class="site-search__field"> <input type="Submit" value ="Search" class="site-search__button"> </form>
.note { color: #ffffff; &__content { background: white; } &__meta { background: #f1f1f1; border-top: 1px solid #eee; } &--featured { box-shadow: 0 3px 1px rgba(0, 0, 0, 0.1); } }
$module: 'note'; .#{$module} { // By default, our note has a white background… &__content { background: white; } // But 「featured」 notes have an offwhite background &--featured { .#{$module}__content { background: #eee; } } }