css - 将 CSS plus 选择器与自定义组件一起使用
问题描述
在 CSS 中,您可以使用加号选择器来选择跟在另一个元素之后的元素。例如,选择 s 之后的所有div
s h1
:
h1 + div {
margin-top: 1rem;
}
你怎么能在影子 DOM(或者在 Angular 的情况下,虚拟影子 DOM)中做同样的事情?也就是说,您如何根据父组件中的内容有条件地设置自定义组件的样式?
我尝试:host-context()
像这样使用,但它不起作用:
:host-context(h1 +) {
margin-top: 1rem;
}
我知道我可以使用常规 CSS 在阴影之外定义这种样式,但我想保持封装并在阴影本身内部定义它。
解决方案
您可以尝试使用 ::ng-deep 来选择 shadow DOM 元素。这将仅禁用此规则的封装,但允许您的组件的视图封装保持启用状态,除非您更改它。
::ng-deep h1 + div {
/* styles */
}
推荐阅读
- c# - 如果使用基于策略的身份验证,则禁止首次调用 .net core API
- java - 如何使用 MouseClicked 事件来阻止 mouseExited 事件?
- javascript - 使用追加样式设置 html 对象
- python - 你能在不传递参数的情况下从 tk.OptionMenu 的命令参数调用函数吗
- kernel - 是否可以使用 BPF/eBPF 读取用户空间文件(从内核空间)?
- excel - 跨选择行和多列求和
- laravel - Laravel Valet/Nginx: 502 Bad Gateway: 93883#0: *613 上游从上游读取响应头时发送的头太大,客户端:127.0.0.1
- java - 线程“主”java.lang.ArithmeticException 中的异常:需要舍入
- java - 如何确定 Java/Scala 中 Sqlite 的内存消耗?
- .htaccess - .htaccess - 将旧网站重定向到主域,但也将一些内容重定向到主域的子域