LESS CSSでパーセントからピクセルへ、次にピクセルでマイナスへ幅を計算する


100

一部の要素の幅をパーセントからピクセルまで計算するため、LESScalc()を使用してマイナス-10pxにします。それが可能だ?

div {
    span {
        width:calc(100% - 10px);
    }
}

CSS3を使用しているcalc()ため、機能しません。calc(100% - 10px)

例: 100%= 500px、つまり幅= 490px(500-10)の場合。

私はテストのためにデモを作りました:http : //jsfiddle.net/4DujZ/55/

だからパディングは言うでしょう:私がリサイズするときはいつも5(10px / 2)。

LESSで実行できますか?私はjQueryとマージンパディングなどの簡単なCSSで行う方法を知っています...しかし、私はLESSで機能的にしようとしますcalc()



1
ここで私はすべてのCSSプロパティにCALCを使用してのために書いた、クロスブラウザのmixinです:stackoverflow.com/a/24790931/916734
パトリック・バークレー

回答:


246

calcコンパイル時に評価されないように、引数をエスケープできます。

例を使用すると、次のように引数を囲むだけです。

calc(~'100% - 10px')

デモ:http : //jsfiddle.net/c5aq20b6/


これを次の3つの方法のいずれかで使用していることがわかりました。

基本的なエスケープ

calc引数内のすべては文字列として定義され、クライアントによって評価されるまで完全に静的です。

LESS入力

div {
    > span {
        width: calc(~'100% - 10px');
    }
}

CSS出力

div > span {
  width: calc(100% - 10px);
}

変数の補間

LESS変数を文字列に挿入できます。

LESS入力

div {
    > span {
        @pad: 10px;
        width: calc(~'100% - @{pad}');
    }
}

CSS出力

div > span {
  width: calc(100% - 10px);
}

エスケープされた値とコンパイルされた値の混合

パーセンテージ値をエスケープしたいかもしれませんが、コンパイル時に何かを評価してください:

LESS入力

@btnWidth: 40px;
div {
    > span {
        @pad: 10px;
        width: calc(~'(100% - @{pad})' - (@btnWidth * 2));
    }
}

CSS出力

div > span {
  width: calc((100% - 10px) - 80px);
}

ソース:http : //lesscss.org/functions/#string-functions-escape


2
あなたはロック、男!それらの例と説明をありがとう。LESSを使用して、コンテナの未知の幅(div.categoriesと呼びましょう)を4つの等しい部分に分割する方法を知っていますか?
Shawn Spencer

5
@ShawnSpencer:行の間に、多くのあいまいさが存在します。解決しようとしていることを示すJSFiddleを作成できますか?ユースケースを推測することはできますが、完全な詳細がわからないので抑制されています。きっとそれがどのように行われるかはわかっています。
ナッチケタ2015

2
私は成熟に辞任する気はありません。私は単純なCSSソリューションを探しているので、物事を機能させることができたので、答えの1つを使用して、今のところ問題はありません。JSFiddleの例をご覧いただきありがとうございます。とても有難い。
ショーンスペンサー

0

width: -moz-calc(25% - 1em);あなたが探しているものだと思います。そして、あなたはこのリンクにさらなる援助を探すことを望むかもしれません


-3

または、次のようにmargin属性を使用することもできます。

    {
    background:#222;
    width:100%;
    height:100px;
    margin-left: 10px;
    margin-right: 10px;
    display:block;
    }

3
OPは、10px未満の幅を求めています。CSSはそれを行いません。それは作るより広い 100%未満。
Andrew Barber

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