div 类的最后一个孩子

Posted

技术标签:

【中文标题】div 类的最后一个孩子【英文标题】:last-child of div class 【发布时间】:2012-10-09 04:57:28 【问题描述】:

我正在整理一些 Wordpress 网页,我想设置样式(使用 CSSPosts 页面中的条目卷。 Wordpress 创建了这个:

<div class="entry">

页面中有很多这些元素,为了将它们分开,我在条目底部使用了边框。问题是我不希望在最后一个条目上有这个边框。可以在 CSS 中完成类似的操作吗? (注意它不是一个列表,所以我不能使用伪类)

这是我的 CSS,非常简单:

.entry  border-bottom: 1px solid yellow; 

html

<div id="wrapper">
  <br />
  there are loads of code
  <br />
  <div class="entry">bunch of code there</div>
  <br />
  <div class="entry">bunch of code there</div>
  <br />
  <div class="entry">bunch of code there</div>
  <br />
  another huge code
  <br />
</div>

提前感谢您的帮助。

【问题讨论】:

为什么不能使用伪类? 如果您能展示 HTML 结构的一部分以及如何放置 &lt;div class="entry"&gt;&lt;/div&gt; 元素,那就太好了。 【参考方案1】:

您已经为要查找的内容命名:last-child:http://reference.sitepoint.com/css/pseudoclass-lastchild

所以使用.entry:not(:last-child) border-bottom: 1px solid yellow;

请注意,它不是一个列表,所以我不能使用伪类)

JSYK,伪类不依赖于包含元素是一个列表。如果您的意思是最终的 .entry 元素实际上不是其容器的最后一个子元素,则仍然可以选择它。但是我不能告诉你怎么做,除非你告诉我实际的标记是什么样子的。

如果您的最终 div.entry 后面没有任何其他 div,那么选择器 .entry:not(:last-of-type) 将为您工作。

【讨论】:

我想,正如 OP 所说,这行不通。看起来,这些条目没有在容器中一个接一个地列出。 我认为他的意思不是列表本身,而是 &lt;div&gt;s 在单个容器中的列表,:last-child 可以工作。但也许我弄错了。 :) 目前无法仅使用 CSS 选择器选择某个类的最后一个元素,而不对标记进行假设。 ***.com/questions/10230416/… 不,但如果它是last-of-type,或者如果它有一些其他特定的外围允许我们定位它,它仍然可以被选中。取决于标记! “它们没有在任何容器中列出”太模棱两可而无用。你能张贴标记吗?【参考方案2】:

为了获得最全面的浏览器支持,我建议使用这个:

.entry  border-bottom: 1px solid yellow; 
.entry:last-child  border-bottom: 0; 

【讨论】:

这在浏览器支持上与.entry:not(:last-child)没有什么不同。 @BoltClock 是的,但凯文的方式将在不支持的浏览器上的所有元素上都有边框,而不是没有,这可能是可取的 @BoltClock 你是对的,但这取决于OP想要使用这种方法进行降级。全部,或无。 请注意,如果有人遇到此问题并有所帮助,请注意;虽然 :not 和 :last-child 共享完全相同的浏览器支持,但 :first-child 支持更多(ie8 支持 :first-child,但不支持 :not 或 :last-child)。以防万一有人挠头,为什么 :last-child 和 :not 与 ie8 中的 :first-child 不一样。【参考方案3】:
.entry:last-child 
  border-bottom: none;

假设您有一个列表&lt;li&gt;,其中包含链接&lt;a&gt;,并且您想要获得&lt;li&gt; 的最后一个&lt;a&gt;。 只需使用:

.entry:last-child a 
  border-bottom: none;

这将选择最后一个 .entry 并定位它的链接

【讨论】:

但我不想定位它的链接,我想与 .entry 元素相邻。 那只用第一部分?还是我错过了什么? 你可能有specificity的问题。【参考方案4】:

非常简单的解决方案:

#wrapper :last-child

    border:none;

【讨论】:

以上是关于div 类的最后一个孩子的主要内容,如果未能解决你的问题,请参考以下文章

在最后一个孩子之前追加

第一个和最后一个孩子的CSS [重复]

具有类的孩子的第一个实例的CSS选择器? [复制]

如何使用jQuery选择树中的最后一个孩子?

怎么为某个类的最后一个元素设定 CSS 样式

如何获取包含其他元素中某个元素的最后一个的包装集?