1 回答

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超7個(gè)贊
對(duì)的,不帶參數(shù)的 mixin 等價(jià)于 placeholder(效果上等價(jià),但性能上 placeholder 略優(yōu))。出現(xiàn)這個(gè)困惑是正常的,之所以會(huì)出現(xiàn)兩者的功用略有重疊是有歷史原因的。
總之呢,作為復(fù)用的組件,需要傳遞參數(shù)的就定義為 @mixin,不需要的就定義為 placeholder,這算是 Sass 的最佳實(shí)踐原則之一。盡量不要去 extend class,因?yàn)闀?huì)有冗余,除非那個(gè) class 本來(lái)就有用到,不算冗余。
在一般的開(kāi)發(fā)過(guò)程當(dāng)中,placeholder 的使用都會(huì)有明顯的跡象。比如說(shuō)重置標(biāo)準(zhǔn)的列表元素(用作容器而不是文本列表)可以這樣:
%reset-list { margin: 0px; padding: 0px; list-style: none; }
但是我們很少會(huì)把這樣的 placeholder 直接用于產(chǎn)品代碼,因?yàn)閺慕M件化的角度來(lái)說(shuō)它還不夠“內(nèi)聚”,它只是解決了一個(gè)組件的一塊拼圖罷了。多數(shù)時(shí)候我們還需要進(jìn)一步的去構(gòu)造組件:
@mixin menu($display: inline-block) { @extend %reset-list; // 不管什么樣的 menu,先重置它的盒模型 display: #{$display}; // 根據(jù)傳參決定橫向/縱向 // 其他……}
如此一來(lái),真正在產(chǎn)品代碼里使用的就以 mixin 為主了。因?yàn)榛旧纤械哪K你總能找出可變因素的,而那些確實(shí)不可變又沒(méi)有合適的 mixin 用來(lái)內(nèi)聚的 placeholder 才會(huì)被用在產(chǎn)品代碼中。
- 1 回答
- 0 關(guān)注
- 861 瀏覽
添加回答
舉報(bào)