微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Angular:覆盖其他组件的 CSS

如何解决Angular:覆盖其他组件的 CSS

我对 Angular 和 HTML 还很陌生。

我有两个不同的组件,比如 componentAcomponentB,它们都有各自的 .html、.css 和 .ts 文件

componentA.css中,我定义了一些样式,例如:

.compA-style {
    font-size: 20px;
}

现在在 componentB.hmtl 中,我正在使用 componentA 的指令:

<compA></compA>

现在如何更改 componentA 的 css 文件componentB 的样式,而不更改 componentA 中的样式?

注意:我不能改变componentA的样式,因为我想在其他组件中使用未修改的样式,我只想改变componentB

注意:我已经在 !important 中尝试过 componentB.css,即我尝试过这个:

.compA-style {
     font-size: 30px !important;
}

然后在 componentB.html 中:

<compA class=".compA-style"></compA>

但这没有用。

解决方法

现在如何改变componentB的css文件中componentA的样式,而不改变componentA内部的样式?

没有直接编辑component-A的方式添加样式。

componentB.css

:host ::ng-deep compA-style {
  font-size: 30px !important;
}

componentA.html

<compA class="compA-style"></compA>

注意:此功能已弃用。

结帐文档 ng-deep。 https://angular.io/guide/component-styles#deprecated-deep--and-ng-deep

,

Angular 在组件级别封装 CSS。

这意味着即使您在多个组件中有多个同名的 CSS 类,每个组件都将使用自己的类,而不管 DOM 结构如何。

有时您可能想要修改子组件样式。

您可以通过多种方式执行此操作。让我们假设 compB 包含 compA

::ng-深

    :host {
        // ... Other styles

        ::ng-deep compA {
            // ... Custom compA styles
        }
    }

说明::ng-deep 选择器在给定其边界的情况下提供 CSS 的跨组件可见性(包装器选择器)。您在 ::ng-deep compA 中写的任何内容都将与 compA 中的所有内容共享。

警告:如果您在组件样式表(没有包装器)的基础级别使用 ::ng-deep,它包含的样式将在整个应用程序中上下传播(不是仅在当前组件内)并且它们在组件加载时加载。这就是为什么它通常被包裹在一个 :host 选择器中。

全局样式表

您可以在应用程序基础级别 styles.css 文件中编写自定义样式或创建新的 css 文件以在应用程序加载时包含(在 Angular 环境之外,例如在 <link> 中使用 index.html 标记) .

当您有一堆样式要覆盖在整个应用程序中相同并且不想过多地弄乱特定组件样式表时,它们非常有用。 可能并不总是好的做法。

styleUrls 装饰器的 @Component 数组中添加新的组件样式表。

这可能不一定适用于您的情况,但值得一提。

    @Component({
        selector: 'app-main',templateUrl: './main.component.html',styleUrls: ['./main.component.css','../styles/background.css','../styles/input.css','../styles/container.css' /* ... other stylesheets here */]
    })

这是一种很好的方法,有助于将通用样式保存在一个地方,同时又不会使它们成为全局样式。您可以为特定组件添加您需要的任何样式,并根据需要拆分它们。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?