摘要:例如被編譯為最后一個栗子字符運算運算符可以用來連接字符串被編譯為注意,如果有引號的字符串被添加了一個沒有引號的字符串也就是,帶引號的字符串在符號左側(cè),結(jié)果會是一個有引號的字符串。
1. 加減法學(xué)習(xí)Sass無非就是想高效的、 面向?qū)ο缶帉慍SS,Sass中的Operations也是重要的一部分。
現(xiàn)在的前端各種工程化、模塊化、面向工資編程,哦...不對,是面向?qū)ο缶幊?。玩起來吧?/p>
1.1 編譯報錯的栗子加減法不是重點,重點是在SassScript中用到的兩種單位之間的轉(zhuǎn)換;
絕對單位:px, pt, pc, in, mm, cm...絕對單位都能運算;
相對單位:ex, em, rem...相對當(dāng)前字體的都不能運算;
SCSS:
$plus1: 100px + 20ex; //不能換算的編譯都會報錯; $plus2: 100px + 20em; $plus3: 100px + 20rem; .plus{ width: $plus1 + 10px; //在變量或?qū)傩灾芯勺黾訙p法運算; }
編譯報錯:
Incompatible units: "ex" and "px".
Incompatible units: "em" and "px".
Incompatible units: "rem" and "px".
SCSS:
$minus1: 100px - 20; //第二個值可不帶單位; $minus2: 100pt - 20px; //運算是從左到右,如第二個值的單位不同于第一個值的單位(pt), $minus3: 100px + 20cm; //將會對其進(jìn)行轉(zhuǎn)換(pt)后再運算;編譯出來的值的單位也是(pt); $minus4: 100rem; //可以正常編譯輸出; $minus5: 100rem + 10em; //報錯;--Incompatible units: "em" and "rem".); .minus{ width: $minus1; height: $minus1 + 30; //在屬性還可以繼續(xù)做運算; min-width: $minus2; min-height: $minus3; max-width: $minus4; max-height: $minus1 + $minus2; } //普遍情況下很少會搞兩個單位在那加加減減,閑得蛋疼,反正我不會,在這只是舉個栗子。
被編譯為:
.minus { width: 80px; height: 110px; min-width: 85pt; min-height: 855.90551px; max-width: 100rem; max-height: 193.33333px; }2. 乘法
SassScript中的乘法運算和加減法運算還略有不同。雖然他也能夠支持多種單位(比如 em ,px , %),但當(dāng)一個單位同時聲明兩個值時會有問題。比如下面的示例:
SCSS: .ride { width: 20px * 10px; }
編譯報錯:
20px*px isn"t a valid CSS value.
如果進(jìn)行乘法運算時,兩個值單位相同時,只需要為一個數(shù)值提供單位即可。改成:
SCSS: .ride { width: 20px * 10; } 編譯輸出: .ride { width: 200px; }
在乘法運算中如有不同類型的單位時,也將會報錯。
SCSS: .ride { width: 20px * 10rem; }
編譯報錯:
200px*rem isn"t a valid CSS value.
雪碧圖一般都用compass的@import "compass/utilities/sprites";來玩
SCSS:
$icon-list: down, up, file, hot; @for $c from 1 through length($icon-list){ .icon-#{nth($icon-list,$c)}{ background-position: 0 -30px * $c; } }
被編譯為:
.icon-down { background-position: 0 -30px; } .icon-up { background-position: 0 -60px; } .icon-file { background-position: 0 -90px; } .icon-hot { background-position: 0 -120px; }3. 除法
CSS 允許 / 出現(xiàn)在屬性值里,作為分隔數(shù)字的一種方法。 既然 SassScript 是 CSS 屬性語法的擴(kuò)展, 他就必須支持這種語法,同時也允許 / 用在除法運算上。 也就是說,默認(rèn)情況下,在 SassScript 里用 / 分隔的兩個數(shù)字, 都會在 CSS 中原封不動的輸出。
SCSS:
.main { font: 10px/8px; // 純 CSS,不是除法運算 $width: 100px; width: $width/2; // 使用了變量,是除法運算 width: round(1.5)/2; // 使用了函數(shù),是除法運算 height: (500px/2); // 使用了圓括號,是除法運算 margin-left: 5px + 8px/2px; // 使用了加(+)號,是除法運算 $font-size: 12px; $line-height: 30px; font: #{$font-size}/#{$line-height}; //純CSS中使用變量和 /, 可以用 #{} 包住變量; }
被編譯為:
.main { font: 10px/8px; width: 50px; width: 1; height: 250px; margin-left: 9px; font: 12px/30px; }4. 來個栗子試試——顏色運算
所有算數(shù)運算都支持顏色值, 并且是分段運算的。 也就是說,紅、綠、藍(lán)各顏色分量會多帶帶進(jìn)行運算。例如:
.main-col{ color: #106021 + #023212; }
計算公式為 01 + 04 = 05、02 + 05 = 07 和 03 + 06 = 09,
被編譯為:
.main-col { color: #129233; }
算數(shù)運算也能將數(shù)字和顏色值一起運算,同樣也是分段運算的。 例如:
p { color: #010203 * 2; }
計算公式為 01 * 2 = 02、02 * 2 = 04 和 03 * 2 = 06,
被編譯為:
p { color: #020406; }
IE 濾鏡需要每個顏色都包含 alpha 層, 并且得用 #AABBCCDD 這樣嚴(yán)格的格式。你可以輕松的利用 {Sass::Script::Functions#ie_hex_str ie_hex_str} 函數(shù)對其做轉(zhuǎn)換。 例如:
$translucent-red: rgba(255, 0, 0, 0.5); $green: #00ff00; div { filter: progid:DXImageTransform.Microsoft.gradient( enabled="false", startColorstr="#{ie-hex-str($green)}", endColorstr="#{ie-hex-str($translucent-red)}" ); }
被編譯為:
div { filter: progid:DXImageTransform.Microsoft.gradient( enabled="false", startColorstr=#FF00FF00, endColorstr=#80FF0000 ); }4. 最后一個栗子——字符運算
+ 運算符可以用來連接字符串:
p { cursor: e + -resize; }
被編譯為:
p { cursor: e-resize; }
注意,如果有引號的字符串被添加了一個沒有引號的字符串 (也就是,帶引號的字符串在 + 符號左側(cè)), 結(jié)果會是一個有引號的字符串。 同樣的,如果一個沒有引號的字符串被添加了一個有引號的字符串 (沒有引號的字符串在 + 符號左側(cè)), 結(jié)果將是一個沒有引號的字符串。 例如:
$c: "Hello" + " " + "Sass!"; .box:before { content: " #{$c} "; }
被編譯為:
.box:before { content: " Hello Sass! "; }5. Reference API
SASS_REFERENCE — Sass Documentation #Operations
如有不正之處,歡迎指正。
學(xué)完整理整理,方便查閱。
更高級的用法還在后面...
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/115144.html
摘要:函數(shù)定義表達(dá)式。對象創(chuàng)建表達(dá)式。也就是說,空字符串將被當(dāng)作,布爾值將被當(dāng)作。如果有一個操作數(shù)是對象數(shù)值或布爾值,則調(diào)用它們的方法取得相應(yīng)的字符串值,然后再應(yīng)用前面關(guān)于字符串的規(guī)則。對于和,則分別調(diào)用函數(shù)并取得字符串和。 表達(dá)式 表達(dá)式是由數(shù)字、運算符、數(shù)字分組符號(如括號)、自由變量和約束變量等以能求得數(shù)值的有意義排列方法所得的組合。JavaScript 表達(dá)式主要有以下幾種形式: ...
摘要:聲明聲明本篇內(nèi)容梳理自以下幾個來源網(wǎng)站的文檔中文網(wǎng)感謝大佬們的分享。這個時候,預(yù)處理器就出現(xiàn)了,其實應(yīng)該是說和這類語言出現(xiàn)了。聲明 本篇內(nèi)容梳理自以下幾個來源: Github:smyhvae/web Bootstrap網(wǎng)站的 less 文檔 Sass中文網(wǎng) 感謝大佬們的分享。 正文-CSS預(yù)處理(less&Sass) CSS預(yù)處理 什么是 CSS 預(yù)處理?為什么要有 CSS 預(yù)處理? 這...
摘要:函數(shù)定義表達(dá)式。對象創(chuàng)建表達(dá)式。需要注意的是,大多數(shù)運算符都是由標(biāo)點符號表示的,比如和。也就是說,空字符串將被當(dāng)作,布爾值將被當(dāng)作。對于和,則分別調(diào)用函數(shù)并取得字符串和。 表達(dá)式 表達(dá)式是由數(shù)字、運算符、數(shù)字分組符號(如括號)、自由變量和約束變量等以能求得數(shù)值的有意義排列方法所得的組合。JavaScript 表達(dá)式主要有以下幾種形式: 原始表達(dá)式:常量、變量、保留字。 對象、數(shù)組初始...
摘要:浮點數(shù)沒有辦法是用二進(jìn)制進(jìn)行精確表示。我們的表示浮點數(shù)由兩個部分組成指數(shù)和尾數(shù),這樣的表示方法一般都會失去一定的精確度,有些浮點數(shù)運算也會產(chǎn)生一定的誤差。浮點數(shù)的值實際上是由一個特定的數(shù)學(xué)公式計算得到的。 首先我們先來看如下代碼示例: public class Test_1 { public static void main(String[] args) { S...
摘要:返回的是是一個整數(shù)的最小值。筆記這個構(gòu)造函數(shù)的結(jié)果可能有些不可預(yù)測。這是因為不能像或者作為任何有限長度的二進(jìn)制分?jǐn)?shù)精確地表示。當(dāng)必須用作源為,注意,此構(gòu)造提供了一個精確的轉(zhuǎn)換它不會將轉(zhuǎn)換為使用方法,然后使用構(gòu)造函數(shù)相同的結(jié)果。 第三階段 JAVA常見對象的學(xué)習(xí) BigInteger和BigDecimal類 BigInteger類 (一) 構(gòu)造方法: //針對超過整數(shù)范圍的運算(整數(shù)最大...
閱讀 1322·2023-04-25 19:10
閱讀 1175·2021-09-10 10:50
閱讀 3058·2021-09-02 15:21
閱讀 1417·2019-08-30 15:52
閱讀 1712·2019-08-30 13:56
閱讀 2120·2019-08-30 12:53
閱讀 1908·2019-08-28 18:22
閱讀 2155·2019-08-26 13:47