javascript - 全局样式不适用于 Chrome 36 中 Polymer 元素中的 Shadow DOM 子元素

标签 javascript css polymer

在 Chrome 34 中,标题中定义的样式带有 <style>标签将影响 Polymer 元素的 Shadow DOM 中的元素。在 Chrome 36 中,情况并非如此。

我可以将我们所有的样式直接移动到元素的模板中,但有时我们的 css 选择器会弥合 Shadow DOM 的差距。例如:

.something-outside .something-inside { ... }
.something-outside.foo .something-inside { ... }

后一种情况比较困难,因为它需要有关两个范围的信息。

处理这个问题的正确方法是什么? Polymer 是否有一项功能可以让全局样式通过?

好笑的是,如果没有 10 个 stackoverflow 信誉点(whee),我不能添加任何图像或超过 2 个链接,所以我能提供的最好的是这个 jsbin:

http://jsbin.com/vobowigi/1/edit

最佳答案

您看到的是 polyfill 和原生 Shadow DOM 之间的区别。之前应用的选择器不再以 SD 中的元素为目标。

要为 SD 外部的元素设置样式,可以使用 /deep/ 组合器和 ::shadow 伪元素。例如,要将所有 h1 设置为红色,无论它们出现在什么树中:

body /deep / h1 {
  color: red;
}

这两篇文章包含了 SD 样式的所有细节:

关于javascript - 全局样式不适用于 Chrome 36 中 Polymer 元素中的 Shadow DOM 子元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23231149/

相关文章:

javascript - 理解 indexOf 和 lastIndexOf

javascript - 选中 radio 时在其他 div 中显示文本字段

html - 如何锁定所有页面的滚动?

javascript - polymer 2.0建筑构件

javascript - dom-if 没有在 dom-repeat 中更新

javascript - 气泡图 : how to avoid bubbles being cut off? 谷歌可视化

javascript - 如何使用 mapbox-gl-Draw 创建 8 个点的矩形?

javascript - 比较一组对象中的对象

html - 将显示表 : working on Firefox, 的 4 个单元格集中在一起在 Chrome 上不起作用

javascript - 更新模板 dom-repeat 项目中的数组未反射(reflect)到 dom