我正在将tailwindcss与css模块一起使用,并且我注意到页面第一次加载时,我的所有样式都没有加载。 为了弄清楚发生了什么,我运行了tailwindcss示例,并从css模块中添加了一种样式,即使在为prod构建时,它也在那里发生。
从https://github.com/zeit/next.js/tree/canary/examples/with-tailwindcss运行示例
添加具有某些样式的index.module.css
文件
在index.js
页面的css模块中添加样式
在不使用css模块的情况下,所有样式在第一次加载时都很好,不会闪烁。 使用CSS模块预期会有相同的行为
我怀疑这可能与css模块的自动代码拆分有关
我在组件中使用了普通的CSS模块,并在几毫秒后应用了样式。
我在组件中使用了普通的CSS模块,并在几毫秒后应用了样式。
根据https://stackoverflow.com/a/42969608/943337,我刚刚添加了一个空脚本标签,并且我的侧边栏问题在第一次加载时就弹出了,现在已经解决了。
https://github.com/vercel/next-plugins/issues/455#issuecomment -489452379
import Document, { Html, Head, Main, NextScript } from 'next/document';
import { GA_TRACKING_ID } from '../utils/anayltics';
class MyDocument extends Document {
static async getInitialProps(ctx) {
const initialProps = await Document.getInitialProps(ctx);
return { ...initialProps };
}
render() {
return (
<Html lang="de">
<Head>
</Head>
<body>
<Main />
<NextScript />
{/* Empty script tag as chrome bug fix, see https://stackoverflow.com/a/42969608/943337 */}
<script> </script>
</body>
</Html>
);
}
}
export default MyDocument;
我在组件中使用了普通的CSS模块,并在几毫秒后应用了样式。
根据https://stackoverflow.com/a/42969608/943337,我刚刚添加了一个空脚本标签,并且我的侧边栏问题在第一次加载时就弹出了,现在已经解决了。
import Document, { Html, Head, Main, NextScript } from 'next/document'; import { GA_TRACKING_ID } from '../utils/anayltics'; class MyDocument extends Document { static async getInitialProps(ctx) { const initialProps = await Document.getInitialProps(ctx); return { ...initialProps }; } render() { return ( <Html lang="de"> <Head> </Head> <body> <Main /> <NextScript /> {/* Empty script tag as chrome bug fix, see https://stackoverflow.com/a/42969608/943337 */} <script> </script> </body> </Html> ); } } export default MyDocument;
谢谢@ Adrianjs42 ,Chrome
有解决此问题的解决方法
在HTML组件中创建一个自定义“ _document.js
”并添加类“ no-fouc
”
创建一个自定义“ _app.js
”,然后在“ componentDidMount
”中添加以下代码
const removeFouc = (foucElement) => {
foucElement.className = foucElement.className.replace('no-fouc', 'fouc')
}
removeFouc(document.documentElement)
Add在全局样式中添加以下样式:
.no-fouc {
visibility: hidden;
opacity: 0;
}
.fouc {
visibility: visible;
opacity: 1;
}
这应该在next@^9.4.5-canary.15
! 请升级并告诉我们。
@Timer ,我已经安装了next@^9.4.5-canary.18
。 现在CSS闪烁不会出现在开发模式下,但在生产版本上仍然保持不变。 生产版本仍然存在该错误。
请注意,我正在使用material-ui + css模块
这是我一直致力于解决此问题的应用程序版本: https :
@ Prottoy2938在这里也一样。 我对此问题发表了评论https://github.com/vercel/next.js/issues/13058#issuecomment -654165987
@Timer ,我已经安装了
next@^9.4.5-canary.18
。 现在CSS闪烁不会出现在开发模式下,但在生产版本上仍然保持不变。 生产版本仍然存在该错误。请注意,我正在使用material-ui + css模块
这是我一直致力于解决此问题的应用程序版本: cluster-11-lwj6nmcgy.vercel.app 。
似乎您的情况与css模块/顺风无关,而更多与忘记实施Material-ui的预渲染有关: https :
@casperle ,就我而言,问题是因为我在进行服务器端渲染。 我遵循了Material-ui的这份
使用v9.4.5-canary.28时,开发中不会闪烁,而生产中也不会闪烁。
最有用的评论
有解决此问题的解决方法
在HTML组件中创建一个自定义“
_document.js
”并添加类“no-fouc
”创建一个自定义“
_app.js
”,然后在“componentDidMount
”中添加以下代码Add在全局样式中添加以下样式: