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

Tailwind自定义主题下@apply类书写位置及CSS编译问题咨询

问题解决方案

自定义@apply类的正确存放位置

你写的这些自定义类属于可复用的组件级样式,需要放在@layer components 代码块中,插入位置在现有@layer base块之后、@tailwind utilities 声明之前即可。
完整的CSS文件结构如下:

@tailwind base;
@tailwind components;
@tailwind utilities;

@font-face {
    font-family: "Spartan";
    src: url('/fonts/static/Spartan-Bold.ttf') format("truetype");
}

@layer base {
    /* 原有主题变量定义,注意要把颜色值外的引号删掉,否则变量不生效 */
    :root {
        --main: #3a4764;
        --keypad: #232c43;
        --screen: #182034;
        --key-blue: #637097;
        --key-shadow-blue: #404e72;
        --key-red: #d03f2f;
        --key-shadow-red: #93261a;
        --key: #eae3dc;
        --key-shadow: #b4a597;
        --text-dark: #444b5a;
        --text-white: #ffffff;
    }

    .themeLight {
        --main: #e6e6e6;
        --keypad: #d1cccc;
        --screen: #ededed;
        --key-blue: #377f86;
        --key-shadow-blue: #1b5f65;
        --key-red: #ca5502;
        --key-shadow-red: #893901;
        --key: #e5e4e1;
        --key-shadow: #a69d91;
        --text-dark: #35352c;
        --text-white: #ffffff;
    }

    .themeRetro {
        --main: #160628;
        --keypad: #1d0934;
        --screen: #1d0934;
        --key-blue: #58077d;
        --key-shadow-blue: #bc15f4;
        --key-red: #00e0d1;
        --key-shadow-red: #6cf9f2;
        --key: #341c4f;
        --key-shadow: #871c9c;
        --text-light: #ffe53d;
        --text-dark: #1b2428;
        --text-white: #ffffff;
    }
}

/* 新增components层存放自定义类 */
@layer components {
    .key {
        @apply w-1/5 h-1/6 flex justify-center items-center rounded-md border-b-4 pt-2 font-bold text-3xl;
    }

    .keyColor1 {
        @apply border-skin-key-shadow bg-skin-key text-skin-text-dark;
    }

    .keyColor2 {
        @apply border-skin-key-shadow-blue bg-skin-key-blue text-white text-xl;
    }

    .keyColor3 {
        @apply border-skin-key-shadow-red bg-skin-key-red text-white;
    }

    .toggle {
        @apply bg-skin-key-red;
    }
}

额外需要修正的配置问题

你当前的Tailwind配置只定义了backgroundColor的皮肤变量,但自定义类中用到了border-*和text-*的皮肤变量,需要补充对应的配置项,修改后tailwind.config的theme部分如下:

theme: {
    extend: {
      backgroundColor: {
        skin: {
          main: "var(--main)",
          keypad: "var(--keypad)",
          screen: "var(--screen)",
          'key-blue': "var(--key-blue)",
          'key-shadow-blue': "var(--key-shadow-blue)",
          'key-red': "var(--key-red)",
          'key-shadow-red': "var(--key-shadow-red)",
          key: "var(--key)",
          'key-shadow': "var(--key-shadow)",
          'text-dark': "var(--text-dark)",
          'text-white': "var(--text-white)",
        }
      },
      // 补充边框颜色配置
      borderColor: {
        skin: {
          'key-shadow': "var(--key-shadow)",
          'key-shadow-blue': "var(--key-shadow-blue)",
          'key-shadow-red': "var(--key-shadow-red)",
        }
      },
      // 补充文字颜色配置
      textColor: {
        skin: {
          'text-dark': "var(--text-dark)",
          'text-white': "var(--text-white)",
          'text-light': "var(--text-light)",
        }
      }
    },
  },

相关说明

  • 放到@layer components的样式会被Tailwind自动处理,优先级低于工具类,你可以在使用组件类的地方用额外的工具类覆盖样式,符合Tailwind的层级设计规范
  • 原有CSS变量里的多余引号必须删除,否则浏览器会将引号识别为颜色值的一部分,导致样式失效

内容的提问来源于stack exchange,提问作者Roman Kolar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 23:06:02