如何将像素宽度值乘以LESS Css?

cwd*_*cwd 9 css less

我试图在一些设置为药丸的\元素上设置填充,我想动态更改填充.我知道我能做到:

@pill-padding-v: 8px;
@pill-padding-h: 15px;

padding:@pill-padding-v @pill-padding-h;
Run Code Online (Sandbox Code Playgroud)

渲染这个 - 似乎工作正常:

padding:8px 15px;
Run Code Online (Sandbox Code Playgroud)

但是我怎么能少加1px的填充呢?

@pill-padding-v: 8;
@pill-padding-h: 15;

@pill-padding-v: (@pill-padding-v + 1)
@pill-padding-h: (@pill-padding-h + 1)

padding:@pill-padding-vpx @pill-padding-hpx;
Run Code Online (Sandbox Code Playgroud)

主要的探针似乎是添加"px"作为变量名称的一部分我得到了编译错误.另外我认为使用8 px而不是在语法上也是不正确的8px,而且似乎在浏览器中也是如此.

如何将像素宽度值乘以LESS Css?

Wes*_*rch 15

你是对的,添加px变量会导致问题.其实,我尝试了插语法,并没有帮助,但你应该反正在你的变量指定单位(px,em,%在你的第一个工作的例子......),等等.

你说"繁殖",但我认为你的意思是"添加".应该没有任何问题,试试这个:

@pill-padding-v: 8px;
@pill-padding-h: 15px;

@pill-padding-v: (@pill-padding-v + 1);
@pill-padding-h: (@pill-padding-h + 1);

element {
    padding:@pill-padding-v @pill-padding-h;
}
Run Code Online (Sandbox Code Playgroud)

输出应该是:

element { padding:9px 16px; }
Run Code Online (Sandbox Code Playgroud)

...虽然,您可能只想使用另一个变量名称或在样式声明中添加1px.我不认为重新声明变量是一种好的做法,并且实际上对它起作用感到惊讶.


its*_*kem 6

除了添加,您可以使用LESS执行任何数学计算:

@pill-padding-v: 8;
@pill-padding-h: 15;

element {
/* the numbers I'm multiplying by are arbitrary,
but the value defined in the LESS variable will append
the unit that you multiply it by. */
padding: calc(@pill-padding-v * 3px) calc(@pill-padding-h * 2px);
}
Run Code Online (Sandbox Code Playgroud)

较少的产出:

element {
   padding:calc(24px) calc(30px);
}
Run Code Online (Sandbox Code Playgroud)

即使它包含在calc函数中,也没关系,因为没有数学运算符的"等式"的结果无论如何都是该值.

用户七阶段最大值提供了一个好点:您不需要calc()LESS中的功能.它可以写成LESS为:

element {
   padding: (@pill-padding-v * 3px) (@pill-padding-h * 2px);
}
Run Code Online (Sandbox Code Playgroud)

  • 要从生成的CSS中去除`calc`,只需从Less代码中删除它,例如你的答案中的代码可能只是:`padding:(@ pill-padding-v*3px)(@ pill-padding-h*2px) ;`. (3认同)