【发布时间】:2014-11-21 09:02:04
【问题描述】:
假设我们有一个包含 5 个项目的列表,并且我们希望将一些特定样式应用于第一个或最后一个孩子。但是这个列表的功能需要通过 jQuery 应用一个类(我们称之为.hide)来隐藏它的一些项目,这将在目标项目上设置一个display: none;。
我一开始所说的特定样式应该只应用于可见的第一个和最后一个项目,所以我想要实现的是以某种方式跳过那些.hide 类应用于它们并且同时是第一个或最后一个项目。
我已经尝试通过组合一些:not(.hide) 和:first-child/:last-child 伪来做到这一点,但它不起作用。此外,尝试使用 simbling 选择器最多对第一个孩子有效,但目前无法在 css 中选择前一个兄弟,因此此解决方案不会涵盖最后一个孩子的问题。
这是一个 jsfidle,您可以在其中更好地理解我要做什么:
或
HTML
<div class="hide">Item 1</div>
<div>Item 2</div>
<div>Item 3</div>
<div>Item 4</div>
<div class="hide">Item 5</div>
CSS
.hide {display: none;}
div:not(.hide):first-child,
div:not(.hide):last-child {color: red;}
【问题讨论】:
-
请始终在问题上插入代码。如果 jsfiddle 失败,问题就会失去意义
-
你在使用javascript吗?你没有标记任何 JS
-
你可以用
.detach代替.hide -
无法使用 CSS 选择器。这些伪类扇区使用元素而不是类和属性。需要一个 JS 解决方案。
-
CSS 在取消选择特定类后无法选择子项。在 CSS 中无法进行链接!
标签: html css css-selectors