Lessphp对比度功能的输出与文档不匹配

时间:2015-09-25 15:11:50

标签: css less lessphp

我第一次使用for i := 0; i < n; i++ { A[i] = true } 功能并认为它有问题。

this page上,我找到以下解释:

contrast

我有这两种颜色:

contrast(@color1, @darkcolor, @lightcolor);
    // outputs @darkcolor, when @color1 have more than 43% Luma
    // if not it outputs @lightcolor

第一种颜色有60 Luma,第二种颜色有65 Luma。我希望Less为这两种颜色提供@gBlue: #2196F3; @gLightBlue: #03A9F4; 。但那不是我得到的结果!

Lessphp会返回@lightcolor的{​​{1}}和@darkcolor的{​​{1}}。

谁能告诉我为什么这样做?这是一个错误吗?为什么我不能在这两种情况下获得@gBlue

enter image description here

1 个答案:

答案 0 :(得分:1)

  

注意: v0.5.0的源代码显示,lessphp现在也在检查亮度值而不是亮度(在v0.4.0中使用),因此升级到最新版本也应解决问题

这似乎不是一个错误,而是contrast函数在Less.js,Less.PHP和lessphp(高达v0.4.0 )中的工作方式的差异)。

Less.js和Less.PHP 中,对比度函数根据参考颜色的luma值决定输出颜色。所讨论的2种颜色的luma值小于43%,因此它们输出@lightcolor。 您可以在Less2CSS.org(Online Less.js编译器)和Online Less.PHP compiler检查以下代码的输出。

#sample{
  color:contrast(@color1, @darkcolor, @lightcolor);
  luma-color1: luma(@color1);
  luma-color2: luma(@color2);
}

@color1: #2196F3;
@color2: #03A9F4;
@darkcolor: black;
@lightcolor: white;

然而,lessphp documentation描述了contrast功能如下:(看起来 doc未更新,v0.5.0更改)

  

contrast(color, dark, light) - 如果颜色的亮度值大于50%,则返回黑暗,否则返回光。

第一种颜色的lightness值为54%,而第二种颜色的@darkcolor值为48%。因此, lessphp 在第一种颜色用作参考时输出@lightcolor,在第二种颜色用作参考时输出#sample{ color:contrast(@color2, @darkcolor, @lightcolor); lightness-color1: lightness(@color1); lightness-color2: lightness(@color2); } @color1: #2196F3; @color2: #03A9F4; @darkcolor: black; @lightcolor: white;

您可以在Online lessphp compiler for v0.4.0尝试以下代码,看看我的意思:

contrast

很可能 lessphp 在官方Less(JS版)编译器实现相同功能之前,首先根据lightness值引入了luma函数但是基于lightness而不是Category值。以下声明可在Less documentation

中找到
  

此功能与contrast function in Compass for SASS的工作方式相同。根据{{​​3}},使用伽马校正的亮度值比较颜色,而不是它们的亮度。