如何通过CSS选择某些兄弟姐妹?

如何通过CSS选择某些兄弟姐妹?,css,css-selectors,Css,Css Selectors,问题:如何仅使用CSS隐藏除第一个之外的所有My Cars元素 昨天我问了一个稍微相似的问题,答案很好,但情况发生了变化,导致了进一步的问题。我只能控制CSS,所以请不要建议使用JavaScript或修改HTML 正是这些该死的因素导致了昨天的解决方案彻底失败 对于浏览器兼容性,如果解决方案不使用CSS3,我将不胜感激 有什么想法吗 <div class="wrapper"> <script></script> <script></

问题:如何仅使用CSS隐藏除第一个之外的所有My Cars元素

昨天我问了一个稍微相似的问题,答案很好,但情况发生了变化,导致了进一步的问题。我只能控制CSS,所以请不要建议使用JavaScript或修改HTML

正是这些该死的因素导致了昨天的解决方案彻底失败

对于浏览器兼容性,如果解决方案不使用CSS3,我将不胜感激

有什么想法吗

<div class="wrapper">

  <script></script>
  <script></script>

  <ul class="cars">
      <li class="headline">My Cars</li>
      <li>Ferrari</li>
      <li>Hummer</li>
  </ul>

  <noscript></noscript>
  <script></script>
  <script></script>

  <ul class="cars">
      <li class="headline">My Cars</li>
      <li>Volvo</li>
      <li>Caddilac</li>
   </ul>

  <noscript></noscript>
  <script></script>
  <script></script>

  <ul> etc....

</div>
它在所有标准浏览器中都兼容请参见此处的兼容性:


它在所有标准浏览器中都是兼容的。请参见此处的兼容性:

使用CSS2可能是不可行的,除非您能够以某种方式修改HTML,例如在第一个ul中包含第一个类。如果不能触摸HTML,我就无法想出CSS2选择器

但如果这两个问题的答案都是肯定的:

你所有的li.headline都是ul元素吗

您的div.wrapper是否只包含script、noscript或ul元素作为子元素

然后使用CSS3选择器就很容易了:

li.headline {
    display: none;
}

使用CSS2可能是不可行的,除非您能够以某种方式修改HTML,例如在第一个ul中包含第一个类。如果不能触摸HTML,我就无法想出CSS2选择器

但如果这两个问题的答案都是肯定的:

你所有的li.headline都是ul元素吗

您的div.wrapper是否只包含script、noscript或ul元素作为子元素

然后使用CSS3选择器就很容易了:

li.headline {
    display: none;
}
如果您的确切HTML结构没有高于第一组元素的值,那么这将起作用:

.wrapper > ul:first-of-type ~ ul li.headline {
    display: none;
}
不过我非常不喜欢它,因为它太易碎了。我宁愿使用JavaScript,也不愿使用那个讨厌的东西

见:

这将适用于IE7+和现代浏览器。

如果您的确切HTML结构没有高于第一组元素的元素,则这将起作用:

.wrapper > ul:first-of-type ~ ul li.headline {
    display: none;
}
不过我非常不喜欢它,因为它太易碎了。我宁愿使用JavaScript,也不愿使用那个讨厌的东西

见:


这将在IE7+和现代浏览器中起作用。

如果只显示第一个,难道不是相反吗?@BoltClock-显然没有做到这一点。是的,除非你有权访问html来更改周围的类,否则单靠CSS是做不到的。@blankabout是的,我隐藏除第一个之外的所有内容还是只显示第一个并不重要。如果只显示第一个,这不是另一种方式吗?@BoltClock-显然没有做到这一点。是的,除非你有权访问html来更改周围的类,否则单靠CSS是做不到的。@blankabout是的,我是隐藏除第一个之外的所有内容还是只显示第一个并不重要。为什么所有这些标记都在那里?我知道,我知道,你说不要建议修改HTML,但拥有所有这些s代表了糟糕的设计。是的,我知道。并同意。脚本标签与插入的广告有关。。。。可悲的是,我对此无能为力。第一组元素肯定没有元素吗?是的,肯定是这样。为什么所有的标签都在那里?我知道,我知道,你说不要建议修改HTML,但拥有所有这些s代表了糟糕的设计。是的,我知道。并同意。脚本标签与插入的广告有关。。。。遗憾的是,我对此无能为力。第一组元素肯定没有元素吗?是的,肯定是这样。我把CSS3解决方案放在那里作为最后的努力。至少它适用于支持它的浏览器。你的两个问题的答案都是肯定的。这个解决方案很好,因为我使用的是FF4。不过,你知道有一个更新良好的网站,上面有哪些浏览器支持~selector/operator?@Foad Farkhondeh:大多数通用浏览器都支持它,包括IE7+。@Foad Farkhondeh:这是你必须担心的第一种类型。这只是IE9+而已。我把CSS3解决方案作为最后的努力放在那里。至少它适用于支持它的浏览器。你的两个问题的答案都是肯定的。这个解决方案很好,因为我使用的是FF4。不过,你知道有一个更新良好的网站,上面有哪些浏览器支持~selector/operator?@Foad Farkhondeh:大多数通用浏览器都支持它,包括IE7+。@Foad Farkhondeh:这是你必须担心的第一种类型。这只是IE9+而已。