SASS沒有辦法連接正確領帶,我不知道是否存在一個CSS外部工具來完成這項任務。創建Sass是爲了提高CSS功能,而不是讓程序員開發不好的編程實踐。我不知道創建多個CSS聲明語句的目的,因爲您可以將它們全部保存在一個語句中。將所有轉換保留在一個聲明中可以顯着改善您的結構,工作流程和Sass代碼的性能。
好吧,這就是說,正如你之前提到的「讓可怕的混合物成爲」一樣。
這裏有兩個不同的mixin,一個用於縮寫過渡聲明,另一個用於長表單,它們在處理和加載時間上的差異可以忽略不計,唯一明顯的區別在於代碼的風格。
龍形式混入
@mixin transition($properties, $durations, $timing-function: null, $delay: null) {
$declarations: (property, $properties),
(duration, $durations),
(timing-function, $timing-function),
(delay, $delay);
@each $declaration in $declarations {
@if nth($declaration, 2) {
$output:();
@each $val in nth($declaration, 2) {
$output: append($output, $val, comma);
}
@each $prefix in '-webkit-', '-moz-', '-ms-', '-o-', '' {
#{$prefix}transition-#{nth($declaration, 1)}: $output;
}
}
}
}
它類似於@LeBen混入,但你可以用用逗號分隔的參數包括不帶引號:
@include transition(background-color margin, 0.2s 0.3s);
簡寫形式
@mixin transition($declarations...) {
@each $prefix in '-webkit-', '-moz-', '-ms-', '-o-', '' {
#{$prefix}transition: $declarations;
}
}
下面就來實現它在你的代碼
@include transition(background-color 0.2s, margin 0.3s);
而現在,要解決「不同的呼叫」對付他們的唯一方法您的問題的方式,在我看來,使用append()
列表功能。
讓我們來看看例子。我將使用簡寫混合形式,因爲它更容易實現。
試想一下,你有四頁,三個諧音(_variables.scss
,_page1.scss
,_page2.scss
,_page3.scss
)和style.scss
文件其中進口其他:
_VARIABLES.SCSS
// Here comes the variable declaration
$transition-list: color 1s;
_PAGE1。 SCSS
// Using append($list, $val, $separator:auto) list function
// we can add some items to $transition-list
$transition-list: append($transition-list, margin 2s, comma);
_PAGE2.SCSS
// You can add also the output of a function
@function example(){
@return unquote("background-color 1s")
}
$transition-list: append($transition-list, example(), comma);
STYLE.SCSS
// You can add new values into the same page
$transition-list: append($transition-list, padding 4s, comma);
$transition-list: append($transition-list, border 10s, comma);
// And finally you only need to use the include to generate the final transition
example {
@include transition($transition-list);
}
正如我以前說過的,我不建議使用這種方法,這不是一個好實踐。
這個mixin語法是錯誤的,在過渡值之間沒有逗號。你也不能用簡寫'transition'應用多個值,你必須使用'transition-property'。我會盡力在答案中給你一些代碼。 – LeBen
@leBen是的,寫在急...對不起 – towc
僅供參考,'-ms-'前綴是不需要的。 – BoltClock