html - 添加 "invisible"或被 CSS 选择器规则跳过的 html 元素

标签 html css dom css-selectors

我想构建一个外部 GUI,它在带有关联 CSS 的通用 HTML 片段上运行。为了启用 GUI 的某些功能,我需要创建一些“元”HTML 元素来包含部分内容并将它们与数据相关联。

例子:

<div id="root">
    <foo:meta data-source="document:1111" data-xref="...">
        sometext
        <p class="quote">...</p>
    </foo:meta>
    <p class="other">...</p>
</div>

此 HTML 是从具有关联 CSS 的现有 HTML 开始自动生成的:

<div id="root">
    sometext
    <p class="quote">...</p>
    <p class="other">...</p>
</div>
#root>p {
    color:green;
}
#root>p+p {
    color:red;
}

问题是,在添加 <foo:meta> 时元素,这会破坏 CSS 子选择器和同级选择器。我正在寻找一种方法,让 CSS 选择器在以这种方式封装内容时继续工作。我们试过了foo\:meta{display:contents}样式,但是,尽管它的工作原理是从框渲染器中隐藏元元素,但它不会从选择器匹配器中隐藏它。我们不生成要处理的 HTML/CSS,因此在处理之前以某种方式编写它们不是一种选择。它们按原样出现,带有关联 CSS 的通用 HTML 文档。

有没有办法使用 HTML/CSS 实现我们正在寻找的东西?

重申一下,我们正在寻找一种方法,在不破坏子级和同级 CSS 选择器的情况下,将部分内容动态封装在非可视元素中。这些元素应该只对 DOM 遍历可用,例如 document.getElementsByTagName('foo:meta')

最佳答案

如果我正确理解了您的问题。我建议使用祖 parent 和 child 之间的空格而不是“>”。您的选择器也是一个 id 而不是一个类。 您放入的选择器会选择下一级子级,即子级。但是在两者之间添加空格也可以让您选择孙子! 所以你要做的是这个

#root .quote {
    color:green;
}

让我知道这是否有帮助。 一个有效的 CSS 是 here

关于html - 添加 "invisible"或被 CSS 选择器规则跳过的 html 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54749463/

相关文章:

html - 如何将一些元素显示到修改宽度的div中

css - 我可以在 PostCSS 中使用带有可变参数的类吗?

javascript - 我可以从脚本中获取 JavaScript 库的加载位置吗?

javascript - 在 javascript 中正确引用 html 列表项对象以进行事件注册

javascript - Angular.js "controller as"语法突然停止在 Chrome v. 39.0.2171.95 m 上工作

javascript - 我可以通过像 WebStorm 这样的 IDE 从 Web Inspector 打开代码吗?

html - IE 中的表格 TD 高度

html - Chrome 中的慢速聚焦输入字段

javascript - 在我的 Angular 模板中使用 &lt;style scoped>

css - 如何在 Chrome 中调整文本字段的大小?