CSS3 calcを使用したそれほど積極的でないコンパイル


336

レス私は(使用していることをコンパイラOrangeBitsドットなし1.3.0.5は)積極的に翻訳しています

body { width: calc(100% - 250px - 1.5em); }

body { width: calc(-151.5%); }

これは明らかに望ましくありません。Lessコンパイラーに信号を送って、コンパイル中に属性を本質的に無視する方法があるかどうか疑問に思っています。Lessのドキュメントと両方のコンパイラのドキュメントを検索しましたが、何も見つかりませんでした。

LessまたはLessコンパイラはこれをサポートしていますか?

そうでない場合、CSSエクステンダーはありますか?


9
コンパイラの攻撃性を下げたくないですか?
fiatjaf 2013

コンパイラーをもっとアグレッシブにしたいと私も確信しています!(前のコメントの二重否定は私を混乱させました;))(以下の素晴らしい機能への私の投票も同様です)
Andreas Dietrich

回答:


530

Lessはcalc以来、デフォルトで内部の式を評価しなくなりましたv3.00


元の回答(Less v1.x...2.x):

これを行う:

body { width: calc(~"100% - 250px - 1.5em"); }

Less 1.4.0 strictMathsでは、すべてのLessの計算を大括弧で囲む必要があるオプションが用意されているため、calcはそのまま使用できます。これは大きな重大な変更であるため、これはオプションです。1.4.0の初期のベータでは、このオプションがデフォルトでオンになっています。リリースバージョンでは、デフォルトでオフになっています。


2
Twitterのリセスを使用してコンパイルを減らすと、このエスケープは無視されます。少なくともこのコメントを書いている時点では。
Attila Fulop

1
calc(100% - 50px)less.css 1.4.0で試したところ、結果はでしたcalc(50%)。素晴らしい~"..."トリックは引き続き機能しますが、「すぐに使える」ステートメントに混乱しているため、上記が機能すると思います。ルーク、calcLess 1.4.0 での変更をどのようにサポートしますか?ありがとう!
ブライアンM.ハント

2
問題は、なぜless.jsがこれを最初に計算しようとしたのかということです。「100%-250px」は、適切な答えを計算できないため、エラーをスローするはずです。
mpen 2013

72
将来の読者のために、演算子だけをエスケープして、変数も使用できるようにすることもできます。例:calc(@somePercent ~"-" @someLength)
0b10011

10
これを誤って計算したりエラーをスローしたりする代わりに、なぜユーザーが何をしようとしているかを理解できず、そのままにしておけないのでしょうか。明らかに、パーセンテージとピクセル値を一緒に計算することはできません。
dfmiller 2016

37

calcの非常に一般的な使用例は、100%の幅を取り、要素の周りにマージンを追加することです。

次のようにしてこれを行うことができます:

@someMarginVariable = 15px;

margin: @someMarginVariable;
width: calc(~"100% - "@someMarginVariable*2);
width: -moz-calc(~"100% - "@someMarginVariable*2);
width: -webkit-calc(~"100% - "@someMarginVariable*2);


28

同じ結果を持ついくつかのエスケープオプションがあります。

body { width: ~"calc(100% - 250px - 1.5em)"; }
body { width: calc(~"100% - 250px - 1.5em"); }
body { width: calc(100% ~"-" 250px ~"-" 1.5em); }

9

この投稿で説明されているように、エスケープされたcalc内に変数を含めるための整然とした方法があります。CSS3のcalc()関数はLess#974では機能しません

@variable: 2em;

body{ width: calc(~"100% - @{variable} * 2");}

中括弧を使用することで、エスケープする引用符を閉じて再度開く必要がなくなります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.