scss里的符號&的用法
$blue:#324157;
color:$blue;
& 用在嵌套的scss代碼里,來引用父元素
.dashboard { &-container { margin: 30px; } &-text { font-size: 30px; line-height: 46px; } }
編譯成css之后,原本在scss的嵌套結構被展平了:
.dashboard-container { margin: 30px; } .dashboard-text { font-size: 30px; line-height: 46px; }
現在是有趣的部分。我們在 Sass 中定義實際變量值並將其導出到 Javascript。CSS 模塊有一個簡潔的實用程序,稱為:export
. 該:export
指令的工作原理基本上類似於 ES6 的export
關鍵字。您的 Sass 代碼將導出一個對象,其中包含要在 Javascript 中使用的變量名稱及其關聯值。這些值都作為字符串導出。
// styles/animation.scss $animation-length: 250; $animation-length-ms: $animation-length + 0ms; :export { animationMillis: $animation-length-ms; } .component-enter { ... transition: all $animation-length-ms ease-in; }
你會注意到我們首先在一個變量中聲明整數值,然后在另一個變量中添加0ms
它。這允許我們只導出"250"
而不是"250ms"
在 Javascript 端更容易解析(添加0ms
到數字將其“類型”強制轉換為ms
)。
現在,在 Javascript 中,我們只需要從樣式表中導入樣式,並從我們導出的變量中解析出一個 int!
// js/animation.js import styles from '../styles/animation.scss' import CSSTransitionGroup from 'react-transition-group/CSSTransitionGroup' const millis = parseInt(styles.animationMillis) ... <CSSTransitionGroup transitionName="component" transitionEnterTimeout={millis} transitionLeaveTimeout={millis} /> ...
這種方法非常簡單,但是當您避免在 Javascript 和 Sass 之間同步更改的麻煩時,它會獲得回報。
那些不明不白的$符號設計--Sass和Emmet,變量設計原理相通
以前看到php變量的定義,直接使用$符號開始,怎么看都不習慣。后來呀,在使用Emmet的過程中,又接觸到了$符號。今天,在學習Sass的過程種,再一次接觸到$符號,興致所致,不由得想寫一篇,對比一下搞不懂的$符號設計。
1. Emmet
div.item-$*5{haha}
$*5 被對應的替換為1,2,3,4,5
2. Sass
生成item-1, item-2, item-3, item-4, item-5 這5個類,$i,即$1, $2, $3, $4, $5 分別代表一個變量名,插入選擇器中
輸入sass命令: sass input.scss output.css --style expanded, 編譯后,生成的output.css css類如下:
在index.html中引入output.css:
運行效果如下:
3.總結
$1, $2, $3, $4, $5代表變量,Emmet相當於直接執行了一個循環語句,Sass也是通過腳步的方式,編譯后,執行了一個循環語句,原理是相通的。