2

我正在使用 dotless 从管理页面动态更改网站的外观。

本质上,我使用正则表达式来读取 less 中定义的变量,然后为用户提供更改变量值的选项。

我希望可以选择设置背景图像。本质上,我需要一种方法来检查字符串是否为空,如果不是,则添加背景图像混合。

@BackgroundImage: '';

.showBackground(@fileName) when (@fileName != '') {
    background-image: url('../Themes/images/backgrounds/@{fileName}');
}

body {
    .showBackground(@BackgroundImage)
}

所以默认是无背景''当用户设置背景变量@BackgroundImage将被设置为'backgroundImage1.jpg'

我怎样才能让这个空字符串逻辑工作?

PS 我尝试将变量设置为#000000 并使用 isstring() 但它似乎返回 true。

4

2 回答 2

8

您想使用when not而不是否定条件。

较少的

.showBackground(@fileName) when not (@fileName = '') {
    background-image: url('../Themes/images/backgrounds/@{fileName}');
}

输出

@BackgroundImage: ''; // No output.
@BackgroundImage: 'foo'; // background-image: url('../Themes/images/backgrounds/foo');
于 2013-04-09T00:16:44.450 回答
1

这是另一种可能的解决方案,它设置默认值并在不使用变量时检查用例。它试图解决的问题是在某些情况下使用文本作为指示符,在其他情况下使用背景图像。

即使有一些重复,这也很有效。你的旅费可能会改变。

    .pointer( @ico ) 当不是 ( @ico ) {
        &:extend(.global-sprite-image);
        .sprite 位置(@ico);
        .sprite 高度(@ico);
        . 精灵宽度(@ico);
        内容: '';
        左边距:2px;
        行高:1;
    }

    .pointer(@ico:'›') when ( default() ) {
        内容:@ico;
        字体大小:130%;
        字体粗细:粗体;
        字体家族:@字体标题;
        填充左:2px;
        行高:1;
    }

于 2014-09-02T18:14:53.707 回答