.scss 文件中的样式未应用

发布于 2025-01-10 00:09:53 字数 1270 浏览 0 评论 0原文

我有一个 React 应用程序并使用 .scss 文件进行样式设置。

我的 index.js 看起来像这样:

import './App.scss';

import React from 'react';
import ReactDOM from 'react-dom';
import App from './App';

ReactDOM.render(
    <React.StrictMode>
        <App/>
    </React.StrictMode>,
    document.getElementById('root')
);

我的 App.scss 看起来像这样:

*,
*::before,
*::after {
    box-sizing: border-box;
}

html {
    height: 100%;
}

body,
:global(#root) {
    min-height: 100%;
    color: var(--primary-font-color);
    font-family: "Open Sans", sans-serif;
    font-weight: 400;
    font-size: 18px;
    line-height: 22px;
}

h1 {
    color: var(--primary-font-color);
    font-size: 32px;
    font-weight: 600;
    line-height: 36px;
}

:root {

    /*Colors */
    --primary-color: #f6f5f2;
}

现在我的问题是除了 *,*::before,*::after:root 不适用。 在浏览器控制台中,我可以看到使用了 App.scss 并应用了 *,*::before,*::after 样式。此外,来自 :root 的所有变量都可以在那里找到。

我想使用 App.scss 文件作为全局样式,但我发现应用它们的唯一方法是使用 @import("App.scss")component.module.scss。将 App.scss 导入到每个模块会导致与导入一样多的重复项。这是处理 scss 样式的预期方法吗?

I have a react app and use .scss files for styling.

My index.js looks like this:

import './App.scss';

import React from 'react';
import ReactDOM from 'react-dom';
import App from './App';

ReactDOM.render(
    <React.StrictMode>
        <App/>
    </React.StrictMode>,
    document.getElementById('root')
);

My App.scss looks like this:

*,
*::before,
*::after {
    box-sizing: border-box;
}

html {
    height: 100%;
}

body,
:global(#root) {
    min-height: 100%;
    color: var(--primary-font-color);
    font-family: "Open Sans", sans-serif;
    font-weight: 400;
    font-size: 18px;
    line-height: 22px;
}

h1 {
    color: var(--primary-font-color);
    font-size: 32px;
    font-weight: 600;
    line-height: 36px;
}

:root {

    /*Colors */
    --primary-color: #f6f5f2;
}

Now my problem is that all the styles apart from *,*::before,*::after and :root are not applied.
In the browser console I can see that the App.scss is used and the *,*::before,*::after styles are applied. Also all vars from :root can be found there.

I want to use the App.scss file for global styles, but the only way I found to apply them is with an @import("App.scss") in a component.module.scss. Importing the App.scss to every module results in as many duplicates as imports. Is this the intended way to handle scss styles?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

风轻花落早 2025-01-17 00:09:53

今天不建议将 Sass 用于全局样式,因为正如他们所写的 ->它可以生成比您想要的更多的文件 ->效果是你的性能更差。

我们可以在他们的主页上阅读这些信息,

我建议你使用一次简单的 CSS 文件作为变量、全局样式,然后你可以轻松地重用它们,如果你想作为开发人员使用 Sass,那么就继续其余造型

最好!

Sass is not recommended to use today for global styles, because as they wrote -> it can generate more files than you want -> effect is that you have worse performance

This information we can read on their main page

I recommend you use once simple CSS file for variables, global styles then easily you can reuse them and if you wanna use Sass as a developer then go-ahead for the rest of styling

Best!

感性 2025-01-17 00:09:53

例如,您可以执行以下操作

App.css:

body {
  margin: 0;
  font-family: Lato, Helvetica, Arial, sans-serif;
  transition: all 0.3s linear;
}

:root {
  --facebook-color: #507dc0;
}


然后:

Login.scss

body {
  .login {
    background-color: var(--facebook-color);
  }
}

当然这只是示例。

For example what you can do

App.css:

body {
  margin: 0;
  font-family: Lato, Helvetica, Arial, sans-serif;
  transition: all 0.3s linear;
}

:root {
  --facebook-color: #507dc0;
}


And then:

Login.scss

body {
  .login {
    background-color: var(--facebook-color);
  }
}

Of course this is only example.

迷荒 2025-01-17 00:09:53

我找到了解决方案:

看起来是 :global(#root) 导致了问题。删除它会应用其他样式,无论它们是在 .scss 还是 .css 文件中。

I found the a solution:

Looks like it was the :global(#root) which caused the problem. Removing it makes the other styles applied no matter if they are in a .scss or .css file.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文