当前位置: 首页 > 面试题库 >

:最后一个子元素不能按预期工作?

柯河
2023-03-14
问题内容

问题出在此CSS和HTML之内。

HTML

<ul>
    <li class"complete">1</li>
    <li class"complete">2</li>
    <li>3</li>
    <li>4</li>
</ul>

CSS

li.complete:last-child {
    background-color:yellow;
}

li.complete:last-of-type {
    background-color:yellow;
}

这两行CSS都不应该 以“ complete”类 为目标的 最后一个li元素 吗?

jQuery中的此查询也不针对它:

$("li.complete:last-child");

但这确实做到了:

$("li.complete").last();



li {

  background-color: green;

}

li.complete:first-child {

  background-color: white;

}

li.complete:first-of-type {

  background-color: red;

}

li.complete:last-of-type {

  background-color: blue;

}

li.complete:last-child {

  background-color: yellow;

}


<ul>

  <li class="complete">1</li>

  <li class="complete">2</li>

  <li>3</li>

  <li>4</li>

</ul>

问题答案:

last-child选择器用于选择父的最后一个子元素。它不能用于选择给定父元素下具有特定类的最后一个子元素。

复合选择器的另一部分(位于之前:last- child)指定了附加条件,最后一个子元素必须按顺序满足才能被选择。在下面的代码段中,您将看到所选元素如何根据复合选择器的其余部分而有所不同。

.parent :last-child{ /* this will select all elements which are last child of .parent */

  font-weight: bold;

}



.parent div:last-child{ /* this will select the last child of .parent only if it is a div*/

  background: crimson;

}



.parent div.child-2:last-child{ /* this will select the last child of .parent only if it is a div and has the class child-2*/

  color: beige;

}


<div class='parent'>

  <div class='child'>Child</div>

  <div class='child'>Child</div>

  <div class='child'>Child</div>

  <div>Child w/o class</div>

</div>

<div class='parent'>

  <div class='child'>Child</div>

  <div class='child'>Child</div>

  <div class='child'>Child</div>

  <div class='child-2'>Child w/o class</div>

</div>

<div class='parent'>

  <div class='child'>Child</div>

  <div class='child'>Child</div>

  <div class='child'>Child</div>

  <p>Child w/o class</p>

</div>

为了回答您的问题,下面将li使用背景颜色将最后一个子元素设置为红色。

li:last-child{
    background-color: red;
}

但是以下选择器将不适用于您的标记,因为即使它是,last-child也没有。class='complete'``li

li.complete:last-child{
    background-color: green;
}

如果(且仅当)li标记中的最后一个也有时,它才有效class='complete'

要在评论中解决您的查询:

@Harry我觉得很奇怪:.complete:last-of-type不起作用,但是.complete:first-of-type起作用,而不管它是父元素的位置如何。谢谢你的帮助。

选择器.complete:first-of-type之所以起作用,是因为选择器(即带有的元素class='complete')仍然li是父级中类型的第一个元素。尝试html" target="_blank">添加<li>0</li>作为的第一个元素ul,您还会发现它first-of-type也失败了。这是因为first-of-typelast-of-type选择器会选择父项下每种类型的第一个/最后一个元素。



 类似资料:
  • 有人能帮忙吗?我正在尝试获取代表动态生成的智能卡(例如633597015500042010)的按钮的最后一个xpath元素,然后单击它。我尝试了以下方法,但仍然找不到解决方法。我打算捕获的按钮的名称是“Select”。 driver.findElement(by.xpath(“//div[@class='select-item']/div)[last()]”).click();

  • 问题内容: 我试图选择一个名为的类中的第一个。如果它是其中的第一个元素,它会起作用,但是如果在它之后出现,它将不起作用。 我的印象是,无论它在哪里,我拥有的CSS都会选择第一个。我该如何运作? 问题答案: 该选择装置 当且仅当它是一个元素时,才选择其父项的第一个孩子。 所述容器的这里是,这样不能满足。 您的情况有CSS3 : 但是由于浏览器兼容性问题而已,那么最好还是给第一个类一个类,然后再定位该

  • 问题内容: 我已经为此奋斗了2天,尽我所能用Google搜索和stackoverflow,但是我无法解决。 我正在构建一个简单的节点应用程序(+ Express + Mongoose),其登录页面重定向到主页。这是我的服务器JS代码: 登录页面向发出POST请求,在此验证发布的数据。这可行。我可以在Node控制台中看到“我们在这里:’/ credentials’”。 然后是问题:res.redir

  • 问题内容: 根据JavaDoc for ,该函数在比较期间不考虑比例。 现在,我有一个测试用例,看起来像这样: 我希望函数返回的值是10,小数位数为10。打印该值可显示预期的结果。但是该功能似乎并未按照我认为的方式工作。 这里发生了什么? 问题答案: 并 没有 代表0.7。 它代表0.69999999999999999999555910790149937383830547332763671875(

  • 问题内容: 我是否错过了明显痛苦的事情?还是世界上没有人真正使用java.util.BitSet? 以下测试失败: 我真的不清楚,为什么我没有得到长度为2的BitSet和值为10的结果。我偷看了java.util.BitSet的源代码,并且在随意检查时似乎无法对两者进行足够的区分。设置为false且从未设置为任何值… (请注意,在构造函数中显式设置BitSet的大小无效,例如: 问题答案: 人们确

  • 问题内容: 以下Dockerfile: 具有输出: 构建时(docker build命令) 看来RUN cd tmp123没有任何作用 为什么呢? 问题答案: 实际上是预期的。 泊坞窗文件不过是docker run + docker commit的包装器。 与做相同的事情: 每次运行时,都会生成一个新容器,因此pwd为’/’。 如果您愿意,可以在github上打开一个问题,以便向Dockerfil