使用 TailwindCSS 中的 color-mix() 构建自定义调色板

在这篇文章中,我们将了解如何使用 CSS 函数color-mix()和 CSS 变量,通过 TailwindCSS 高效地为 Nuxt 应用程序生成自定义调色板。

先决条件

最好使用以下命令设置 Nuxt 应用程序:

npx nuxi init tailwindcss-color-mix

在安装提示期间选择 TailwindCSS 作为依赖项是最好的。

创建后,在项目的根目录中,您应该创建两个文件 - 其中一个位于包含以下代码的文件夹tailwind.css中:styles

/** styles/tailwind.css */ @tailwind base; @tailwind components; @tailwind utilities;

我们创建另一个文件,tailwind.config.js用于扩展项目中TaiwindCSS的配置:

/** tailwind.config.js */ module.exports = { }

然后在 中nuxt.config.js,您需要tailwindcss使用以下代码设置插件的配置:

/** nuxt.config.js */ export default { //... tailwindcss: { cssPath: '~/styles/tailwind.css', configPath: '~/tailwind.config.js' }, }

了解调色板变体

TailwindCSS 调色板是一组颜色,分为两个部分:较浅的颜色(色调变体)和较深的颜色(阴影变体)。色调变体的范围是 50 到 400,较暗的颜色是 600 到 900,基色是 500 的变体。TailwindCSS 调色板的颜色示例如下#96454c

使用 TailwindCSS 中的 color-mix() 构建自定义调色板_第1张图片

生成调色板变体的方法有很多。您可以使用调色板生成器从图像构建调色板,或者构建您的机制以获取颜色并使用 JavaScript 生成适当的调色板。

或者你可以使用CSS功能——color-mix()来实现这个目标。

使用 color-mix() 生成具有色调和阴影变体的调色板

color-mix()是一个 CSS 函数,它接受两种颜色并根据给定的颜色空间返回所需的混合颜色变体。要使用color-mix(),我们需要定义colorSpace来计算混合baseColor和的值blendingColor,如以下语法所示:

color-mix( in colorSpace, baseColor , blendingColor )

如果适用,我们还可以指示浏览器用于混合baseColorPercent的百分比。下面是在颜色空间中将红色与白色混合的示例:baseColor``blendingColorPercent``blendingColor``50%``20%``sRGB``color-mix()

CSS 中生成的混合颜色

虽然baseColorblendingColor可以是任何 CSS 支持的颜色值,但我们也可以使用color-mix()不同的颜色空间进行颜色混合,从 sRGB 到 HSL。结果颜色将根据所选颜色空间而有所不同。在这篇文章中,我们将使用 sRGB 作为我们的色彩空间。

现在我们了解了color-mix()工作原理,我们将探索如何生成色调并共享 Tailwind 调色板的变体。

生成色调变体

如前所述,色调变体是基色的较浅色调,是通过将基色与白色以一定强度级别(或百分比)混合而产生的。

换句话说,我们通过将一种颜色与一定比例的白色混合来创建一个新的变体,使用color-mix()以下公式:

color-mix(in srgb, , white )

基于上面的公式,我们实现一个函数getTintVariantColor,它接受一个基数color和一个intensity从 0 到 1 的值,并返回一个包含适当 CSS 代码的字符串color-mix

function getTintVariantColor(color, intensity) { return `color-mix(in srgb, ${color}, white ${intensity * 100}%)` }

由于我们的色调需要 50、100、200 和 400 的变体,因此我们可以whitePercentage相应地逐渐增加每个变体级别的值,如下例所示:

const tintVariants = { 50: 0.95, //95% 100: 0.9, //90% 200: 0.7, //70% 300: 0.5, //50% 400: 0.3, //30% }

伟大的。现在让我们转到文件并使用文件中的字段tailwind.config.js从原色提供自定义调色板,如下所示:#96454c``theme.extend.colors``tailwind.config.js

module.exports = { theme: { extend: { colors: { primary: { 50: getTintVariantColor('#96454c', tintVariants.50), 100: getTintVariantColor('#96454c', tintVariants.100), 200: getTintVariantColor('#96454c', tintVariants.200), 300: getTintVariantColor('#96454c', tintVariants.300), 400: getTintVariantColor('#96454c', tintVariants.400), 500: '#96454c', } }, } }, }

就是这样。当您将以下代码添加到文件中时pages/index.vue,您将看到原色的色调调色板#96454c

``