DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> CSS入門知識 >> Sass教程 >> 4.2 數字運算
4.2 數字運算
編輯:Sass教程     

在Sass中,共有4種數字運算:

  • (1)加法;
  • (2)減法;
  • (3)乘法;
  • (4)除法;

這4種運算方式,我們在其他編程語言(如JavaScript)也能看到,但是Sass的這4種運算不太一樣,還是有不少我們需要注意的地方。所以在這一節中,小伙伴們要細心留意一下。

一、Sass加法

在Sass中,做加法運算時,數值可以帶單位,但是需要運算單位相同。如果不相同就會報錯,編譯不通過。

舉例1:運算單位相同

 
div
{
    width:(100px + 20px);
}

編譯出來的CSS代碼如下:

 
div
{
    width:120px;
}

分析:

由於“100px”和“20px”的單位相同,都是px。所以在Sass中,這兩個可以做加法運算。

舉例2:運算單位不同

 
div
{
    width:(100px + 20em);
}

編譯出來的CSS代碼如下:

 
Incompatible units: 'em' and 'px'.

分析:

因為“100px”和“20em”單位不同,所以在Sass編譯的時候會報錯。其中,“Incompatible units: 'em' and 'px'.”意思是“em和px單位不一致”。

我們再來看一個實際開發中的例子,體會一下Sass加法的用法:

 
$sidebar-width:220px;
$content-width:720px;
$gap-width:20px;
.container
{
    width: ($sidebar-width + $content-width + $gap-width)
    margin: 0 auto;
}

編譯出來的CSS代碼如下:

 
.container
{
    width:960px;
    margin:0 auto;
}

二、Sass減法

在Sass中,做減法運算時,數值可以帶單位,但是需要運算單位相同。如果不相同就會報錯,編譯不通過。這一點跟Sass加法是一樣的。

舉例1:運算單位相同

 
div
{
    width:(100px - 20px);
}

編譯出來的CSS代碼如下:

 
div
{
    width:80px;
}

分析:

由於“100px”和“20px”的單位相同,都是px。所以在Sass中,這兩個可以做減法運算。

舉例2:運算單位不同

 
div
{
    width:(100px - 20em);
}

編譯出來的CSS代碼如下:

 
Incompatible units: 'em' and 'px'.

分析:

因為“100px”和“20em”單位不同,所以在Sass編譯的時候會報錯。其中,“Incompatible units: 'em' and 'px'.”意思是“em和px單位不一致”。

我們也來看一個實際開發中的例子,體會一下Sass減法的用法:

 
$container-width:960px;
$sidebar-width:200px;
.content
{
    width: ($container-width - $sidebar-width);
}

編譯出來的CSS代碼如下:

 
.content
{
    width:760px;
}

分析:

在Sass中,如果是做減法運算是“變量”而不是“數值”的時候,我們要注意減號“-”前後一定要有空格。像上面這個例子,如果減號前後沒有空格:

 
$container-width:960px;
$sidebar-width:200px;
.content
{
    width: ($container-width-$sidebar-width);
}

像上面這樣,Sass是無法正確地識別哪個“-”是變量的一部分,哪個“-”是減號。不過對於Sass中的加法,則不需要考慮這一點。

三、Sass乘法

在Sass中,做乘法運算時,只能有一個數值帶單位,另外一個數值只能是不帶單位的數字。如果兩個都是帶單位的數字,則Sass會報錯而編譯不通過。其實,小伙伴們稍微想一下平常數學中的運算,就很容易明白。

舉例1:一個帶單位,另外一個不帶單位

 
div
{
    width:(100px * 2);
}

編譯出來的CSS代碼如下:

 
div
{
    width:200px;
}

舉例2:兩個都帶單位

 
div
{
    width:(100px * 2px);
}

編譯出來的CSS代碼如下:

 
200px*px isn't a valid CSS value.

分析:

“200px*px isn't a valid CSS value.”意思是:200px*px不是一個有效的CSS屬性值。我們再來看一個實際開發中的例子,體會一下Sass乘法的用法:

 
@for $i from 1 through 3
{
    .item-#{$i}
    {
        width:10px * $i;
    }
}

編譯出來的CSS代碼如下:

 
.item-1 
{
    width: 10px;
}
.item-2 
{
    width: 20px;
}
.item-3 
{
    width: 30px;
}

四、Sass除法

我們都知道,“/”在CSS中已經作為一種符號來使用了,例如我們常見的字體屬性縮寫“font:Arial 12px/1.5em”。因此在Sass中做除法運算的時候,如果我們直接使用“/”符號作為除號,將不會生效。

在Sass中,如果我們想要做除法運算,我們需要在外面添加一個“小括號()”。

舉例:

 
div
{
    width:(100px/2);
}

編譯出來的CSS代碼如下:

 
div
{
    width:50px;
}

分析:

在這個例子中,如果我們將小括號去掉,則Sass編譯的時候會報錯。但是在Sass中,如果做除法運算中是“變量”而不是“數值”時,“/”會被自動識別為除法,不需要在外面添加小括號。

舉例:

 
$width:100px;
div
{
    width:$width/2;
}

編譯出來的CSS代碼如下:

 
div
{
    width:50px;
}

在使用Sass的過程中,“/”這個符號被當做除法運算時有以下3種情況:

  • (1)數值被小括號()包含;
  • (2)數值是另外一個數學表達式的一部分;
  • (3)數值或它的任意部分存儲在一個變量中或者函數的返回值;

舉例:

 
$height:100px;
div
{
    font:20px/10px;                 //純CSS,不是除法運算
    width:(20px/10px);              //使用了小括號,是除法運算,符合第1點
    height:$height/2;               //使用了變量,是除法運算,符合第3點
    line-height:round(1.5)/2;       //使用了函數,是除法運算,符合第3點
    margin-left:10px + 10px/2px;    //使用了加號,是除法運算,符合第2點
}

編譯出來的CSS代碼如下:

 
div 
{
    font: 20px/10px;
    width: 2;
    height: 50px;
    line-height: 1;
    margin-left: 15px;
}

分析:

在實際開發中,不管是加法、減法,還是乘法、除法運算,我們都建議在外面加上小括號。這種書寫方式,能夠使得代碼一目了然,也方便維護。希望小伙伴們也規范一下自己的書寫方式。

XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved