如何根据 Angular 中的全局 CSS 类名调整组件的 CSS?

2024-05-07

我们正在使用一个类html- 判断用户是否在的元素dark or light应用程序的模式。

<html class="dark-mode"></html>

这个类是使用添加的Renderer2在检测用户所选设置的服务中。到目前为止效果很好。

现在,我们必须调整所有组件,以便在黑暗模式下也能看起来很好。但问题是 Angular 的ViewEncapsulation.


我们认为会派上用场的是简单地更新组件的 SCSS:

.headline {
    color: black;

    .dark-mode & {
      color: white;
    }
}

或者在纯 CSS 中:

.headline {
  color: black;
} 

.dark-mode .headline {
  color: white;
}

现在这不起作用,因为类.dark-mode正如预期的那样,似乎已被封装。


我们该如何解决这个问题呢?


:host-context提供对上面的 css 类的访问:host。通过使用:host-context您可以检查主机的任何父级是否具有特定的 css 类并应用样式:

:host-context(.dark-mode) h2 {
  color: white;
}

文档:https://angular.io/guide/component-styles#host-context https://angular.io/guide/component-styles#host-context

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何根据 Angular 中的全局 CSS 类名调整组件的 CSS? 的相关文章

  • Angular2:嵌套 *ngFor 导致“表达式在检查后已更改”

    我有一个 angular2 组件 my tree 我在父 my app 组件中使用它 我的应用程序 如下 Component selector my app providers template
  • 如何更改 mat-slide-toggle 的颜色属性/覆盖组件的 CSS?

    有什么办法可以改变颜色属性mat slide toggleAngular Material 组件库中的组件 如何覆盖它的样式 或者有人可以建议我任何其他用于 Angular 5 应用程序的滑动开关 例如材料滑动开关 您可以更改原色mat s
  • 如何创建具有动态数量的网格列的 TailwindCSS 网格?

    我正在使用 Vue3 和 TailwindCSS 并希望创建一个具有动态的网格grid cols n 班级 我知道 TailwindCSS 默认情况下最多支持 12 列 但我无法自定义主题 因为列的数量完全是动态的 给出以下纯 HTML J
  • 在 MatDialog Content Angular 7 中添加新行

    我正在使用 MatDialog 并尝试在内容定义中添加新行 两个都 n and 没有这样做 有没有另一种方法无需手动进入 html 并更改它 因为它是可重用的组件 var status MatDialogRef
  • 使用 div 标签定位元素

    div class HeaderLink div class HeadPanelElement a href Blog a div div
  • 如何在一个元素上实现多个 CSS 过渡?

    这是一个非常简单的问题 但我找不到关于 CSS 转换属性的很好的文档 这是 CSS 片段 nav a text transform uppercase text decoration none color d3d3d3 line heigh
  • 图像右边缘淡入/模糊 CSS

    我有一个简单的 CSS 相关问题 如何获得如图所示的右端模糊 淡入淡出 两种方法 让我们这样做 1 使用盒子阴影 浏览器兼容性 IE 9 为盒子阴影 http caniuse com feat css boxshadow 放置适当box s
  • 我们可以在displaytag中使用rowspan和colspan吗?

    我必须创建一个表 其结构是这样的 col1 col2 col3 col4 col3 1 col3 2 是否可以使用显示标签创建这样的数据网格 查看装饰器示例 http displaytag sourceforge net 1 2 tut d
  • 如何在Shiny中默认选择verbatimTextOutput中的文本?

    这是与我之前的问题相关的问题 是否可以有固定宽度的 verbatimTextOutput 并让文本在 Shiny 中换行 https stackoverflow com q 58516071 7669809 我有以下闪亮的应用程序 http
  • SVG 内部跨度与文本不在同一行

    我在一个跨度内有一个 SVG 文件 同时包含文本 文本和 SVG 的高度相同 但是 SVG 与文本不在同一行 相关jsfiddle https jsfiddle net tcrnjd53 https jsfiddle net tcrnjd5
  • 如何在 Bootstrap v4 中实现导航栏下拉悬停?

    我对新的 bootstrap 版本有点困惑 因为他们将下拉菜单更改为 div
  • Bootstrap 使用 SASS 和 fontawesome 图标分隔符修改面包屑

    所以我正在尝试更改默认值breadcrumb与 SASS 的风格 我已经按照官方 Bootstrap 4 beta 3 文档中提到的方式设置了所有内容 我更改了以下内容custom scss breadcrumb divider f105
  • 与 font-weight:bold 和 与 font-style:italic

    使用之间有什么真正的区别吗 strong and em 而不是 CSS 属性 font weight bold font style italic 另外 这两种选择都存在的真正原因是什么 我可能是错的 但我没有 strong and em
  • jquery菜单栏浮动顶部

    我试图使菜单栏不断浮动在浏览器的顶部 因此当他们向下滚动页面时 菜单栏仍位于顶部 我该怎么做呢 Regards CSS 标签position fixed 即使滚动 也会使其保持在屏幕上的同一位置 使用它 然后将其定位为top right b
  • 方法与管道

    在 Angular 应用程序中的模板插值中使用管道和方法有区别吗 例如 h1 name toLowerCase h1 vs h1 name lowercase h1 就性能而言 是有真正的收获还是只是个人喜好 我知道调用模板中的方法通常会降
  • Bootstrap 居中 div 内的文本左对齐

    我有一段 4 行诗 位于居中的 div 中 因为它是诗歌 所以我需要将 4 行左对齐 但不要对齐到 div 的左侧 这是它的居中方式 Lorem ipsum dolor sit amet onsectetur adipisicin Dolo
  • 单击按钮滚动到特定 div

    我有一个具有固定菜单和内容框 div 的页面 单击菜单时 内容框滚动到特定 div 到目前为止 一切都很好 这是这里的示例 https jsfiddle net ezrinn 8cdjsmb9 11 https jsfiddle net e
  • Angular - 通用服务的提供者

    我已经为我的 HTTP API 创建了一个通用服务 并且我想为不同的端点提供此服务 而无需为每个端点创建一个类 我的服务看起来像这样 export class ApiService
  • 如何检索 JQuery 数据表的排序状态

    我对 JQuery Datatables 还很陌生 我正在尝试检索有关数据表的两个信息 当前正在对哪个列索引进行排序 也称为选择 排序顺序 升序或降序 不知道我应该如何解决这个问题 使用 jquery 查找列索引 或者 Datatables
  • 打开我网站上的链接不起作用

    在我的网站上 我有一个我正在尝试获取工作的链接 我有一个遵循正常格式的链接 即 href 以 www youtube com 作为目标链接 并在末尾添加 target blank 当我单击该链接时 托管我的网站的网站会显示一条错误消息 当我

随机推荐

Powered by Hwhale