首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >FOUC:没有任何样式的初始页面加载

FOUC:没有任何样式的初始页面加载
EN

Stack Overflow用户
提问于 2020-07-10 13:49:42
回答 1查看 3.1K关注 0票数 4

我试图通过为Nextjs应用程序在.scss中导入_app.js文件来应用全局样式。

但问题是,样式并没有在页面加载上得到预先应用。因此,所有初始页面呈现都会发生FOUC。

示例1

以下是上述问题的基本版本:

项目结构:

代码语言:javascript
复制
pages/
    _app.js
    index.js
app.scss
package.json

index.js文件:

代码语言:javascript
复制
export default function Home() {
  return (
    <div className="hello">
      <p>Hello World</p>
    </div>
  );
}

_app.js文件:

代码语言:javascript
复制
import "../app.scss";

export default function App({ Component, pageProps }) {
  return <Component {...pageProps} />;
}

app.scss文件:

代码语言:javascript
复制
 $color: red;

 .hello {
     background-color: lavender;
     padding: 100px;
     text-align: center;
     transition: 100ms ease-in background;

     &:hover {
         color: $color;
     }
 }

package.json文件:

代码语言:javascript
复制
{
  "name": "basic-css",
  "version": "1.0.0",
  "scripts": {
    "dev": "next",
    "build": "next build",
    "start": "next start"
  },
  "dependencies": {
    "next": "^9.4.5-canary.31", // using canary build as per https://github.com/vercel/next.js/issues/11195
    "node-sass": "4.14.1",
    "react": "^16.13.1",
    "react-dom": "^16.13.1"
  },
  "license": "ISC"
}

例2 (使用next-sass的回购)

按照@Ramakay的回答的第3点,它创建了一个静态散列css文件并将其附加到<head/>标记中,但问题仍然存在。

我期待的是:

我现在得到的是:

我不使用任何外部库,如“样式-组件”等,我也没有寻找它。

我能做些什么来解决眼前的问题?

EN

回答 1

Stack Overflow用户

发布于 2020-07-10 14:57:11

因为这是JS方法中的CSS,所以文件不会呈现在服务器端,以便文档预解析器应用,因此必须等待Javascript下载。

  1. 您可以使用Nextjs提供的https://github.com/vercel/styled-jsx,它将输出样式服务器以及客户端。
  2. 您可以分别查看导出SCSS并链接到文档头。
  3. Next-sass和Node-sass输出文件- https://github.com/vercel/next-plugins/tree/master/packages/next-sass + https://github.com/sass/node-sass#outfile
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62835739

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档