【问题标题】:Create a variable list in LESS for colors variants based on a base color在 LESS 中为基于基色的颜色变体创建变量列表
【发布时间】:2016-06-22 17:45:53
【问题描述】:

在我们的项目中,我们使用 LESS 变量列表。在这个列表中,我们有多种颜色。例如:

@color-gray: #B9B9BA;

@color-gray-light: lighten(@color-gray, 10%);
@color-gray-lighter: lighten(@color-gray, 20%);
@color-gray-lightest: lighten(@color-gray, 25%);
@color-gray-dark: darken(@color-gray, 10%);
@color-gray-darker: darken(@color-gray, 20%);
@color-gray-darkest: darken(@color-gray, 25%);

除了这种灰色,我们还有其他颜色。所以我想制作一个mixin,为其他颜色制作这个变量列表。

第一种颜色已定义。例如:@color-purple:#915E9F;我希望混合创建剩余的变量,完全基于这个变量。

// Color - Purple    
@color-purple: #915E9F;

// Color variants generated by LESS for purple
@color-purple-light: lighten(@color-purple, 10%);
@color-purple-lighter: lighten(@color-purple, 20%);
@color-purple-lightest: lighten(@color-purple, 25%);
@color-purple-dark: darken(@color-purple, 10%);
@color-purple-darker: darken(@color-purple, 20%);
@color-purple-darkest: darken(@color-purple, 25%);

这些变量稍后将在整个应用程序中用于构成按钮、标题等的样式。我已经混合了这些按钮、标题、变体。

【问题讨论】:

  • 不幸的是,据我所知动态变量名不是 LESS 的一部分。

标签: css less less-mixins


【解决方案1】:

这是你想做的吗?

@color-gray: #B9B9BA;


.colorset(@color) {
  @color-light: lighten(@color, 10%);
  @color-lighter: lighten(@color, 20%);
  @color-lightest: lighten(@color, 25%);
  @color-dark: darken(@color, 10%);
  @color-darker: darken(@color, 20%);
  @color-darkest: darken(@color, 25%);
}


.class{
  .colorset(@color-gray);
  color:@color-light;
}

演示: http://codepen.io/blonfu/pen/ezBEje

【讨论】:

  • 这与我的想法略有不同,但这仍然可以按我的预期工作。太棒了,谢谢。
【解决方案2】:

据我所知,您无法在 mixin 中创建动态变量。但如果你愿意重新思考你的逻辑,你可以这样做:

.color-light (@colorItem) {
  @color-light: lighten(@colorItem, 10%);
}
.color-lighter (@colorItem) {
  @color-lighter: lighten(@colorItem, 20%);
}
.color-lightest (@colorItem) {
  @color-lightest: lighten(@colorItem, 25%);
}
.color-dark (@colorItem) {
  @color-dark: darken(@colorItem, 10%);
}
.color-darker (@colorItem) {
  @color-darker: darken(@colorItem, 20%);
}
.color-darkest (@colorItem) {
  @color-darkest: darken(@colorItem, 25%);
}

.class{
  .color-light(@color-gray);
  color:@color-light;
}

【讨论】:

  • 这很不幸。我们正在构建一个 React 应用程序,我希望将大部分样式类保留在模板之外。这只是意味着我必须手动定义变量列表,没关系。 :-)
猜你喜欢
  • 2020-12-23
  • 2015-10-18
  • 2012-05-30
  • 2014-05-03
  • 2019-02-14
  • 1970-01-01
  • 1970-01-01
  • 2019-01-30
  • 1970-01-01
相关资源
最近更新 更多