是否可以将一行css编码作为变量传递给less?

时间:2015-05-06 15:45:24

标签: css twitter-bootstrap less media-queries

我正在尝试创建一个系统,为每个不同的媒体查询输出不同的字体大小和行高,这样做我遇到了一个问题。非常感谢任何帮助。

功能

.return-size(@size) when (@size = mob) { @media-dev: "max-width: @media-mobile"; }
.return-size(@size) when (@size = xs) { @media-dev: "max-width: @screen-xs-max"; }
.return-size(@size) when (@size = sm) { @media-dev: "min-width: @screen-sm-min"; }
.return-size(@size) when (@size = md) { @media-dev: "min-width: @screen-md-min"; }
.return-size(@size) when (@size = lg) { @media-dev: "min-width: @screen-lg-min"; }

.font-size-media(@size, @font-size, @multipler: 1.5){
    .return-size(@size);
    @media (@media-dev){
    .font-size(@font-size, @multipler);
    }
}   

我使用Bootstrap进行响应式设计,变量@screen -..- min与屏幕调整大小时的像素值有关。

font-size函数只需要一个字体大小,并根据乘数输出字体大小和行高。

致电(示例)

.font-size-media(xs,12);

我的主要问题是,当我将字符串传递给@media-dev时,它会在我的CSS中作为字符串输出,无论如何都会在将字符串标记传递回font-size-media时将其删除。< / p>

2 个答案:

答案 0 :(得分:1)

对于遇到类似问题的其他人,我找到了答案。(How to pass a property name as an argument to a mixin in less

.return-size(@size) when (@size = mob) { @media-dev: max-width;@measurement: @media-mobile; }
.return-size(@size) when (@size = xs) { @media-dev: max-width;@measurement: @screen-xs-max; }
.return-size(@size) when (@size = sm) { @media-dev: min-width;@measurement: @screen-sm-min; }
.return-size(@size) when (@size = md) { @media-dev: min-width;@measurement: @screen-md-min; }
.return-size(@size) when (@size = lg) { @media-dev: min-width;@measurement: @screen-lg-min; }

.font-size-media(@size, @font-size, @multipler: 1.5){
.return-size(@size);    
    @media (~"@{media-dev}:@{measurement}"){
        .font-size(@font-size, @multipler);
    }
}

包括〜似乎在处理LESS之前删除字符串标记。

答案 1 :(得分:1)

我个人可能会写一些类似的东西(好吧,草绘模式):

.media(@device, @styles) {
    @mob: ~"max-width:" @media-mobile;
    @xs:  ~"max-width:" @screen-xs-max;
    @sm:  ~"min-width:" @screen-sm-min;
    @md:  ~"min-width:" @screen-md-min;
    @lg:  ~"min-width:" @screen-lg-min;

    @media (@@device) {@styles();}
}

.font-size-media(@device, @font-size, @multiplier: 1.5) {
    .media(@device, {
        .font-size(@font-size, @multiplier);
    });
}

(再次,不知道如何实际使用它,所以不要将事情优化为死亡)。

相关问题