reactjs 如何使用Tailwind设置材质UI对话框的样式?

8fsztsew  于 2022-11-22  发布在  React
关注(0)|答案(5)|浏览(166)

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 。

kyks70gy

kyks70gy1#

@HosseinFallah回顾你的帖子,我认为这是行不通的,因为tailwind和material ui处理黑暗模式的方式不同。然而,你可以不使用sx而将目标指向Material UI css。你可以在你的css中使用Dialog API类,并在全局css中对它们应用tailwind颜色,如下所示:

.MuiDialog-paperScrollBody {
background-color: theme(colors.dark) !important;
}

其中dark是您在tailwind.config.js中设置的自定义深色

dw1jzc5e

dw1jzc5e2#

为了补充这个答案,你也可以通过用梅的StyledEngineProvider Package 你的整个应用来设置它。这样,在注入样式时顺风将被优先考虑。
在您的index.tsx

import { StyledEngineProvider } from '@mui/material';

const container: any = document.getElementById('root');
const root = createRoot(container);

root.render(
    <Provider store={store}>
        <React.StrictMode>
            <StyledEngineProvider injectFirst>
                <App />
            </StyledEngineProvider>
        </React.StrictMode>
    </Provider>
);

则无需指定!important即可执行此操作

<Dialog
    PaperProps={{
        className="dark:bg-zinc-700"
    }}
2g32fytz

2g32fytz3#

您是否偶然在Tailwind配置(tailwind.config.js)中设置了“important”属性?
如果将其设置为类似“#root”的值,则它将仅匹配#root元素内的元素,当MUI使用React Portals时,将绕过该元素。
您可以将其更改为类似“#tw”的内容,然后将body的ID设置为“tw”,这样它将始终匹配,因为Portals始终是body元素的子元素。

mdfafbf1

mdfafbf14#

如果您与tailwindcss完全互操作,请参见:https://mui.com/material-ui/guides/interoperability/#tailwind-css我认为这个错误发生在tailwindcss.config.js中。通过添加另一个id来 Package 对话框容器并将其分配给“important”属性将解决这个问题

9avjhtql

9avjhtql5#

您可以使用!important选择器来增加TailwindCSS的特定性。
您可以在这里找到更多信息https://tailwindcss.com/docs/functions-and-directives

相关问题