仅定位移动断点

Noi*_*art 7 tailwind-css

我正在使用 Tailwind v3。

我有一个自定义背景颜色,通过 javascript 以内联样式应用:

<div style="background-color: RANDOM_GENERATED_COLOR" />
Run Code Online (Sandbox Code Playgroud)

但是在移动断点中,我希望它忽略这个背景颜色,我想要没有背景。所以我所做的是添加!bg-transparent,使用“!” 修饰符我让它覆盖内联样式:

<div style="background-color: RANDOM_GENERATED_COLOR" class="!bg-transparent" />
Run Code Online (Sandbox Code Playgroud)

但是,我不希望在所有其他断点sm及以上断点处覆盖内联样式。

是否可以!bg-transparent仅针对移动断点?

Iha*_*nka 11

您可以添加自定义变体,该变体将仅在移动屏幕上应用样式,例如@media max-width: 640px. 一般来说,对于自定义变体,您可以添加任何额外的媒体或您需要的状态

const plugin = require('tailwindcss/plugin')

module.exports = {
  plugins: [
    plugin(function ({ addVariant }) {
      addVariant('mobile-only', "@media screen and (max-width: theme('screens.sm'))"); // instead of hard-coded 640px use sm breakpoint value from config. Or anything
    }),
  ],
}
Run Code Online (Sandbox Code Playgroud)
<div style="background-color: RANDOM_GENERATED_COLOR" class="mobile-only:!bg-transparent" />
Run Code Online (Sandbox Code Playgroud)

!important由于内联样式,仍然需要使用flag

彩色演示- 调整右侧演示屏幕的大小

更新: Noitidart 建议使用 CSS 变量执行此操作的另一种方法 - 这更干净,并且不需要!important

module.exports = {
  theme: {
    extend: {
      colors: {
        shading: 'var(--shading)'
      }
    }
  },
}
Run Code Online (Sandbox Code Playgroud)
<div style="--shading: RANDOM_GENERATED_COLOR;" class="bg-shading sm:bg-transparent">
</div>
Run Code Online (Sandbox Code Playgroud)

演示版