第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

Sass 插值

1. 前言

在很多編程器語言中都有插值這個概念,在 Sass 樣式表的任何地方幾乎都可以使用插值,你可以將這些包裹在 #{} 中來使用,所以記住在 Sass 中使用插值的方式是 #{} ,本節(jié)我們一起來看一下插值在 Sass 中的使用場景以及它的語法~

2. 什么是插值?

插值也就是可以在特定的區(qū)域插入一段表達(dá)式或者插入一個變量,以此來實現(xiàn)內(nèi)容動態(tài)變換的需求。

3. 語法示例

我們先來看一段官網(wǎng)給出的 Sass 代碼來直觀感受一下插值是什么樣的:

@mixin corner-icon($name, $top-or-bottom, $left-or-right) {
  .icon-#{$name} { // 使用了插值
    background-image: url("/icons/#{$name}.svg");
    position: absolute;
    #{$top-or-bottom}: 0; // 使用了插值
    #{$left-or-right}: 0; // 使用了插值
  }
}

@include corner-icon("mail", top, left);

上面這段代碼一眼看去挺復(fù)雜的,不要慌!這是 Sass 中的混合指令,在后面的 Sass 混合指令中我們會詳細(xì)的講解它,在本節(jié)你只需要知道插值可以在混合指令中使用。在上面的代碼中我標(biāo)注了哪里使用了插值,你可以感受下記住它長什么樣子,這三處都使用插值插入了變量的值,這段代碼將會被轉(zhuǎn)換為如下的 CSS 代碼:

.icon-mail {
  background-image: url("/icons/mail.svg");
  position: absolute;
  top: 0;
  left: 0;
}

4. 使用場景

上面的語法示例你感受了插值的寫法,這里我們開始詳細(xì)講解插值的各種使用場景,除了上面所示例的在 Sass 指令中可以使用外,它還可以應(yīng)用于以下的一些場景:

  • 在選擇器中使用
  • 在屬性名中使用
  • 在屬性值中使用
  • 在注釋中使用

這里我們暫且詳細(xì)講解這四種使用場景,在 Sass 指令和在 Sass 函數(shù)中也是可以使用的,不過我們會在其對應(yīng)的章節(jié)再去做講解。下面我們先看下這四種使用場景。

4.1 在選擇器中使用

我們一般在寫頁面的時候會為 DOM 元素定義一些 class 或 id ,當(dāng)我們?yōu)槠鋵憳邮降臅r候會用不同的選擇器,那么在選擇器中我們可以使用插值來拼接一些類名等等,我們舉個例子來看下:

$name: item;
.ul-#{$name} { // 使用插值
  width: 200px;
  .li-#{$name} { // 使用插值
    width: 100%;
  }
}
.box-#{$name} { // 使用插值
  height:100px;
  .#{$name} { // 使用插值
    height:100%;
  }
}

可以看到上面的代碼,我制定了一個 DOM 層級結(jié)構(gòu),這種結(jié)構(gòu)也是很常見的,可能很多子元素的類名我們都帶有 item ,那么我們就可以把它提取為一個變量然后通過在選擇器中應(yīng)用插值來拼接,這樣就很方便我們維護,我們想改子元素類名的時候就不需要逐一的去更改了。上面這段 Sasd 代碼轉(zhuǎn)換為 CSS 如下:

.ul-item {
  width: 200px;
}
.ul-item .li-item {
  width: 100%;
}

.box-item {
  height: 100px;
}
.box-item .item {
  height: 100%;
}

4.2 在屬性名中使用

除了在選擇器中使用,在 Sass 屬性名上也是可以使用插值的,也就是說你在寫 CSS 屬性名的時候你也是可以使用插值來拼接的,我們舉個例子來看下:

$name: color;
$position: top;
body {
  background-#{$name}: red;
  border-#{$name}: blue;
  padding-#{$position}: 5px;
  margin-#{$position}: 10px;
  #{$position}: 20px;
}

可以看到上面的代碼中我對 CSS 的屬性名使用了插值,可以用這種方式來拼接屬性名,不過在實際項目中不是很常用,一般都是在指令里這么運用,就像在前面語法示例中舉的例子一樣。上面這段代碼轉(zhuǎn)換成 CSS 為:

body {
  background-color: red;
  border-color: blue;
  padding-top: 5px;
  margin-top: 10px;
  top: 20px;
}

4.3 在屬性值中使用

在屬性值中使用插值應(yīng)該算是比較常用的,插值使你在屬性值中不僅可以插入值,還可以插入表達(dá)式來計算。除此之外我們在前面的運算章節(jié)中,不知道你是否還記得,我們對兩個變量使用 / 標(biāo)識符的時候,如果你不想對這兩個變量進(jìn)行除法運算而是進(jìn)行分隔,那么就可以使用插值避免運算。

可以說插值在屬性值中的應(yīng)用很廣泛也很實用,我們來舉例看下:

$one: 20px;
$two: 2;
$family: "UaTy";
div {
  margin: $one / $two; // 除法運算
  margin: #{$one} / #{$two}; // 分隔
  font-family: "MyFo #{$family}"; // 帶引號的字符串會轉(zhuǎn)換為不帶引號
  width: calc(100% - $one * 2 *$two); // calc函數(shù)中內(nèi)容會被當(dāng)作字符串處理
  width: calc(100% - #{$one * 2 *$two}); // calc函數(shù)中插值的內(nèi)容會進(jìn)行運算
}

上面的代碼中我對每一行都進(jìn)行了標(biāo)注,你要仔細(xì)看下,在屬性值中你可以用這些方式來使用插值,上面的代碼將會被轉(zhuǎn)換為如下的 CSS 代碼:

div {
  margin: 10px;
  margin: 20px/2;
  font-family: "MyFo UaTy";
  background-image: url(http://xxx.xxx.xxx/a.jpg);
  width: calc(100% - $one * 2 *$two);
  width: calc(100% - 80px);
}

在屬性值中應(yīng)用插值的場景還蠻多的,你可以這么來使用以提高你的開發(fā)效率~

4.4 在注釋中使用

在 Sass 中的注釋里也是可以使用插值的,而且如果插值中的內(nèi)容是一段表達(dá)式,將會返回表達(dá)式的結(jié)果,舉個例子來看下:

/* 在注釋中使用插值:
 * 2 + 2 = #{2 + 2} */
/* #{9 + 8 * 2} */

我們可以在注釋中可以這么使用插值,具體什么時候需要使用看你的需求,你需要知道插值的這種使用方式,上面的代碼將會被轉(zhuǎn)換為如下的 CSS 代碼:

/* 在注釋中使用插值:
 * 2 + 2 = 4 */
/* 25 */

5. 實戰(zhàn)經(jīng)驗

在我的實際項目中,在函數(shù)和指令中使用插值比較多,在后面函數(shù)和指令的章節(jié)你會看到插值的更多運用,這里我列出在屬性值以及選擇器中的使用。在我項目中專門維護變量的文件中,定義了如下的幾個變量:

$primary-dom-name: "box"; // 主要父級元素類名
$primary-child-name: "item"; // 主要子元素類名
$public-top: 10px;
$public-bottom: 10px;
$public-margin: 12px;
$public-padding: 14px;

在我項目中的導(dǎo)航樣式中我使用了上面的這些變量,代碼如下:

.menu-#{$primary-dom-name} {
  width: 200px;
  height: calc(100% - #{40px - $public-bottom});
  background: #cccccc;
  overflow-x:hidden;
  overflow-y: auto;
  padding: $public-padding;
  .li-#{$primary-child-name} {
    width:100%;
    height: 40px;
    margin-bottom: $public-margin;
    text-align:center;
    line-height:40px;
    color: blue;
    .txt-#{$primary-dom-name} {
      border-bottom: 2px solid #999999;
    }
    &:hover {
      background: #999999;
    }
  }
  .logo-#{$primary-dom-name} {
    width: 50px;
  }
}

可以看到,當(dāng)有一天我們因為業(yè)務(wù)或者什么其他的需要,我們需要更換類名或者調(diào)整間距的時候,我們直接更改變量值就 ok 了,這樣維護起來方便的多!不過一般在公司的項目中,這種公共的樣式代碼維護一般是由架構(gòu)組或者專門的人來維護的,如果你不負(fù)責(zé)維護這些,你一定不要輕易去改動這些代碼!

6. 小結(jié)

本節(jié)內(nèi)容我們講解了 Sass 中的插值以及它的使用場景,一般我們會在如下的場景使用:

  • 在函數(shù)和指令中使用

  • 在選擇器中使用

  • 在屬性名中使用

  • 在屬性值中使用

  • 在注釋中使用

我們通過下圖來更深地回憶下本節(jié)插值的使用場景:

圖片描述

總體來說插值在 Sass 中用的還是比較多的,使用也比較簡單不是那么復(fù)雜,后面在函數(shù)或指令中、在你項目的 Sass 中看見 #{} 要知道這是 Sass 的插值!