css - 当属性具有多个值时,如何使用 Less 将 px 转换为 vw?

标签 css less

我有一个像这样的mixin:

.lib-vw (@prop, @value) {
    @result: (@value / ((1440 * 0.01) * 1px)) * 1vw;
    @{prop}: @value;
    @{prop}: @result;
}

并像这样使用它:

div {
    .lib-vw(margin-top, 18px);
}

输出是这样的:

div {
  margin-top: 18px;
  margin-top: 1.25vw;
}

这是demo

现在我希望 .lib-vw() 支持多个值,如下所示:

.lib-vw(margin, 18px 10px);
.lib-vw(margin, 18px 10px 20px);
.lib-vw(margin, 18px 10px 20px 30px);

如何更新(或创建新的)我的 mixin 以支持多个值?

提前致谢。

最佳答案

你只需要制作 mixin,它接受 4 个值并将它们组合为一个:

.lib-vw (@prop, @value1, @value2, @value3, @value4) {
    @result1: (@value1 / ((1440 * 0.01) * 1px)) * 1vw;
    @result2: (@value2 / ((1440 * 0.01) * 1px)) * 1vw;
    @result3: (@value3 / ((1440 * 0.01) * 1px)) * 1vw;
    @result4: (@value4 / ((1440 * 0.01) * 1px)) * 1vw;
    @result: @result1 @result2 @result3 @result4;
    @value: @value1 @value2 @value3 @value4;
    @{prop}: @value;
    @{prop}: @result;
}
div {
    .lib-vw(margin, 18px, 18px, 18px, 18px);
}

Demo

关于css - 当属性具有多个值时,如何使用 Less 将 px 转换为 vw?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43304239/

相关文章:

css - 如何保持页面背景图片缩放固定? CSS

css - 让 application.css 覆盖 Bootstrap

html - 高度 : 100%; not working with Flex Box

Javascript。我无法更改计时器的 CSS

node.js - 单个 Bootstrap 组件上的较少编译错误

css - 使用 Codekit 围绕 LESS 中的 @import 行为混淆

css - 在 LESS 中使用属性值进行数学运算

css - Flexbox:flex-start、self-start、start;有什么不同?

CSS-LESS 动画不起作用

javascript - 页面加载偏移值设置为 0。计算检查值