【问题标题】:Angular 2 - Global CSS fileAngular 2 - 全局 CSS 文件
【发布时间】:2017-03-09 11:31:09
【问题描述】:

是否可以将全局 CSS 文件添加到 Angular 2? 目前,我有许多不同的组件具有相同的按钮样式 - 但每个组件都有自己的 CSS 文件和样式。这对于更改来说是令人沮丧的。

我在 Stack Overflow 上的某处阅读以补充:

import { ViewEncapsulation } from '@angular/core'; //add this

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css'],
  encapsulation: ViewEncapsulation.None            //add this
})

所以我在根组件中添加了 ViewEncapsulation 行,然后将 CSS 样式添加到根应用 CSS (app.component.css) 并从单个组件 CSS 文件中删除了 CSS 样式,但它不起作用。

肯定有办法添加全局 CSS 文件吗?我是否需要向各个组件添加一些内容以使它们能够访问全局 CSS 文件?

【问题讨论】:

  • 这是正确的方法。它应该工作。当你说它不起作用时,究竟发生了什么?所有子组件按钮都不同吗?如果您在应用组件模板中添加按钮,那么按钮的外观是什么。它有正确的方面吗?
  • 全局样式根本不会应用。
  • 它工作正常))
  • 是的,使用 ViewEncapsulation.None 实际上有效!

标签: css angular angular-cli


【解决方案1】:

您可以简单地在主 html 文件中导入 css。

【讨论】:

  • 我完全错过了 Angular 2 CLI 实际创建并包含一个“styles.css”文件作为 index.html 文件中的全局 CSS 脚本。我刚刚打开文件看到“/*你可以给这个文件添加全局样式,也可以导入其他样式文件*/”。谢谢 axl_80。
  • 欢迎您,我很高兴知道我可以帮助您。祝你的项目好运;)
  • 没有html文件怎么办。我正在创建一个 Angular 库。
  • @UniSoundWaterloo 我认为你不应该在库中使用全局 CSS。
  • 也可以像 @import 'bootstrap/dist/css/bootstrap.css' 一样添加到styles.css;
【解决方案2】:

只需将您的全局样式写入您的src/styles.css 文件即可。当您运行 ng build 时,该文件将添加到 styles.bundle.js

如果您想添加更多样式文件,可以在 .angular-cli.json(或 angular.json Angular 6+)文件中进行。在该文件中,您将看到一个名为 styles 的数组,默认情况下只有一个项目 styles.css(或 Angular 6 中的 src/styles.css)。您甚至可以包含.scss 文件。


使用 SCSS

如果您想使用 SCSS,只需将您的 src/styles.css 文件的扩展名更改为 .scss,然后通过编辑styles 数组中的条目。

让 Angular 默认使用 SCSS

在创建组件时,您希望 Angular 创建 .scss 样式文件,而不是 .css。方法如下:

角度 7

从 Angular 7 开始,当您使用 ng new appname 创建应用程序时,系统会提示您要使用哪种样式表格式,因此您只需选择 SCSS (source)。似乎这里不再需要手动配置 Angular 以使用 SCSS。

角度 6

在您的 angular.json 文件末尾添加此内容 (source):

"schematics": {
  "@schematics/angular:component": {
    "styleext": "scss"
  }
}

Angular 4 及更低版本

.angular-cli.json 文件的末尾找到它,并将 styleExt 的值更改为 scss

"defaults": {
  "styleExt": "css",
  "component": {}
}

【讨论】:

  • 这是对这个问题的一个重要补充——因为它与新版本的 Angular 更相关。我最近创建了一个新项目,新安装了 Angular CLI,并且(习惯性地)手动包含了 CSS 导入(根据此问题中选择的答案),这导致浏览器控制台出现错误。一旦我删除了 HTML 中的手动 CSS 导入语句,我注意到正在应用来自 styles.css 的 CSS 样式。不幸的是,在开始新项目之前我没有看到这个答案......
  • 在提出这个问题的时候,这不是正确的答案。我是否更新“正确答案”以适应 Angular 的更新? 技术上这个问题提到了 Angular 2...
  • 如果你没有在 Angular 4 中使用 angular-cli 怎么办?
  • 我能够将"../node_modules/@salesforce-ux/design-system/assets/styles/salesforce-lightning-design-system.min.css" 添加到我的.angular-cli.json 似乎工作正常。
  • 由于app组件是主要组件,您可以在其中添加多种样式。喜欢:styleUrls: ["styles1.css", "styles2.css"],
【解决方案3】:

你可以使用:

  1. 添加 main.css
  2. 在主文件夹中打开 styles.css
  3. 添加这一行 (@import 'main.css';)

【讨论】:

  • 你为什么要这样做而不是仅仅将你的样式添加到 style.css 中?
  • 我认为这很好,因为代码看起来更有条理,就像您想为文本字段单选按钮下拉菜单制作特定样式一样,您可以制作单个 css 文件并可以在此处导入,我认为通过在此处导入类可以在整个应用程序中访问驻留在这些文件中的文件。 :)
猜你喜欢
  • 2017-03-17
  • 2017-05-16
  • 1970-01-01
  • 2021-01-15
  • 2017-02-05
  • 2018-02-16
  • 2017-06-09
  • 2019-04-18
  • 1970-01-01
相关资源
最近更新 更多