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

如何在Tailwind CSS JIT模式下为自定义工具类配置动态传入参数

解决方案

你可以通过以下两种方式实现自定义工具类支持JIT任意参数:

方式一:在tailwind.config.js中配置(更推荐)

直接通过Tailwind提供的matchUtilitiesAPI定义动态工具类,你可以删掉原CSS文件中.under-line的相关代码,在配置文件中添加如下内容:

const plugin = require('tailwindcss/plugin')

/** @type {import('tailwindcss').Config} */
module.exports = {
  // 保留你原有的content、theme等其他配置
  plugins: [
    plugin(function({ matchUtilities }) {
      matchUtilities({
        'under-line': (widthValue) => ({
          '&::after': {
            content: '""',
            display: 'block',
            width: widthValue,
            border: 'none',
            borderBottom: '1px solid black',
          }
        })
      }, {
        variants: ['responsive'] // 保留响应式变体支持
      })
    })
  ]
}

配置完成后重启开发服务即可生效,完全支持under-line-[80%]、under-line-[200px]、under-line-[50vw]这类任意值调用。
如果需要增加预设固定值,例如under-line-sm对应50%宽度,可以在matchUtilities的第二个参数中新增values配置:

matchUtilities({
  'under-line': (widthValue) => ({ /* 上述逻辑不变 */ })
}, {
  variants: ['responsive'],
  values: {
    sm: '50%',
    md: '80%',
    lg: '100%'
  }
})

方式二:直接在CSS文件中修改

如果你不想改动配置文件,也可以通过CSS变量的方式适配,修改后的代码如下:

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

@layer utilities {
  @variants responsive {
    .under-line:after {
      content: "";
      display: block;
      width: var(--underline-width, 80%); /* 默认值保留80% */
      border: none;
      border-bottom: 1px solid black;
    }
  }
}

调用时通过JIT的内联变量语法传递参数:<div class="under-line [--underline-width:80%]">foo</div>

注意:该方式调用格式和你要求的under-line-[80%]有差异,要完全匹配你的调用格式还是优先选择方式一。

生效验证

确认你的Tailwind版本已开启JIT模式(3.x版本默认开启,2.x版本需要在配置中新增mode: 'jit'),重启开发服务后即可正常使用。

内容的提问来源于stack exchange,提问作者shingo.nakanishi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 18:39:04