摘要:這個時候小明如果僅僅引入不想改,那么就是這個值,如果他想改,就可以在任何一處重新聲明這個變量,那么就會變成小明的值。
零. 變量這一篇主要詳述保持sass條理性和可讀性的3個最基本方法——嵌套、導入和注釋。
變量本身的作用是為了保持屬性值的可維護性,把所有需要維護的屬性值放在同一個地方,快速更改,處處生效,可謂售后無憂。
1.變量聲明變量用"$"符號開頭進行聲明,任何可以用作CSS屬性值的東西都可以用作sass變量的值,單個值、空格分開的多個值、逗號分開的多個值都可以:
$primary-color: #233; $general-border: 1px solid #ffffd;
變量一般聲明在sass源代碼的開頭處,CSS規則塊外(花括號外面),便于尋找和維護,不過有時候你也想將變量聲明在規則塊內,這也是沒有問題的,只是這樣就只能在塊內使用,類似“塊作用域”。
2.變量使用凡是CSS屬性的標準值可存在的地方,變量都可以使用,而且變量可以被引用在另一個變量的聲明中:
$primary-color: #233; $general-border: 1px solid $primary-color;
可能還見到過形如#{$val}這樣去用變量的,用#{和}包裹,這其實是把變量看成一個表達式在用,這樣的用法叫插值,這個在sass高級特性中再述。
一. 嵌套——層次嵌套規則就像洋蔥,一層一層,很有層次感,即可讀性和條理性。最常見的選擇器嵌套,就是一層層打開,一般被包含選擇器作為包含選擇器的后代選擇器展開:
/*sass*/ li{ float:left; a{ color: #c33; } } /*生成的css*/ li{ float:left; } li a{ color:#c33; }1. 父選擇器標識符&
父選擇器標識符&可以放在任何一個選擇器可以出現的地方,代表的就是字面意思——父選擇器,為什么要有這個東西呢?因為不想無腦化被當做后代展開,最常見的比如當嵌套偽類選擇器時:
li{ float:left; a{ color: #233; &:hover{ color:#c33; } } } /*這樣生成的CSS是這樣的*/ li{ float:left; } li a{ color:#233; } /*注意這里的a選擇器和偽類選擇器間沒有空格,&被父選擇器直接替換*/ li a:hover{ color:#c33 }
當包含父選擇器標識符的嵌套規則打開時,不會簡單當做后代選擇器拼接,而是&被父選擇器直接替換。
偽類是一種常用用法,當然這個“飆師傅”——&——也可以放在選擇器后面(記得遇到&打開時不是被正常拼接,可以替換):
#content aside{ color:red; body.ie & { color:green } } /*輸出的css是這樣的*/ #content aside{ color:red; } body.ie #content aside { color:green }2. 復雜選擇器嵌套
群組選擇器,如h1,h2,h3{ a{...} }或者div{ h1,h2,h3{...} },sass會正確處理,分別打開組合h1 a, h2 a, h3 a{...},div h1, div h2, div h3{...}
子組合選擇器和同層選擇器:>、+和~ ,sass都會正確處理,不管它們是在選擇器前還是后
3. 屬性嵌套寫背景樣式時寫一堆background-XX很煩吧,屬性嵌套可以幫你減少一些工作量。把屬性名從中劃線的地方斷開,在根屬性后邊添加一個冒號,緊跟一個花括號塊,把子屬性寫在花括號中:
div{ background:{ image: url(./img/233.png); repeat: no-repeat; size: contain; } }二. 導入——@import
Sass的@import和CSS的不一樣。CSS的@import,只有在執行到的時候才去下載其他CSS文件,這就影響了頁面加載;而Sass的@import在生成CSS文件的時候就把相關文件導入進來了。
1.sass的@import語法Sass的@import并不需要指明被導入文件的全名,即可以省略.sass或者.scss擴展名。
此外,每個sass文件一般會被輸出成CSS文件,但其實當我們用@import引入sass文件時,我們僅僅希望生成一個總體的css文件,不需要每個sass文件都被輸出成css,這樣的文件被稱作"sass局部文件",即不會被多帶帶編譯輸出成css,用來被引入。
Sass局部文件需要以下劃線開頭,當用@import引入時,不僅可以省略擴展后綴,也可以省略開頭的下劃線。
所以,假設我們有一個"_nav.scss"和一個"article.scss"需要引入,那么我們僅僅這么寫就夠了:
@import "nav" @import "article"
而且,sass的@import命令可以寫在CSS規則內,這會使生成的CSS規則直接被插入到導入的地方。你可以把@import命令看做一個宏,寫在哪里,那里就被要導入的sass文件源代碼替換。
2. 導入后可定制導入機制能讓你的sass根據某種依據分成幾個板塊(如根據不同的區域),那么導入某個sass文件,這個文件完全決定了這部分的樣式,如顏色、字體、字號等。
而你想讓導入后,還能修改一些值以定制自己需要的樣式,比如顏色、大小等,尤其是當小明想導入你的sass文件時,可能被導入的樣式設置不能很好滿足他自己的需求,這個時候有兩種做法:
小明在導入后,重新去聲明一遍想修改的變量,并且給一個新的值,寫在后面的值會覆蓋前面的;
你在你的sass源文件中用!default修飾變量值從而設置變量默認值,再發布出去給別人用,如$link-color:red !default。這個時候小明如果僅僅引入不想改,那么就是這個值,如果他想改,就可以在任何一處重新聲明這個變量,那么就會變成小明的值。
兩種方式都要重新聲明,是不是“脫褲子放屁”呢?嗯,有點這個意思!區別在于:
變量值后面用!default修飾,就有了默認值,這個變量不管在哪里被聲明,就會用聲明的值,這意味著,你可以在引入含有需要修改變量值的sass文件前,聲明這個變量為你要的值,后面引入的文件中的值不會覆蓋你聲明的變量值。
3. 怎么回到CSS原生的@import機制下面的任一情況都會導致使用CSS原生的@import機制:
被導入文件的名字以.css結尾;
被導入文件的名字是一個URL地址;
被導入文件的名字是CSS的url()值。
三. 注釋——看得見和看不見Sass的注釋有兩種形式,一種是來自CSS的注釋風格,用*和`*`包裹,這種注釋當Sass文件被編譯輸出css時是會輸出的,
另一種注釋方式是,以//開頭的單行注釋,這被稱為靜默注釋,因為這樣的注釋在被編譯輸出css時是不會被輸出到CSS文件中的,此外,這種注釋寫起來簡單快捷啊。
四. 小結保持條理性和可讀性的3種基本方式,拆分不同板塊的Sass文件,然后通過@import引入;嵌套選擇器和屬性,不但可以幫助增加層次和條理,還能減少打字量(變相減少了打字出錯);注釋永遠是一個好習慣。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/115362.html
摘要:輸出的是這樣的可以看到,當用繼承的樣式時,和也完全套用了的樣式,而且你會發現,規則并沒有被重復輸出,而且這樣的方式更符合我們對于這幾個選擇器的認知如果你之前用過面向對象編程的話。 Sass學習筆記持續整理中,開篇不講怎么安裝,sass是什么,這些搜索引擎會告訴你,我們從sass的作用開始講起,知道sass用來干什么,有什么作用,我們才能相信用sass的好處,并且時時刻刻想著sass的設...
摘要:區別在于,類是在中運用的,混合器是在樣式表中使用的。基本用法選擇器繼承,用去繼承一個選擇器定義的所有樣式。繼承背后的基本實現思路背后最基本的想法是,如果繼承了,那么樣式表中的任何一處選擇器都會用這一選擇器組進行替換和打開。 上一篇詳述了Sass如何嵌套、導入和注釋這3個基本方式來保持條理性和可讀性,這一篇更進一步地闡述sass保持樣式復用和簡潔的方式——混合器和選擇器繼承——這兩種方式...
摘要:在中,你可以像俄羅斯套娃那樣在規則塊中嵌套規則塊。這個過程中,用了兩步,每一步都是像打開俄羅斯套娃那樣把里邊的嵌套規則塊一個個打開。與此類似,會命中元素和類名為的元素。這種選擇器稱為群組選擇器。1. 使用變量; sass讓人們受益的一個重要特性就是它為css引入了變量。你可以把反復使用的css屬性值 定義成變量,然后通過變量名來引用它們,而無需重復書寫這一屬性值。或者,對于僅使用過一 次的屬...
摘要:即元素脫離文檔流的布局,在頁面的任意位置顯示絕對定位脫離文檔流的布局,遺留下來的空間由后面的元素填充。相對定位不脫離文檔流的布局,只改變自身的位置,在文檔流原先的位置遺留空白區域。 1、描述 CSS 指層疊樣式表 (Cascading Style Sheets) Sass (Syntactically Awesome StyleSheets),是由buby語言編寫的一款css預處理...
閱讀 2538·2021-07-26 23:38
閱讀 3437·2019-08-30 13:10
閱讀 2324·2019-08-29 18:33
閱讀 2326·2019-08-29 16:12
閱讀 993·2019-08-29 10:59
閱讀 1803·2019-08-26 17:40
閱讀 775·2019-08-26 11:59
閱讀 817·2019-08-26 11:41