css - 如何在 CSS 中有效地选择元素的所有直接子元素
问题描述
在 CSS 中,我需要选择带有 class 的元素的所有直接子元素foobar
。显而易见的方法是这样做:
.foo > * {
foo: bar;
}
这个问题不是重复的。选择所有直接后代 dom 元素而不管类型的问题只是询问如何选择元素的所有直接子元素。答案说使用类似于我上面显示的东西。但是那里的评论和其他地方的评论声称这种方法效率极低,声称*
选择器会导致在子选择器生效之前选择所有元素:
请注意,这是一个效率极低的选择器!Css 选择器是从右到左验证的,因此通过在选择器末尾使用星号(*,又名通用选择器),浏览器将选择所有元素,然后开始进一步过滤(在这种情况下:只有直接子元素的元素'body' 元素)。因此,对于小页面,这不是问题,但在较大的单页应用程序中,它可能会减慢速度......
(坦率地说,这对我来说听起来很可疑;浏览器选择算法真的那么不聪明吗?)
所以这个问题是不同的:那么我如何做出有效的等效选择?
我这样做吗?(请注意,我更新了这个选项;我喜欢使用:root
,因为我不必引入任何虚拟元素。)
.foo > :not(:root) {
foo: bar;
}
还是我这样做?
.foo > :nth-child(odd), .foo > :nth-child(event) {
foo: bar;
}
那些真的比 更有效.foo > *
吗?你有更好的建议吗?
(在我的特定用例中,只有大约两三个孩子,但整个文档可能很大。)
解决方案
推荐阅读
- keras - 在keras中使用lstm检测序列中的模式长度
- javascript - 如何确定我是否从 img 的 src 属性中得到 404 响应?
- html - html5 - 未触发画布鼠标向上事件
- oop - uml类图,组合、继承、关联使用什么样的关系?
- javascript - DOM XSS 和 Javascript 转义
- python - 带有zeep的python SOAP,requests.exception:403客户端错误
- c - 两个 C 文件具有相同的变量名,但一个是静态类型,一个是全局文件,尽管 GCC 没有给出错误
- permissions - 如何在 couchDB 中获得更好的文档/用户特定的写入权限?
- android - 在 Android 上将图像与视频流合并
- php - PHP插入过滤器并将其打印在图像上