LoginSignup
3
3

More than 5 years have passed since last update.

手書きのベンダープレフィックスをある程度自動化したい

Posted at

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がサポートしてくれてるんですけど…

3
3
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3