为什么萨斯改变我的颜色的格式?

Sass在我的css文件中输出#000和#fff作为黑白颜色值。 例如:

$color: #000; .box { color: $color; } 

输出到:

 .box { color: black; } 

不应该输出hex值?

Sass如何处理颜色取决于您使用的版本。 但是有一些常见的行为:

  • 只要有可能,Sass将始终最大化向后兼容性。 由于关键字hexrgba具有最广泛的浏览器支持,所有颜色将被转换为这三种格式之一,优先于关键字或hex。 只有当颜色具有透明度(如果指定rgba(0, 0, 0, 100) ,Sass会将其转换为black#000 ),rgba格式才会被使用。
  • 如果Sass必须在使用关键字或hex格式之间进行select,则它将使用的取决于输出设置。 紧凑压缩模式将始终转换为hex,其他格式将使用关键字。
  • Sass将在压缩模式下将hex颜色转换为3位格式(例如#000000将被输出为#000 )。

Sass 3.3以上

Sass 在用作variables时才转换颜色,或者如果它们不是上述三种格式之一:

 $color-hex: #000000; $color-keyword: black; $color-rgb: rgb(0, 0, 0); $color-hsl: hsl(0, 0, 0); .box-hex { color: $color-hex; background: #000000; } .box-keyword { color: $color-keyword; background: black; } .box-rgb { color: $color-rgb; background: rgb(0, 0, 0); } .box-hsl { color: $color-hsl; background: hsl(0, 0, 0); } 

输出:

 .box-hex { color: black; background: #000000; } .box-keyword { color: black; background: black; } .box-rgb { color: black; background: black; } .box-hsl { color: black; background: black; } 

Sass 3.4及更高版本

从3.3到3.4的唯一变化是,当使用variables时,Sass将保留你的颜色格式,除非它是关键字,hex或rgba格式以外的格式。

 .box-hex { color: #000000; background: #000000; } 

但是如果我真的需要一个特定的格式呢?

如果你绝对必须有一个特定的格式,你可以把它变成一个string:

 $color: #{'#F00'}; // or `unquote('#F00')` .foo { color: $color; } 

输出:

 .foo { color: #F00; } 

只要记住,当你这样做,你的“颜色”将不会与颜色处理function,如lighten()darken()

没有。

blackwhite ,其他145个颜色名称是CSS标准的一部分:

http://www.w3schools.com/cssref/css_colorsfull.asp

它们被所有浏览器正确处理,同时他们更容易掌握CSS开发人员。

所以他们很好。