Material UI Dialog 是 一 个 门户 组件 , 我 理解 它 的 方式 是 , 它 在 React 的 root
元素 之外 呈现 其 标记 。
它 在 </body>
标记 之前 呈现 自身 。
现在 我 因为 这个 遇到 了 一 个 问题 。
当 用户 选择 dark 模式 时 , 我 在 顶层 元素 上 设置 了 一 个 dark 类 , 一 个 在 根 元素 下面 。
在 所有 组件 上 , 我 都 可以 使用 dark variant 来 应用 样式 , 如 dark:bg-zinc-700
。
但是 当 我 将 它 应用 于 <Dialog />
组件 时 , 它 不会 影响 它 的 样式 , 尽管 我 可以 看到 该类 存在 于 输出 中 。
<Dialog
PaperProps={{
className="dark:bg-zinc-700"
}}
中 的 每 一 个
我 应该 如何 解决 这个 问题 呢 ? 我 知道 我 可以 使用 sx
来 应用 样式 。 但 这 意味 着 我 需要 失去 一致 性 , 而且 我 也 不 知道 如何 将 Tailwind 转换 为 sx
。 因此 我 宁愿 继续 使用 Tailwind 。
5条答案
按热度按时间kyks70gy1#
@HosseinFallah回顾你的帖子,我认为这是行不通的,因为tailwind和material ui处理黑暗模式的方式不同。然而,你可以不使用sx而将目标指向Material UI css。你可以在你的css中使用Dialog API类,并在全局css中对它们应用tailwind颜色,如下所示:
其中
dark
是您在tailwind.config.js中设置的自定义深色dw1jzc5e2#
为了补充这个答案,你也可以通过用梅的StyledEngineProvider Package 你的整个应用来设置它。这样,在注入样式时顺风将被优先考虑。
在您的
index.tsx
中则无需指定
!important
即可执行此操作2g32fytz3#
您是否偶然在Tailwind配置(tailwind.config.js)中设置了“important”属性?
如果将其设置为类似“#root”的值,则它将仅匹配#root元素内的元素,当MUI使用React Portals时,将绕过该元素。
您可以将其更改为类似“#tw”的内容,然后将body的ID设置为“tw”,这样它将始终匹配,因为Portals始终是body元素的子元素。
mdfafbf14#
如果您与tailwindcss完全互操作,请参见:https://mui.com/material-ui/guides/interoperability/#tailwind-css我认为这个错误发生在tailwindcss.config.js中。通过添加另一个id来 Package 对话框容器并将其分配给“important”属性将解决这个问题
9avjhtql5#
您可以使用
!important
选择器来增加TailwindCSS的特定性。您可以在这里找到更多信息https://tailwindcss.com/docs/functions-and-directives