css - 选择器无法正常工作

标签 css css-selectors

我有类 .headerRightZone 的容器 此容器包含类 .btn 的元素 其中一些具有类 .hidden

目标:我需要选择(编写选择器)最后一个可见的(没有.hidden类的按钮)按钮

myhtml.html

<div class="headerRightZone">
  <a href="javascript: void(0)" class="btn">Button 1</a>
  <a href="javascript: void(0)" class="btn">Button 2</a>
  <a href="javascript: void(0)" class="btn">Button 3</a>
  <a href="javascript: void(0)" class="btn hidden">Button 4</a>
  <a href="javascript: void(0)" class="btn hidden">Button 5</a>
</div>

mycss.css

.hidden{
  display: none;
}

.btn{
  background-color: #fff;
}

.headerRightZone .btn:not(.hidden):last-of-type{
  background-color: #f00;
}

我写道:

.headerRightZone .btn:not(.hidden):last-of-type

但它返回一个空数组。

jsFiddle Example

代码有什么问题?为什么数组是空的?

最佳答案

这里的问题是 last-of-type 并不像您期望的那样工作。

它只会根据元素类型进行评估,在本例中为 a,它不关心类。您编写的选择器只能影响最后一个 anchor 标记,无论它具有什么类。因此,由于您的最后一个元素没有显示,您没有看到正在设置的样式。

隐藏不同的元素证明了这一点:updated fiddle

要解决您的问题,您需要使用 javascript 或 jQuery,因为这超出了 CSS 的能力范围。

之前已经提出了一些好的建议:here

关于css - 选择器无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40762562/

相关文章:

ruby - Watir:使用不同 DOM 选择方法读取所需时间的差异

javascript - jQuery 类不会添加更改选择框的选项

html - 从 Sprite 调整图像大小

与 DevTools 兼容的 CSS-in-JS 实现

html - Flexbox之后受margin影响

javascript - 如何使用 jquery/js/css 渐进地突出显示一大块文本

css - IE8 CSS 选择器选择,但不应用样式

css - 如何选择名称属性中带有 [] 的元素?

css - Foundation Block Grid 和 nth-child 选择器

html - 如何划线边框内的所有链接并加粗标记段落的某些文本