【问题标题】:LESS variable concatenation and interpolationLESS 变量连接和插值
【发布时间】:2014-12-05 08:04:47
【问题描述】:

我正在尝试覆盖 Bootstrap 在按钮上的悬停效果。我想节省一些空间,并通过简单地将类的名称传递给 mixin 并让该类的背景变量自动从中推导出来以巧妙的方式完成。所以我的mixin是:

.btn-hover(@name){
  .@{name}:hover{
      background: lighten( @~"@{name}-bg", 10% );
   }
}

.btn-hover(btn-primary);

但我似乎无法通过将-bg 连接到btn-primary 来访问变量@btn-primary-bg,因为@~"@{btn-name}-bg" 会导致编译器错误。我想要做的甚至可能吗?如果是这样,那将是非常漂亮的。

编辑 ---------------------------------- -------------------

偶然发现了这个question,它肯定是相关的,但我认为我的问题真的可以归结为:

在LESS中,字符串连接后可以通过插值访问变量吗?

@btn-success-bg: #00ff00;
@name: btn-success;
@background: @~"@{name}-bg";  // How do I access @btn-success-bg?

【问题讨论】:

    标签: twitter-bootstrap-3 less mixins


    【解决方案1】:

    你可以这样做:

       @btn-primary-bg: red;
    
        .btn-hover(@name){
          .@{name}:hover{
              @buttonname: ~"@{name}-bg";
              background: lighten( @@buttonname, 10% );
           }
        }
    
        .btn-hover(btn-primary);
    

    另见:http://lesscss.org/features/#variables-feature-variable-names

    【讨论】:

    • 以防万一您不需要 ~ 来获取 @buttonname 值,@@ 可以完美地使用带引号的字符串。
    • 所以我的错误真的是我只需要先将~"@{name}-bg"的值存储在一个变量中,然后像@@value一样访问它?
    • 是的,确实,正如@seven-phases-max 所提到的,波浪号~ 也不需要。
    猜你喜欢
    • 2015-08-03
    • 1970-01-01
    • 1970-01-01
    • 2015-06-19
    • 1970-01-01
    • 1970-01-01
    • 2014-10-28
    • 2011-03-27
    • 2012-12-08
    相关资源
    最近更新 更多