我记得我第一次在一个项目中尝试 Sass 的时候。我_首先_想要做的事情就是将我的颜色变量化。根据我在 HTML 中命名事物的技巧,我知道要避免像 .header-blue-left-bottom
这样的类,因为该元素的颜色和位置可能会发生变化。最好让它反映_它是什么_而不是_它是什么样子_。
所以,我试图让我的颜色在某种意义上具有_语义_——它们_代表_什么,而不是它们_实际上_是什么。
但我发现我_完全记不住它们_,并且不得不不断参考我在哪里定义它们才能使用它们。后来,在“随它去吧”的时刻,我给颜色起了更像…这样的名字。
我发现这在没有或几乎没有负面影响的情况下更直观。毕竟,这不是跨越 HTML-CSS 边界;这完全在 CSS 内部,并且仅面向开发者,这使得问题的范围更加狭窄。
以类似的方式,我尝试过将颜色保存在 Sass 映射中,例如
但那里的唯一模糊目标是清理全局命名空间,这可能不值得每次都需要 map-get
的麻烦。如果你需要做任何事情,$-c-orange
这样的命名空间可能是一种更容易的方法。
如今,我在 Sass 中基本上坚持使用这种仅使用颜色名称的方法。随着向 CSS 自定义属性的转变,我认为拥有 --c-orange
和 --c-gray-5
同样合适。
你可以通过保持抽象来更具体地命名这些名称,就像 Marcus Ortense 所说
还有 Mike Street 所说的每个基础的变体
Silvestar Bistrović 最近写了一篇关于 使用抽象希腊数字命名法 的文章。
我之前在媒体查询断点中使用过这种东西,因为数字在那里似乎很有意义(例如,低数字表示较小的屏幕,大数字表示较大的屏幕)。我也可以看到这对于同一颜色的色调或阴影来说是很好的,但为什么不使用常规数字呢?
我经常看到的另一种方法是将命名颜色与抽象名称结合起来。 Geoff 这样做,并且 John Carroll 在这里列出了。
这可以根据你的需要变得尽可能冗长,甚至可以 在从调色板中调用时添加变体。
$table-row-background: lighten($color-background, 10%);
Stuart Robson 甚至在名称中加入了一些 BEM 风格,包括命名空间。
Material Design 使用类似于 font-weight
的值!这意味着你最终会得到一些东西,比如基本范围加上备选方案。
你如何选择颜色的名称?你可能会对如何称呼_阳光_黄与_向日葵_黄感兴趣,或者你可能只是需要一些帮助。这里有一个 项目 可以做到这一点,这里还有另一个。
甚至还有一个 Sublime Text 插件 用于转换它们(转换为任何你想要的语法)。
既然我们正在谈论命名