41

calc要素を使用してコンテンツのサイズを動的に変更したいsassスタイルシートに取り組んでいます。要素が標準化されていないため、 、、およびcalcをターゲットにする必要があります。calc()-moz-calc()-webkit-calc()

またはとして設定できる必要なタグを生成するために、式を渡すことができる mixin または関数を作成する方法はありますwidthheight?

4

4 に答える 4

87

これは引数を持つ基本的なmixin になります。ありがたいことに、式はサポートされているスコープ内でブラウザー固有ではありません。

@mixin calc($property, $expression) {
  #{$property}: -webkit-calc(#{$expression});
  #{$property}: calc(#{$expression});
}

.test {
  @include calc(width, "25% - 1em");
}

としてレンダリングされます

.test {
  width: -webkit-calc(25% - 1em);
  width: calc(25% - 1em);
}

calc がサポートされていない場合のために、「デフォルト」値を含めることができます。

于 2012-05-31T01:37:27.503 に答える
10

Compass は、まさにそのような場合にベンダー プレフィックスを追加するための共有ユーティリティを提供します。

@import "compass/css3/shared";

$experimental-support-for-opera: true; // Optional, since it's off by default

.test {
  @include experimental-value(width, calc(25% - 1em));
}
于 2013-02-28T18:05:57.410 に答える
0

それを書く別の方法:

@mixin calc($prop, $val) {
  @each $pre in -webkit-, -moz-, -o- {
    #{$prop}: $pre + calc(#{$val});
  } 
  #{$prop}: calc(#{$val});
}

.myClass {
  @include calc(width, "25% - 1em");
}

これはよりエレガントな方法だと思います。

于 2016-12-22T15:39:33.717 に答える