问题出在此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-type
和last-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