在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
通常,请勿为没有语义的选择器设置样式,例如divspan
2013年

1
这是我写的一个跨浏览器混合器,用于在任何CSS属性上使用calc:stackoverflow.com/a/24790931/916734
Patrick Berkeley

Answers:


246

您可以转义calc参数以防止在编译时对它们进行求值。

使用您的示例,您只需将参数括起来,如下所示:

calc(~'100% - 10px')

演示:http : //jsfiddle.net/c5aq20b6/


我发现我以下列三种方式之一使用它:

基本转义

calc参数中的所有内容都定义为字符串,并且在客户端对其进行评估之前是完全静态的:

较少输入

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

CSS输出

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

变量插补

您可以在字符串中插入LESS变量:

较少输入

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

CSS输出

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

混合转义和编译的值

您可能想要转义百分比值,但是继续对编译进行评估:

较少输入

@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个相等的部分?
肖恩·斯潘塞

5
@ShawnSpencer:在两行之间,有很多模糊之处。您可以创建一个JSFiddle来说明您要解决的问题吗?我可以尝试猜测用例,但是由于不了解完整的细节而感到困惑,而且我确定您知道如何进行的-最糟糕的约束最终会使您感到困惑。
natchiketa 2015年

2
我不倾向于辞职。因为我要一个简单的CSS解决方案,并且因为我能够使用其中的一种答案来使事情变得可行,所以我现在做的很好。谢谢您提供查看JSFiddle示例的信息。非常感激。
肖恩·斯潘塞


-3

或者,您可以这样使用margin属性:

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

3
OP希望宽度10px小于100%宽度。您的CSS不会这样做。它将使其宽度超过100%。
安德鲁·巴伯

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.