微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

CSS样式,如果不是孩子

如果特定的类不是元素的子元素,我需要将一个样式应用于元素.

<table class="printlist" style="width:100%">
  <tbody>
    <tr class="list_wanted0"><td>Whatever...</td></tr>
    <tr class="list_wanted1"><td>
      <div class="journal">
        <table><tbody>
          <tr><td style="width: 9em">2011-03-12 09:36</td></tr>
        </tbody></table>
      </div>
    </td></tr>
  </tbody>
</table>

上面的例子减少到最小,以证明结构.

我想要的是:Hover属性仅适用于.printlist tr如果< tr>没有.journal孩子.

.list_wanted0和.list_wanted1不能用于选择.journal,它可以是其他类名.

我试过的CSS是:

.printlist tr:Hover * :not(itemjournal) {
  color: #000;
  background: #aaa
}

显然,这不符合我的意图.

如果您需要更多信息,请不要犹豫,
谢谢.

解决方法

仅使用CSS选择器是不可能的;你不能使用CSS来确定一个元素是否有某种类型的孩子.最好的办法是使用JavaScript来应用类,并相应地设置这些类的样式.

使用jQuery-only :has() selector的示例:

$('.printlist tr').not(':has(.journal)').addClass('nojournal');

然后将样式应用于.printlist tr.nojournal:hover.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。