CSS 通过子元素设置父元素
参考资料:
背景
某些特定场景下 我们希望通过子元素来判断从而修改父级属性。
除了JS控制之外是否有CSS实现这方面功能
查了大量资料发现css现阶段没有实现这块
原因如下:
由于它违反了CSS目前的“不回溯”的原则,因此一直没有被纳入规范
其实你从浏览器的角度来考虑这件事情,便不会有疑问了。假如浏览器支持父级或者前面兄弟元素选择器的话,就不得不在渲染到当前元素时,倒回去找到特定的元素,重新渲染。因为选择器是可以组合的,甚至还会造成很多其它元素也需要重新渲染(想象.someClass:parent div),这样带来的reflow和repaint会造成难以估量的性能问题,甚至计算盒模型的栈保不齐都要溢出。所以自然不会有类似的选择器出现了。
现在
Chrome 意图实验性支持 CSS :has() 选择器,可以用来选择父级元素。目前 Igalia 公司正在为 Chrome 实现该选择器,其团队成员 Brian Kardell 还发表了博文 Can I :has() 进行了详细介绍。
1 | <style> |
结论
还是用js吧~
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 L1uqi!
评论