user-select()などのCompass側でデフォルトでmixinをインポートしてくれていないようなプロパティの場合、適当に以下のようにしてました。
(frameworks内のscssを弄れば動くらしいけど)
_parts.scss
@mixin user-select($value:none) {
-webkit-user-select: $value;
-moz-user-select: $value;
-ms-user-select: $value;
user-select: $value;
}
しかし、「ベンダープレフィックス、スマホでもmsがtrueになってるのはおかしいよね…」
ということで下記のようにしました。
_setting.scss
$experimental-support-for-webkit: true;
$experimental-support-for-mozilla: true;
$experimental-support-for-microsoft: true;
$experimental-support-for-opera: false;
@mixin exp($property, $value,
$webkit : $experimental-support-for-webkit,
$moz : $experimental-support-for-mozilla,
$ms : $experimental-support-for-microsoft,
$o : $experimental-support-for-opera,
$official : true
) {
@if $webkit and $experimental-support-for-webkit { -webkit-#{$property}: $value;}
@if $moz and $experimental-support-for-mozilla { -moz-#{$property}: $value;}
@if $ms and $experimental-support-for-microsoft { -ms-#{$property}: $value;}
@if $o and $experimental-support-for-opera { -o-#{$property}: $value;}
@if $official { #{$property}: $value;}
}
_parts.scss
@mixin user-select($value:none) {
@include exp(user-select, $value);
}
読み込ませたいファイルにincludeします。
common_pc.scss
.user-select {
@include user-select(none);
}
スマホ用scssにはベンダープレフィックスサポート用の変数を一番始めに再定義しておきます。
common_sp.scss
$experimental-support-for-webkit: true;
$experimental-support-for-mozilla: false;
$experimental-support-for-microsoft: false;
$experimental-support-for-opera: false;
.user-select {
@include user-select(none);
}
こうなります
common_pc.scss
.user-select {
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
common_sp.scss
.user-select {
-webkit-user-select: none;
user-select: none;
}
user-selectだけに限らず使えるので汎用性はありますよね。
まあ、大抵のプロパティははじめからCompassがサポートしてくれてるんですけど…