将 CSS plus 选择器与自定义组件一起使用

Posted

技术标签:

【中文标题】将 CSS plus 选择器与自定义组件一起使用【英文标题】:Using CSS plus selector with custom components 【发布时间】:2020-04-02 18:54:22 【问题描述】:

在 CSS 中,您可以使用加号选择器来选择跟在另一个元素之后的元素。例如,选择h1s 之后的所有divs:

h1 + div 
    margin-top: 1rem;

你如何在 shadow DOM(或者 Angular 的虚拟 shadow DOM)内部做同样的事情?也就是说,如何根据父组件中的内容来有条件地设置自定义组件的样式?

我尝试像这样使用:host-context(),但它不起作用:

:host-context(h1 +) 
    margin-top: 1rem;

我知道我可以使用常规 CSS 在阴影之外定义这种样式,但我想保持封装并在阴影本身内部定义它。

【问题讨论】:

【参考方案1】:

您可以尝试使用 ::ng-deep 来选择阴影 DOM 元素。这将禁用此规则的封装,但允许您的组件的视图封装保持启用状态,除非您更改它。

::ng-deep h1 + div  
  /* styles */

【讨论】:

以上是关于将 CSS plus 选择器与自定义组件一起使用的主要内容,如果未能解决你的问题,请参考以下文章

将 Tailwind 深色变体与自定义类一起使用

验证未与自定义输入组件一起传播 - Angular 4

架构师成长记_第八周_11_ES- ik中文分词器与自定义中文词库

将 NSViewController 与自定义视图一起使用

将 IdentityServer4 与自定义配置 DBContext 一起使用

为啥将 std::sort 与自定义比较器一起使用无法编译?