Nik*_*des 4 sass material-design material-design-lite
问题:
是否有 SASS 函数/技术可以将十六进制值转换为简单的RGB 字符串。
rgb() 这里简单意味着只是一个字符串而不用?括起来。
例如:#D50000 --> "213,0,0"
为什么我需要这个:
我使用Material Design Lite作为我的 UI“框架”。更具体地说,我使用的是 SASS 版本,因此我可以根据应用程序的样式指南调整颜色变量。
由于某种原因,MDL 中的颜色变量_variables.scss采用以下格式进行颜色定义:
$color-primary: "0,0,0" !default; // supposed to be black
Run Code Online (Sandbox Code Playgroud)
这真的非常非常奇怪。我最多期望的是类似的事情
$color-primary: rgba(0,0,0,1) !default;
Run Code Online (Sandbox Code Playgroud)
我的颜色变量存储在另一个名为 的文件中,_globals.scss我在其中以常规十六进制格式存储变量,以便我可以轻松地在其他地方重用它们:
$brand-primary: #FA3166;
$brand-primary-dark: #E02C59;
Run Code Online (Sandbox Code Playgroud)
我不想定义两倍的颜色(1 个十六进制和 1 个 MDL 兼容的 RGB 字符串),因此我需要将十六进制转换为 RGB 字符串。
@nicholas-kyriakides 的答案工作得很好,但这里有一个使用 Sass 插值的更简洁的函数。
@function hexToRGBString($hexColor) {
@return "#{red($hexColor)},#{green($hexColor)},#{blue($hexColor)}";
}
Run Code Online (Sandbox Code Playgroud)
您可以显式传入十六进制,也可以从 rgb() 或 rgba() 传入不透明度为 1 的十六进制。
例如:
$color-white: hexToRGBString(#fff) => "255,255,255"
$color-white: hexToRGBString(rgb(255,255,255)) => "255,255,255"
$color-white: hexToRGBString(rgba(#fff,1)) => "255,255,255"
Run Code Online (Sandbox Code Playgroud)