【項(xiàng)目實(shí)戰(zhàn)】sass使用基礎(chǔ)篇(上)

Sass是一種CSS預(yù)處理語言烫扼。CSS預(yù)處理語言是一種新的專門的編程語言曙求,編譯后形成正常的css文件碍庵,為css增加一些編程特性映企,無需考慮瀏覽器的兼容性(完全兼容css3),讓css更加簡潔静浴、適應(yīng)性更強(qiáng)堰氓,可讀性更佳,更易于代碼的維護(hù)等諸多好處苹享。

CSS預(yù)處理語言有Scss(Sass) 和Less双絮、Postcss。

Scss和Sass

sass一開始用的是一種縮進(jìn)式的語法格式

采用這種格式文件的后綴名是.sass

在sass3.0版本后我們常用的是sassy css語法得问,擴(kuò)展名是.scss囤攀,更接近與css語法

區(qū)別:

  • 后綴名不同 .sass和.scss
  • 語法不同,請(qǐng)看下面

新版:

/*新版本
多行文本注釋*/

//新版本
//單行文本注釋

@import "base";

@mixin alert{
    color:red;
    background:blue;
}

.alert-warning{
    @include alert;
}

ul{
    font-size:15px;
    li{
        list-style:none;
    }
}

老版本:

/*新版本
多行文本注釋

//新版本
  單行文本注釋

@import "base"

=alert
    color:red
    background:blue


.alert-warning
    +alert


ul
    font-size:15px
    li
        list-style:none

變量

變量的意義

在sass里我們可以定義多個(gè)變量來存放顏色宫纬、邊框等等的樣式焚挠,這樣就可以在下面想要使用樣式的時(shí)候使用變量了

這樣的優(yōu)點(diǎn)就是便于維護(hù),更改方便


變量的使用

可以通過$來定義變量漓骚,在變量名字中可以使用-和來作為連接蝌衔,并且-和是可以互通的,就是用起來一模一樣蝌蹂。

變量的值可以是字符串噩斟、數(shù)字、顏色等等孤个,在變量里還可以使用其他變量剃允,使用的時(shí)候直接寫變量名就好了

例如

$primary-color:#ff6600;
$primary-border:1px solid $primary_color;

div.box{
    background:$primary-color;
}

h1.page-header{
    border:$primary-border;
}

css寫法---》

div.box {
  background: #ff6600;
}

h1.page-header {
  border: 1px solid #ff6600;
}

嵌套的使用

合理的使用嵌套語法,可以使我們編寫代碼更為快捷

假設(shè)我們想寫這樣的css:

.nav {
  height: 100px;
}
.nav ul {
  margin: 0;
}
.nav ul li {
  float: left;
  list-style: none;
  padding: 5px;
}

在sass里我們可以這樣寫

.nav{
    height:100px;
    ul{
        margin:0;
        li {
            float:left;
            list-style:none;
            padding:5px;
        }
    }
}

大家會(huì)發(fā)現(xiàn)齐鲤,寫出來的代碼父和子之間都有空格隔開硅急,如果我們需要給a加上偽類的話我們這樣寫

.nav{
    height:100px;
    a{
        color:#fff;
        :hover{
            color:#ff6600;
        }
    }
}

在里面就會(huì)出現(xiàn)這樣的情況

.nav a :hover {
  color: #ff6600;
}

我們發(fā)現(xiàn)在a和:hover之間有了空格,這樣是不好的佳遂,所以我們需要在寫的時(shí)候在:hover之前把a(bǔ)加上营袜,這樣就需要用到在之類里引用父類選擇器的方式,我們可以用&符號(hào)代替父類

例如:

.nav{
    height:100px;
    a{
        color:#fff;
        &:hover{
            color:#ff6600;
        }
    }
}

這樣就好了丑罪,下面來個(gè)完整的代碼:

.nav{
    height:100px;
    ul{
        margin:0;
        li{
            float:left;
            list-style:none;
            padding:5px;
        }
        a{
            display:block;
            color:#000;
            &:hover{
                color:#f60;
                background:red;
            }
        }
    }

    & &-text{
        font-size:15px;
    }
}

css寫法-----》

.nav {
  height: 100px;
}
.nav ul {
  margin: 0;
}
.nav ul li {
  float: left;
  list-style: none;
  padding: 5px;
}
.nav ul a {
  display: block;
  color: #000;
}
.nav ul a:hover {
  color: #f60;
  background: red;
}
.nav .nav-text {
  font-size: 15px;
}

嵌套屬性

我們可以把一些復(fù)合屬性的子屬性來嵌套編寫荚板,加快編寫速度,例如

body{
    font:{
        family:Helvitica;
        size:15px;
        weight:bold;
    }
}
.nav{
    border:1px solid red{
        left:none;
        right:none;
    }
}

.page-next{
    transition:{
        property:all;
        delay:2s;
    }
}

css寫法-----》

body {
  font-family: Helvitica;
  font-size: 15px;
  font-weight: bold;
}

.nav {
  border: 1px solid red;
  border-left: none;
  border-right: none;
}

.page-next {
  transition-property: all;
  transition-delay: 2s;
}

mixin 混合

你可以把它想象成一個(gè)有名字的定義好的樣式

每一個(gè)mixin都有自己的名字吩屹,類似于js里的函數(shù)定義方法如下

@mixin 名字(參數(shù)1跪另,參數(shù)2...){
    ...
}

使用方法是在其他選擇器css樣式里通過@include引入,其實(shí)就相當(dāng)于將mixin里的代碼寫入到這個(gè)選擇器的css里煤搜,如下:

@mixin alert {
    color:#f60;
    background-color:#f60;
    a{
        color:pink;
    }
    &-a{
        color:red;
    }
}

.alert-warning{
    @include alert;
}

css寫法-----》

.alert-warning {
  color: #f60;
  background-color: #f60;
}
.alert-warning a {
  color: pink;
}
.alert-warning-a {
  color: red;
}

剛才是沒有參數(shù)的mixin免绿,mixin也可以擁有參數(shù),需要注意的是:

  • 形參的名字前要加$
  • 傳參的時(shí)候只寫值的話要按順序傳
  • 傳參的時(shí)候不想按順序的話需要加上形參名字

例如:

@mixin alert($color,$background) {
    color:$color;
    background-color:$background;
    a{
        color:darken($color,10%);//把顏色加深百分之十
    }
}

.alert-warning{
    @include alert(red,blue);
}

.alert-info{
    @include alert($background:red,$color:blue);
}

css寫法------》

.alert-warning {
  color: red;
  background-color: blue;
}
.alert-warning a {
  color: #cc0000;
}

.alert-info {
  color: blue;
  background-color: red;
}
.alert-info a {
  color: #0000cc;
}

繼承拓展 extend

如果我們有一個(gè)選擇器想要擁有另一個(gè)選擇所有的東西擦盾,不管是樣式還是子元素等等嘲驾,可以使用@extend來繼承

大家需要注意的是淌哟,++b繼承a的時(shí)候,a的子元素設(shè)置了樣式辽故,也會(huì)給b的子元素設(shè)置樣式++徒仓,達(dá)到完全一樣的情況,例如:

.alert {
    padding:5px;
}

.alert a {
    font:{
        weight:bold;
        size:15px;
    }
}

.alert-info {
    @extend .alert;
    backgournd:skyblue;
}

css寫法----》

.alert, .alert-info {
  padding: 5px;
}

.alert a, .alert-info a {
  font-weight: bold;
  font-size: 15px;
}

.alert-info {
  backgournd: skyblue;
}

partials

在以前咱們編寫css的時(shí)候誊垢,一個(gè)css引入另一個(gè)css需要使用@import掉弛,其實(shí)這是不好的,會(huì)多發(fā)一次http請(qǐng)求喂走,影響咱們站點(diǎn)的響應(yīng)速度殃饿。

在sass里,咱們可以把小的sass文件分出去芋肠,叫做partials壁晒,在某個(gè)sass里通過@import ‘partials名’去引入,注意路徑喲业栅,這樣的話就可以把partials里的代碼引到咱們大的sass里一起編譯

  • 需要注意的是 partials的文件名前要加_
_base.scss :
body{
    margin:0;
    padding:0;
}
style.scss :
@import "base";

.alert {
    padding:5px;
}

.alert a {
    font:{
        weight:bold;
        size:15px;
    }
}

.alert-info {
    @extend .alert;
    backgournd:skyblue;
}

css寫法----------->

body {
  margin: 0;
  padding: 0;
}

.alert, .alert-info {
  padding: 5px;
}

.alert a, .alert-info a {
  font-weight: bold;
  font-size: 15px;
}

.alert-info {
  backgournd: skyblue;
}

這樣的話我們就可以把模塊化的思想引入到sass里了


comment注釋

sass里的注釋有三種

  • 多行注釋
  • 單行注釋
  • 強(qiáng)制注釋

多行注釋:壓縮后不會(huì)出現(xiàn)在css里 /* */

單行注釋: 不會(huì)出現(xiàn)在css里 //

強(qiáng)制注釋:壓縮后也會(huì)出現(xiàn)在css里 /*! */

sass的基礎(chǔ)使用方法就介紹到這里秒咐,文章持續(xù)更新,后續(xù)更新sass高階用法碘裕,關(guān)注公眾號(hào)第一時(shí)間閱讀携取。

我是monkeysoft,你的【三連】就是monkeysoft創(chuàng)作的最大動(dòng)力帮孔,如果本文有任何錯(cuò)誤和建議雷滋,歡迎大家留言!

文章持續(xù)更新文兢,可以微信搜索 【小猴子的web成長之路】關(guān)注公眾號(hào)第一時(shí)間閱讀,關(guān)注之后后臺(tái)回復(fù)知識(shí)體系晤斩,更可領(lǐng)取小編精心準(zhǔn)備的前端知識(shí)體系,未來學(xué)習(xí)不再迷茫,更可加入技術(shù)群交流討論姆坚。

image
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末澳泵,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子兼呵,更是在濱河造成了極大的恐慌兔辅,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,104評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件击喂,死亡現(xiàn)場(chǎng)離奇詭異维苔,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)懂昂,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門介时,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事沸柔⊙ィ” “怎么了?”我有些...
    開封第一講書人閱讀 168,697評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵勉失,是天一觀的道長。 經(jīng)常有香客問我原探,道長乱凿,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,836評(píng)論 1 298
  • 正文 為了忘掉前任咽弦,我火速辦了婚禮徒蟆,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘型型。我一直安慰自己段审,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,851評(píng)論 6 397
  • 文/花漫 我一把揭開白布闹蒜。 她就那樣靜靜地躺著寺枉,像睡著了一般。 火紅的嫁衣襯著肌膚如雪绷落。 梳的紋絲不亂的頭發(fā)上姥闪,一...
    開封第一講書人閱讀 52,441評(píng)論 1 310
  • 那天,我揣著相機(jī)與錄音砌烁,去河邊找鬼筐喳。 笑死,一個(gè)胖子當(dāng)著我的面吹牛函喉,可吹牛的內(nèi)容都是我干的避归。 我是一名探鬼主播,決...
    沈念sama閱讀 40,992評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼管呵,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼梳毙!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起捐下,我...
    開封第一講書人閱讀 39,899評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤顿天,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后蔑担,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體牌废,經(jīng)...
    沈念sama閱讀 46,457評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,529評(píng)論 3 341
  • 正文 我和宋清朗相戀三年啤握,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了鸟缕。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,664評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖懂从,靈堂內(nèi)的尸體忽然破棺而出授段,到底是詐尸還是另有隱情,我是刑警寧澤番甩,帶...
    沈念sama閱讀 36,346評(píng)論 5 350
  • 正文 年R本政府宣布侵贵,位于F島的核電站,受9級(jí)特大地震影響缘薛,放射性物質(zhì)發(fā)生泄漏窍育。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,025評(píng)論 3 334
  • 文/蒙蒙 一宴胧、第九天 我趴在偏房一處隱蔽的房頂上張望漱抓。 院中可真熱鬧,春花似錦恕齐、人聲如沸乞娄。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,511評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽仪或。三九已至,卻和暖如春士骤,著一層夾襖步出監(jiān)牢的瞬間溶其,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,611評(píng)論 1 272
  • 我被黑心中介騙來泰國打工敦间, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留瓶逃,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,081評(píng)論 3 377
  • 正文 我出身青樓廓块,卻偏偏與公主長得像厢绝,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子带猴,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,675評(píng)論 2 359