隨著越來越多的開發(fā)者使用SASS,我們有必要關(guān)注一下SASS的代碼的個(gè)數(shù)問題。 我們可以從CSS(層疊樣式表)的語法出發(fā),來解釋SASS語法的一些特別之處,畢竟,html' target='_blank'>CSS樣式指南是很常見的。
這篇文章主要介紹了我個(gè)人比較感興趣的一些特性,也許能夠讓你從中受用,形成一套屬于自己的SASS使用指南。
繼續(xù)保持自己常用的CSS格式規(guī)則和樣式指南
這篇文章著重討論了關(guān)于SASS的一些內(nèi)容,但是在此基礎(chǔ)上,開發(fā)者應(yīng)該保持自己已有并且良好的格式規(guī)則。如果你還沒有發(fā)展出一套屬于自己的格式規(guī)則,那么這里有一些樣式指南的綜述,應(yīng)該可以幫你形成屬于自己的CSS編寫習(xí)慣。這里僅列出一些其中所包含的部分內(nèi)容:
1. 保持行縮進(jìn)一致
2. 保持冒號/大括號前后空格數(shù)的一致
3. 保持一行一個(gè)選擇器,一行一個(gè)規(guī)則
4. 相關(guān)的屬性盡量寫在一起
5. 對于類名命名規(guī)則由一個(gè)規(guī)劃
6. 避免使用CSS id選擇器
7. 等等
接下來我們就了解一下如何寫出美觀的SASS代碼吧,以編寫一個(gè).weather類的屬性為例:
首先列出@extend(s)
.weather { @extends %module; ... }
這樣做能夠使開發(fā)者保持一個(gè)清晰的思路,能夠立刻知道這個(gè)類與其屬性和其他類及其屬性的關(guān)系,保持屬性的一致和屬性重用的清晰思路。
普通樣式
.weather { @extends %module; background: LightCyan; @include(s) .weather { @extends %module; background: LightCyan; @include transition(all 0.3s ease-out); ... }
這樣做能夠使開發(fā)者一眼看出@extend(s)和@include(s)的部署,便于自己以及其他開發(fā)者對代碼的解讀。你可能還會(huì)對是否區(qū)分自定義的@includes和公共來源的@includes在有些情況下做出決定(尤其是考慮到代碼的可重用性和時(shí)效性)
選擇器嵌套
.weather { @extends %module; background: LightCyan; @include transition(all 0.3s ease); h3 { border-bottom: 1px solid white; @include transform(rotate(90deg)); }
在嵌套部分內(nèi),繼續(xù)使用上述的樣式規(guī)則。嵌套的部分永遠(yuǎn)都應(yīng)該放在最后。
所有廠商前綴使用@mixins
廠商前綴(CSS前綴)具有非常強(qiáng)的時(shí)效性。 由于現(xiàn)代瀏覽器的更新,這些前綴的使用將越來越少。你可以通過更新mixins里的內(nèi)容(或者在你mixin里用到的一些庫將自動(dòng)更新)去適應(yīng)這些變化。 哪怕mixin只有短短一行,也沒有關(guān)系。
但當(dāng)某些廠商前綴的私有化非常嚴(yán)重時(shí),這些前綴將非常難以標(biāo)準(zhǔn)化并且應(yīng)用其他前綴或者無前綴的版本會(huì)得不償失,我會(huì)選擇放棄@mixin這些廠商前綴。比如像-webkit-line-clamp, -mscontent-zoom-chaining或者類似情形。
嵌套的層次不要超過3層
.weather { . span >如果你的嵌套多余三次,你很有可能寫出一個(gè)坑爹的(差勁的?)選擇器。坑爹的原因不外乎這個(gè)選擇器過于依賴HTML的架構(gòu)(不穩(wěn)定), 過于詳細(xì)(功能過于強(qiáng)大,沒有彈性),或者是可重用性太差(不太可用)。同時(shí),過多的嵌套層次容易導(dǎo)致代碼處于晦澀難懂的境地。
如果有的時(shí)候與類相關(guān)的代碼真的太多了,使得你不得已使用標(biāo)簽選擇器。你可能需對于某個(gè)類要寫的非常具體,以避免不必要的層疊。 甚至有可能的話,利用extend來使用CSS里一些可重用性的特性。
.weather h3 { @extend %line-under; }嵌套的代碼不要超過50行
若果SASS里的嵌套多于50行,那么它很可能不能完整的顯示在編譯器的一頁中,這樣會(huì)導(dǎo)致代碼不易閱讀,難以理解。嵌套本來是為了方便和簡化思考與代碼的組織。如果有違閱讀性,請別嵌套。
全局與區(qū)域化的SASS文件序列相當(dāng)于表格內(nèi)容換言之,它們并沒有任何一種固定樣式。開發(fā)者要提醒自己保持所有部分的樣式風(fēng)格一致,有序。
首先列出廠商/全局的庫,其次列出自定義庫,然后是模式,最后是每個(gè)分部的用到的庫。
這樣一來‘目錄‘看起來就像下面這個(gè)例子一樣,一目了然:
/* Vendor Dependencies */ @import compass /* Authored Dependencies */ @import span >這些文件就像是一個(gè)指南針,顏色和mixins并不產(chǎn)生已編譯好的CSS代碼,他們純粹是獨(dú)立的庫。在此之后引入模式,使得重寫變得更安全,不會(huì)出現(xiàn)專一性的沖突。
將SASS合理的分割成多個(gè)小文件這樣做沒有任何不好。在情況允許的時(shí)候,盡量使用小而精的多個(gè)文件,這樣便于開發(fā)者在尋找一些特定文件,而不是在幾個(gè)擁有冗長代碼的大文件中大海撈針。
...@import span >我經(jīng)常做的就是在一個(gè)全局scss文件中逐個(gè)引用這些文件,而不是引用一個(gè)_header.scss文件,然后再_header.scss文件中在逐個(gè)引用。這樣做能夠降低索引的時(shí)間和提高閱讀效率。
當(dāng)這些文件過多導(dǎo)致import序列太長時(shí),你可能會(huì)用到 Globbing 。
記得將Partials命名為_partial.scss這是一個(gè)常見對于不能自身編譯的文件的命名。這樣的文件多少會(huì)依賴于其他的文件,使得自身不能獨(dú)立完成編譯。我個(gè)人喜歡在文件名之前添加一個(gè)下劃線,譬如_dropdown-menu.scss
在本地編譯時(shí)添加行映射看這里,這意味著開發(fā)工具能夠告訴你每一條規(guī)則的來源,哪怕是一個(gè)被引入的partial文件。
在部署時(shí),記得編譯已精簡的文件運(yùn)行中的網(wǎng)頁永遠(yuǎn)都只需要使用精簡的CSS。
無需遞交.css文件這可能要花些時(shí)間,但是不在文件庫中放入.css文件可以是一件非常美妙的事. 文件編譯在部署的時(shí)候就完成了。 所以唯一可以看見的是那些已經(jīng)精簡的格式美妙的sass文件。 這使得對于文件的描述變得大有用途。文件描述是用于對比由版本發(fā)布者所做的一些更改。而對于已經(jīng)精簡的.css文件,文件描述基本不需要了。
大方的使用注釋很少有人會(huì)后悔在代碼中留下了注釋。不論是有用的還是不起眼的注釋,他們最終都會(huì)在編譯成精簡的CSS文件時(shí)被抹去,對于開發(fā)者來說不會(huì)有任何附加代價(jià)。
.overlay { /* modals are 6000, saving messages are 5500, header is 2000 */ z-index: 5000; }提到注釋,你可能也需要對它做一些標(biāo)準(zhǔn)化的調(diào)整。在SASS中,’//’非常適用于添加注釋,’//’使得注釋和取消注釋變得非常方便。
將一些常用的數(shù)值和有特殊意義的數(shù)值轉(zhuǎn)化成變量如果你發(fā)現(xiàn)自己重復(fù)使用一個(gè)數(shù)值(這在前端設(shè)計(jì)里是很常見的),你最好將它轉(zhuǎn)化成一個(gè)變量。這樣你可以通過命名來提醒自己這個(gè)數(shù)值的含義,并且在編寫代碼時(shí)保持一致性,是的你在更改這個(gè)數(shù)值時(shí)不需要逐行調(diào)整。
若果一個(gè)數(shù)字有著明顯的含義,那么將它轉(zhuǎn)化成變量是必不可少的啦。
相信看了這些案例你已經(jīng)掌握了方法,更多精彩請關(guān)注php 其它相關(guān)文章!
相關(guān)閱讀:
HTML的代碼書寫有哪些規(guī)范
Html+css怎樣實(shí)現(xiàn)純文字和帶圖標(biāo)的按鈕
在XHTML中的標(biāo)題標(biāo)簽與段落標(biāo)簽有哪些使用方法
以上就是CSS的SASS樣式應(yīng)該怎么使用的詳細(xì)內(nèi)容,html教程
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時(shí)間聯(lián)系我們修改或刪除,多謝。
新聞熱點(diǎn)
疑難解答