重置样式继承在shadow-dom中不起作用
reset style inheritance not working in shadow dom
我使用shadow-dom来避免我的元素的样式受到宿主文档的意外影响,但它仍然继承了父元素的一些属性,如"color"、"font-size"、"line-height"等。
在谷歌上搜索后,我发现有一个属性可以用来实现这一点,那就是"resetStyleHeritage"属性。我使用这样的属性:
var root = this.createShadowRoot();
root.resetStyleInheritance = true;
或者在元素中添加"重置样式继承"属性,如:
<div reset-style-inheritance=true></div>
然而,这两种情况都不起作用。
我还在这里发现了一个错误报告:WebKit Bugzilla
我的小提琴:http://jsfiddle.net/sangelee/90za0euy/1/
为什么resetStyleHeritage不起作用?或者有其他解决方案可以防止shadow-dom中的样式继承吗?感谢您的帮助!
ps。我使用的是chrome 39,而忽略了其他浏览器。
首先,reset-style-inheritance
属性现在已经过时,不应该使用。默认情况下,shadow DOM现在不再受浅色CSS的影响。
你的代码中包含了大量我已经消除的小故障(比如你在注册font-ruler
之前创建了它,而你正在处理attachedCallback
,而要处理的正确事件是createdCallback
。)实时工作版本位于此处:http://jsfiddle.net/284au4nw/
几条评论:
var proto = Object.create(HTMLElement.prototype, {
createdCallback: {
value: function() {
var t = document.querySelector('#s-font-ruler-template');
this.createShadowRoot().appendChild(t.content);
}
}
});
document.registerElement('font-ruler', {prototype: proto});
--正在将模板内容附加到影子根目录中。您不需要在现有文档中导入节点(这似乎欺骗了Chrome,并迫使它应用浅色样式…嗯…嗯…有时。)
<font-ruler></font-ruler>
--在HTML中与完全相同
var font_ruler = document.createElement('font-ruler');
document.body.appendChild(font_ruler);
所以我尽量让一切都清楚。希望能有所帮助。
使用CSS all
属性,它是resetStyleInheritance
的替代品
- DOM事件链接不起作用
- 重置样式继承在shadow-dom中不起作用
- 当元素在事件绑定后附加到DOM时,触摸事件不起作用
- MooTools Slider没有'创建后添加到DOM时不起作用
- 为什么这个Javascript DOM方法没有'不起作用
- 焦点到 DOM 元素不起作用
- DOM jquery 行为不起作用
- 骨干.js视图,dom 访问不起作用
- 使用 D3js 时,带有 DOM 的 AngularJS 数据绑定不起作用
- Angular 2 - ngModel 绑定在动态添加的 DOM 元素中不起作用
- DOM 行走功能不起作用
- 使用 jQuery 查询 DOM,代码不起作用
- 在运行时渲染 DOM 在 Dojox 中不起作用
- 单击新 DOM 元素不起作用的事件
- JQuery 在创建 DOM 元素后执行某些操作 - DOMNodeInsert 不起作用
- DOM 附加文本节点的子节点不起作用
- 第一个孩子最后一个孩子 Dom 遍历不起作用
- Flash 对象在动态添加到 IE 中的 DOM 时不起作用
- jQuery 访问 iframe DOM 不起作用
- 为什么画布绘制图像在使用 dom 图像元素时不起作用