使用数学函数获取整数值

发布于 2024-11-29 13:15:03 字数 948 浏览 1 评论 0原文

我有一些基本上看起来像这样的 LessCSS:

.foo {
    @height: 20px;
    @iconHeight: 13px;

    background-position: 0 (@height - @iconHeight) / 2;
}

但是,这显然是 background-position: 0 3.5px,我更喜欢它是一个整数( 的值Math.ceil),但是这不起作用:

background-position: 0 Math.ceil((@height - @iconHeight) / 2)

使用 javascript 求值运算符也不起作用:

background-position: 0 `Math.ceil((@height - @iconHeight) / 2)`

...因为它被解析为 Math.ceil(20px - 13px) 和 " px" 有语法错误。

我什至尝试过使用 parseInt

0 `Math.ceil((parseInt('@{height}', 10) - parseInt('@{iconHeight}', 10)) / 2)`px

但是结果是这样的:

background-position: 0 4 px

...这是不对的。最后,即使在 JS 评估中添加“px”也不起作用

background-position: 0 `Math.ceil(....) + "px"`;
// becomes
background-position: 0 "4px";

当然有更好的方法!

I have some LessCSS that essentially looks like this:

.foo {
    @height: 20px;
    @iconHeight: 13px;

    background-position: 0 (@height - @iconHeight) / 2;
}

However, this obviously turns out as background-position: 0 3.5px, and I'd prefer for it to be an integer (the value of Math.ceil), however this doesn't work:

background-position: 0 Math.ceil((@height - @iconHeight) / 2)

Nor does using the javascript evaluation operator:

background-position: 0 `Math.ceil((@height - @iconHeight) / 2)`

...since this is parsed as Math.ceil(20px - 13px) and the "px" there is a syntax error.

I've even tried using parseInt

0 `Math.ceil((parseInt('@{height}', 10) - parseInt('@{iconHeight}', 10)) / 2)`px

However this turns out like this:

background-position: 0 4 px

...which isn't right. And finally, even adding the "px" in the JS evaluation doesn't work

background-position: 0 `Math.ceil(....) + "px"`;
// becomes
background-position: 0 "4px";

Surely there's a better way!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

怪异←思 2024-12-06 13:15:03

使用临时变量和 0px hack 有一个简单的解决方法。

.foo {
    @height: 20px;
    @iconHeight: 13px;

    @result: `Math.ceil((parseInt('@{height}') - parseInt('@{iconHeight}')) / 2)`;
    background-position: 0 (0px + @result);
}

There is a simple workaround to the problem using temporary variable and 0px hack.

.foo {
    @height: 20px;
    @iconHeight: 13px;

    @result: `Math.ceil((parseInt('@{height}') - parseInt('@{iconHeight}')) / 2)`;
    background-position: 0 (0px + @result);
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文