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

如何在Tailwind中定义自定义响应式类以适配多屏幕字号?

问题描述

作为Tailwind新手,我想找一种优雅的方式定义适配不同屏幕尺寸的类,核心需求是通过单个类实现不同屏幕下的不同字号。原本尝试用组件层结合响应式前缀实现,代码如下:

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

@layer components {
    .h1 {
        @apply sm:font-size-[33px] md:font-size-[35px] lg:font-size-[43px];
    }
}

但运行后出现报错:

X [ERROR] The `sm:font-size-[33px]` class does not exist. If `sm:font-size-[33px]` is a custom class, make sure it is defined within a `@layer` directive. [plugin angular-sass]

styles/ci-font-styles.scss:3:3:
  3 │     @apply sm:font-size-[33px] md:font-size-[35px] lg:font...
    ╵    ^

想请教正确的实现方法。


解决方案

1. 修正工具类名称(最快解决)

报错的核心原因是用错了Tailwind工具类名:Tailwind中控制字体大小的工具类是text-[size],而非font-size-[size]。修改代码为:

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

@layer components {
    .h1 {
        @apply sm:text-[33px] md:text-[35px] lg:text-[43px];
    }
}

这样.h1类会自动在sm、md、lg断点应用对应的字号,完全符合“单个类实现多屏幕适配”的需求。

2. 组件层内使用媒体查询语法

如果你更习惯直接写CSS媒体查询,可以用Tailwind提供的@screen指令简化断点写法:

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

@layer components {
  .h1 {
    /* 默认(sm断点及以下) */
    font-size: 33px;
    /* md断点及以上 */
    @screen md {
      font-size: 35px;
    }
    /* lg断点及以上 */
    @screen lg {
      font-size: 43px;
    }
  }
}

3. 自定义主题(长期优雅方案)

如果这类字号需要在项目中多处复用,建议在tailwind.config.js中统一自定义fontSize,方便后续维护:

/** @type {import('tailwindcss').Config} */
module.exports = {
  theme: {
    extend: {
      fontSize: {
        h1: {
          DEFAULT: '33px',
          md: '35px',
          lg: '43px',
        },
      },
    },
  },
}

然后在组件类中直接调用:

@layer components {
  .h1 {
    @apply text-h1 md:text-h1 lg:text-h1;
  }
}

注:text-h1默认应用DEFAULT值,md:text-h1会自动匹配md对应的字号


内容的提问来源于stack exchange,提问作者Linda Dlamini

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 23:53:13