CSS 中能否选取父元素?

jQuery 可以实现, 想尽量避免 JS
关注者
103
被浏览
405,685

6 个回答

不能。你可以在这里查到 CSS3 提供的选择器(Selectors Level 3)详情: w3.org/TR/selectors/

CSS4 将很可能提供父元素选择器,但现在连语法都没定下来,更别提浏览器的实现了。

2022-07-22 更新:

CSS 父元素选择器现在已经登陆 Chrome 105、Safari 15.4,泪目!

的确是可以的:Selectors Level 4 中已经新增了「Subject 」选择器
Selectors Level 4

类似这样:

!li > p { border:1px solid #CCC; }  /* 为 p 的父元素 li 设置一个边框 */


2014年5月16日 更新:

这个选择器语法一直在改动:


相关讨论:lists.w3.org/Archives/P

li:has( > p){ border:1px solid #CCC; }


但是由于在实现上存在「回溯」的问题,一直迟迟没有浏览器去实现,更多关于父级选择器的讨论和实现问题参阅:如何给 W3C 组织提关于 Web 标准的建议?(父级选择器回溯问题)

其实性能和:last-child差不多,比:nth-last-child()要好,这也是为什么IE直到9才实现:last-child.

详见:


这里有一个 CSS 选择器说明和演示的网站:CSS4-Selectors


2015-07-23 更新:

:has() 选择器被推迟到 Selectors Level 5 lists.w3.org/Archives/P

2021-05-21