You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

自定义Tailwind字体大小类为何被文本颜色类覆盖?

问题原因与解决办法

核心原因

twMerge 会依据CSS属性对类进行分组,当它判定两个类属于同一属性冲突组时,会自动保留最后传入的类。你的问题根源在于:twMerge 默认规则误将自定义的 text-xxs(控制字体大小)和 text-black(控制文字颜色)归为同一冲突组(二者都以 text- 开头),但实际上这两个类对应完全不同的CSS属性(font-size 和 color),本不应被合并。

解决步骤

方法1:自定义twMerge冲突组规则(推荐)

通过扩展 twMerge 的配置,明确告知它两个类分属不同属性组,避免误判冲突:

import { twMerge, extendTailwindMerge } from 'tailwind-merge';
import clsx, { ClassValue } from 'clsx';

// 自定义tailwindMerge规则,区分字体大小和颜色类
const customTwMerge = extendTailwindMerge({
  extend: {
    classGroups: {
      // 将text-xxs归入字体大小组
      'font-size': ['text-xxs'],
      // text-black默认属于颜色组,无需额外配置
    },
  },
});

export function cn(...inputs: ClassValue[]) {
  return customTwMerge(clsx(inputs));
}

方法2:调整自定义类命名(快速临时方案)

如果不想修改配置,可以给字体大小类换个前缀,避免和颜色类的 text- 重叠:

/* 自定义CSS */
.text-size-xxs {
  font-size: 10px;
}

调用时改用新类名:

className={cn("text-size-xxs text-black")}

验证

修改完成后,无论传入顺序是 text-xxs text-black 还是 text-black text-xxs,两个类都会被正确保留,不会被合并。

内容的提问来源于stack exchange,提问作者Luka Urushadze

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 11:43:14