gpt4 book ai didi

css - 影子 DOM : how to apply CSS style only if the host element is ?

转载 作者:行者123 更新时间:2023-11-28 11:39:00 25 4
gpt4 key购买 nike

如果我的 Web 组件是 <body> 的直接子组件,我必须对它应用特殊的 CSS 样式。元素。到目前为止,这是我尝试过的:

/* applies even if the component isn't a direct child */
:host(body) {
color: red;
}

/* never applies */
:host(body:host) {
color: red;
}

/* never applies */
:host(body:host > my-component) {
color: red;
}

/* never applies */
:host(body > my-component:host) {
color: red;
}

浏览器:Chrome 稳定版 (32.0.1700.107)、Chrome Canary (34.0.1843.3)。

最佳答案

如果没有 CSS 中的父选择器,我认为目前这是不可能的。

你可以在 Chrome 32 中做这样的事情:

/* @polyfill body > :host h1 */

这在 Chrome 32 中有效,因为 @polyfill 指令添加了一个文档级样式:body > polymer-foo h1。但是,这在 Chrome 34 中不起作用,因为文档级样式会被 Shadow DOM 忽略。

另外,:host 现在只会匹配宿主元素本身。如果你想尝试匹配祖先,你可以使用 :ancestor()。不幸的是 :ancestor(body) > :host h1 将无法工作。 :ancestor(body) 被翻译成 body 后代的任何节点,因此上面的代码片段将被重写为 polymer-foo > polymer-foo h1

令人失望的是,这在今天是不可能的,但 Shadow DOM 样式仍处于起步阶段,希望我们将来能够更具表现力。

为了将来引用,可以在此处找到关于 Shadow DOM 样式的正在进行的工作规范:http://dev.w3.org/csswg/shadow-styling

关于css - 影子 DOM : how to apply CSS style only if the host element is <body>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21834025/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com