当前位置:  开发笔记 > 编程语言 > 正文

活动子的父级的复杂CSS选择器

如何解决《活动子的父级的复杂CSS选择器》经验,为你挑选了5个好方法。

有没有办法根据类中子元素的类选择父元素?与我相关的示例与http://drupal.org的精美菜单插件的HTML输出相关.输出呈现如下:

  

我的问题是,是否可以将样式应用于包含具有活动类的锚的列表项.显然,我更喜欢将列表项标记为活动,但我无法控制生成的代码.我可以使用javascript(JQuery spring to mind)执行此类操作,但我想知道是否有使用CSS选择器的方法.

为了清楚起见,我想将一个样式应用于列表项,而不是锚.



1> Sam Hasler..:

根据维基百科:

选择者无法提升

CSS无法选择满足特定条件的元素的父元素或祖先元素.更高级的选择器方案(例如XPath)将启用更复杂的样式表.但是,CSS工作组拒绝父选择器提案的主要原因与浏览器性能和增量渲染问题有关.

对于将来搜索SO的任何人来说,这也可能被称为祖先选择器.

更新:

该选择器4级规格,您可以选择其中选择的部分是主题:

选择器的主题可以通过在选择器中的一个复合选择器前加一个美元符号($)来明确地识别.尽管选择器表示的元素结构与美元符号相同或不相同,但以这种方式指示主题可以更改哪个复合选择器表示该结构中的主题.

例1:

例如,以下选择器表示有序列表OL的列表项LI唯一子项:

OL > LI:only-child

然而,下面的代表一个有一个唯一孩子的有序列表OL,该孩子是LI:

$OL > LI:only-child

由这两个选择器表示的结构是相同的,但选择器的主体不是.

虽然这在任何浏览器中都不可用(目前,2011年11月),或者作为jQuery中的选择器.


CSS选择器4规范现在包括选择器提升的能力.http://stackoverflow.com/q/1014958/392
仅供参考,MooTools有支持CSS级别4选择了几年了 - 讽刺的是,在MooTools的华而不实的选择器引擎实际上是能够处理这些选择的规范草案甚至被发布之前 - > https://github.com/mootools的/柔滑/维基/如何-DO-I-指定-A-不同专科换了,选择%3F
对于仍然在看这个的人来说,4级模块确实说`:has()`选择器(以前是`$`)仅在JavaScript中可用,并且**不会在CSS中可用.这是由于CSS解析器的单通性质.

2> Dave Ward..:

不幸的是,没有办法用CSS做到这一点.

但是使用JavaScript并不是很困难:

// JavaScript code:
document.getElementsByClassName("active")[0].parentNode;

// jQuery code:
$('.active').parent().get(0); // This would be the 's parent 
  • .


  • 3> David Clarke..:

    迟到了派对,但是为了它的价值,可以使用jQuery更简洁一些.在我的情况下,我需要找到孩子中包含

      标签的父标签
    • .jQuery具有:has选择器,因此可以通过它包含的子节点识别父节点(根据@ Afrowave的注释ref:https://api.jquery.com/has-selector/更新):

      $("ul").has("#someId")
      

      将选择ul具有id为someId的子元素的元素.或者回答原始问题,类似下面的内容应该可以做到(未经测试):

      $("li").has(".active")
      


      :选择器只是放一个救生员!
      [JSFiddle demo](http://jsfiddle.net/zh6wubrq/)进行测试......
      jQuery建议将`:has(selector)`更改为:$("li").has('active')`.我在上面的@revoke JSFiddle演示中实现了它.https://api.jquery.com/has-selector/

      4> Praveen Kuma..:

      "父母"选择者

      现在,没有选择在CSS中选择元素的父元素(甚至不是CSS3).但是对于CSS4,当前W3C草案中最重要的新闻是对父选择器的支持.

      $ul li:hover{
          background: #fff;
      }
      

      使用上面的内容,当悬停列表元素时,将通过向其添加白色背景来突出显示整个无序列表.

      官方文件:https://www.w3.org/TR/2011/WD-selectors4-20110929/#overview(最后一行).


      根据[当前草案](https://www.w3.org/TR/selectors4/),当前语法为[`!subject> selector`](http://css4-selectors.com/selector/css4/主题的选择器与 - 儿童组合子/).我发现http://css4-selectors.com/是一个很好的参考.在此评论时,没有浏览器支持此选择器.

      5> Brian..:

      选择器级别4的初稿概述了一种显式设置选择器主题的方法.这将允许OP使用选择器设置list元素的样式$li > a.active

      从确定选择器的主题:

      例如,以下选择器表示有序列表OL的列表项LI唯一子项:

      OL > LI:only-child

      然而,下面的代表一个有一个唯一孩子的有序列表OL,该孩子是LI:

      $OL > LI:only-child

      由这两个选择器表示的结构是相同的,但选择器的主体不是.

      编辑:鉴于规范草案的"草率"如何,最好通过检查4级选择器上的CSSWG页面来关注这一点.

    推荐阅读
    女女的家_747
    这个屌丝很懒,什么也没留下!
    DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
    Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有