自定义 HTML 元素是否继承父 CSS 样式
Do custom HTML elements inherit parent CSS styles?
在 HTML 中创建自定义元素时,子标记是否继承父标记的 CSS 样式?
这是我的测试用例,来自Chrome:
var h1bProto = document.registerElement ('h1-b',
{
prototype: Object.create (HTMLHeadingElement.prototype),
extends: "h1"
});
当我使用新的 h1bProto 附加一个孩子时,它会生成一个带有 is="h1-b" 的 H1 标签,示例如下:
var node = document.body.appendChild (new hibProto());
node.textContent = "Hello";
<h1 is="h1-b">Hello</h1>
你好
这给了我父母的CSS样式。 但是,如果我通过先创建元素,然后附加节点来添加节点,则代码如下所示:
var node = document.createElement ("h1-b");
node.textContent = "Hello";
document.body.appendChild (node);
<h1-b>Hello</h1-b>
你好
我是否遗漏了什么,或者孩子没有继承父级的 CSS 样式?如果他们不这样做,那么使用Shadow DOM的最佳解决方法是什么?
根据 W3 规范,您不会发疯!
尝试使用自定义的内置元素作为自治自定义 元素将不起作用;也就是说,单击 .key将简单地创建一个没有特殊功能的 HTML 环境 行为。
也就是说,在您的示例中,使用 <h1-b>
制作标签不会应用 <h1>
标签的样式或行为。相反,您必须创建一个 <h1>
标记,并将 is 属性设置为自定义元素的名称。我在规范中链接到您的部分实际上在解释如何创建标签方面做得很好。
总而言之,你只需要让你的元素像这样:
document.createElement("h1", { is: "h1-b" });
我想到的一个原因是大多数机器人不会解析你的JavaScript。因此,他们将面临一个挑战,要弄清楚你的dom中的元素到底是什么。想象一下,如果机器人没有意识到您的<h1-b>
元素真的是<h1>
元素,您的 SEO 会损失多少!
相关文章:
- 如果文本字段为空,则使用JavaScript应用CSS样式
- FF和Chromium中CSS样式按钮的外观差异
- CSS样式属性留空
- CKeditor预览插件.js,为Chrome和IE进行编辑.因为它拒绝CSS样式
- 基于路由的CSS样式-Angular2
- 为未标记的文本添加CSS样式
- 使用JQuery将现有CSS样式扩展%-%
- JavaScript-在keyDown上切换css样式
- React js应用程序's在托管应用程序中打开时将覆盖css样式
- 如何在javascript中更改段落中不同行的css样式
- 通过javascript设置IE特定的css样式
- PHP,MySQL,AJAX-调用AJAX结果后,Bootstrap CSS样式不会显示
- 使用javascript/jquery检查.css样式表的名称
- JavaScript和CSS样式不适用于我的“;谷歌网站”;页
- 未使用jQuery验证器选中Css样式复选框时
- javascript正则表达式,用于编辑元素内部的css样式属性
- css样式加载+id.例如加载1、加载300
- 无法在运行时将CSS样式添加到元素中
- d3js 通过其 CSS 样式选择所有元素
- 如何根据浏览器宽度动态调整 css 样式表