css - 如何通过 shadow dom 使用 css 为元素着色?
问题描述
我有一个名为accordion-next的组件。这个组件可以看作是一个模板。我有一个名为accordion-toto的组件。第二个组件正在使用手风琴-next。它是模板的一种填充物。
如果手风琴-next是一个插值字符串,它将是:
`<a href>${content}</a>`
和手风琴多托将是:
content = "<div><div><span class="caret">▼</span></div></div>"
所以手风琴多托将打印
<a href><div><div><span class="caret">▼</span></div></div></a>
行。现在,我想在手风琴-toto 中添加一些 scss 。这个scss是
a:hover .caret,
{
color: red;
}
当然它不起作用。我尝试使用:host
, :host-context
, :host(:hover)
, :host-context(:hover)
then/deep/
和所有这些的混合。我错过了什么案例?
您可以查看以下 Stackblitz 的完整示例:
涉及:如何编辑 ng-template 以使用我的 HTML?
编辑:我曾经有轮换问题。谢谢@Shadowlauch 指出它。我的问题仍然存在于“基本”属性中。
解决方案
你得到了不正确的组合器。尝试使用下面的代码。您还需要将 display 属性设置为 inline-block 以便旋转起作用(它不适用于内联元素,正如 Shadowlauch 的评论所指出的那样)
:host ::ng-deep [aria-expanded="true"] .caret,
{
display: inline-block;
transform: rotate(0deg);
}
:host ::ng-deep [aria-expanded="false"] .caret
{
display: inline-block;
transform: rotate(90deg);
}
推荐阅读
- git - Git-receive-pack 致命
- php - 这个错误是怎么回事?404 php不起作用,我尝试了一切
- python - 将 BigQuery SQL 与内置 Python 函数结合使用
- firebase - base64 图像未正确存储在 firebase 的云存储(又名 firebase 存储)中
- java - Mulesoft SFTP 连接器
+ JSch 无法正常工作 - python - 如果条目数小于一定数量,则每隔 15 秒删除所有条目
- java - 使用注释的 LocalDate[] 的杰克逊数据绑定
- openlayers-5 - 在 Openalyers 5 中获取所有图层的范围
- python - 使用发布请求从下一页获取结果时遇到问题
- sql-server - 子查询返回超过 1 个值。当子查询跟随 !=、<、<=、>、>= 时,这是不允许的