使用LESS递归函数和媒体查询生成样式

时间:2014-06-16 10:25:58

标签: css less

我试图生成一些相对于屏幕高度的东西,并决定尝试使用LESS来生成类似的东西,即使有点重,只是作为测试:

@baseHeight: 1px;
.setRelativeHeight(@screenHeight, @minHeightDiff, @maxHeightDiff) when(@screenHeight < 2400) {

    @media (min-height: @baseHeight * @screenHeight) {
        min-height: @baseHeight * (@screenHeight - @minHeightDiff);
        max-height: @baseHeight * (@screenHeight - @maxHeightDiff);
    }
    .setRelativeHeight(@screenHeight + 20, @minHeightDiff, @maxHeightDiff);
}

这似乎很有效,但大部分都是如此,但这是它在调用它时产生的一部分:

@media not all {
#ConversationMessages .messages {
    max-height: 2100px;
    min-height: 2000px;
}
}
@media not all {
#ConversationMessages .messages {
    max-height: 2120px;
    min-height: 2020px;
}
}
@media not all {
#ConversationMessages .messages {
    max-height: 2140px;
    min-height: 2040px;
}
}
@media not all {
#ConversationMessages .messages {
    max-height: 2160px;
    min-height: 2060px;
}
}

所以样式设置正确但媒体条件丢失:(有人知道为什么吗?:)

谢谢!

更新 修复了在媒体条件中添加括号(请参阅下面的评论)。

1 个答案:

答案 0 :(得分:3)

无论--strict-math选项如何,@media查询中的算术运算都应该始终存在。即应该是@media (min-height: (@baseHeight * @screenHeight))