@extend 繼承
在設計網頁的時候常常遇到這種情況:乙個元素使用的樣式與另乙個元素完全相同,但又新增了額外的樣式。通常會在 html 中給元素定義兩個 class,乙個通用樣式,乙個特殊樣式。那麼通過@extend我們可以這樣寫:
通用樣式:
.normal
特殊樣式:
.special
編譯過後:
.normal, .special
.special
可以看到special繼承了normal之後,他們兩都會擁有color和background這兩條屬性,於是sass把這兩條屬性放在一起組成乙個群組選擇器,然後再把special所獨有的樣式拿出來形成乙個選擇器。
還是來看這個案例:
考慮一下實現方式
.btn
.btngray
.btnblue
html:
這是我們在css時代常有的做法。現在又了繼承之後,我們可以考慮節省一些**了:
.btngray
.btnblue
編譯過後:
.btngray, .btnblue
.btnblue
大家可能會想我為什麼不直接讓btngray和btnblue去繼承 btn 呢? 大家注意看最上面的**。normal作為被繼承的樣式,經過編譯之後也會出現在css檔案當中。 而在這個案例中,我們不需要單獨的btn類,所以我直接讓 btnblue 繼承 btngray 的所有樣式,然後再去新增 btnblue所獨有的樣式就可以了,利用css**的層疊效果可以自動把重複的**覆蓋。效果上來說是完全不受影響的。
.btngray
}.btnblue
編譯過後:
.btngray, .btnblue
.btngray:hover, .btnblue:hover
.btnblue
可以看到 btngray 和 btnblue 都具有了 hover 這個偽類,那再新增一些其他的樣式呢?
.btngray
.item
}.btnblue
編譯過後:
.btngray, .btnblue
.btngray:hover, .btnblue:hover
.btngray .item, .btnblue .item
.btnblue
看到這裡,大家應該也看出來了,這玩意和 混合@mixin很相似啊。那我們以後到底是選擇繼承還是選擇混合呢?
在這裡我們首先要總結一下混合與繼承的區別:
大多數情況下,其實@mixin會比@extend更好,但是它們倆都有自己的一席之地。當樣式和選擇器之間的關係在某些方面比較緊密的時候,使用@extend。除此之外,你可以使用@mixin在任何地方。
sass各種知識點
sass學習筆記 css擴充套件 巢狀規則 與less相同父選擇器套子選擇器 父選擇器 與less相同 用於選擇父元素 屬性巢狀 funky 避免重複書寫佔位符選擇器 foo 注釋 會被輸出 不輸出 version 1.2.3 this css is generated by my snazzy f...
sass實用知識點
說明 本文的內容是,我在開發實踐中總結的實用性比較強的sass知識點,其他未涉及的知識,如果對你有作用請自行查閱 sass知識目錄 巢狀注釋 sassscript 規則mixin指令 巢狀一般寫法 div 父選擇器引用 div span 相同字首的css樣式簡寫形式 div div 注釋多行注釋 會...
linux教程 知識點總結
1.什麼是ssh協議 是一種建立在應用層基礎之上的,可以有效防止遠端管理過程中資訊洩露的安全性問題的協議.2.原理 伺服器啟動的時候自己產生乙個秘鑰,本地的ssh客戶端傳送連線請求到ssh伺服器,伺服器檢查連線點客戶端傳送的資料和ip位址,確認合法後傳送秘鑰給客戶端,此時客戶端將本地私鑰和伺服器的公...