在页面中选择第一个带有类的元素

维克多·卡斯特罗

问题非常简单:我无法找到一种方法(仅使用CSS)来选择页面中具有特定类的第一个元素。

例如,使用此HTML代码,我想选择class的第一个元素.elem

.elem:nth-of-type(1) {
  background-color: yellow;
}
<div class="wrapper">
  <div class="elem">elem that I'd like to select</div>
  <div class="elem">elem</div>
  <div class="elem">elem</div>
  <div class="elem">elem</div>
  <div class="elem">elem</div>
  <div class="elem">elem</div>
</div>

<div class="wrapper">
  <div class="elem">Unfortunately, this elem is selected too</div>
  <div class="elem">elem</div>
  <div class="elem">elem</div>
  <div class="elem">elem</div>
  <div class="elem">elem</div>
  <div class="elem">elem</div>
</div>

当前行为类似于js的querySelectorAll函数,但是预期行为是以下之一querySelector

document.querySelectorAll('.elem:nth-of-type(1)') // Current behavior is like this
document.querySelector('.elem:nth-of-type(1)') // Expected behavior is like this

是否有CSS技巧可以满足我的需求?

编辑:

实际上,我不知道HTML代码。我唯一知道的是:“我需要.elem使用CSS在页面中选择第一位

查尔拉卡

这个问题nth-of-typefirst-childlast-child和这样的是,它总是从父计数。

因此,在您的示例中,您有两个父.wrapper类。

因此,没有像这样的特定选择器,.wrapper:first-child .elem:first-child您将无法通用选择它。

如果您希望使用纯CSS来处理页面,则需要知道页面的布局,以便可以构建路径以仅选择页面中的第一个elem。

我做了一些实验用*:first-child > .elem:first-child { border:5px solid red }body > *:nth-of-type(1) .elem:nth-of-type(1)他们看起来前途无量,但都有警告。您仍然需要知道页面的布局。双嵌套元素,彼此相邻的多层嵌套元素对css均有效,因此我放弃了这些选项,并将此答案回溯到我的最初的答案。最安全的选择是一行JavaScript。

现在,您可以实现的解决方案有两个:

如果您使用php或node-js之类的东西来生成页面,则可以在渲染页面时使用一次性开关

$first = true;
foreach($listitem as $item) {
   $output[] = '<div class="elem';
   if($first) {
      $first = false;
      $output[] = ' first';
   }
   $output[] = '>elem</div>';
   } 
}

如果您被允许使用一行JavaScript,则可以使用如下代码:

document.querySelector('.elem').classList.add('ello');

但是,如果使用纯CSS,并且在页面中没有使用第一个elem类出现的特定路径,这几乎是不可能的。

document.querySelector('.elem').classList.add('first');
.elem.first {
  background-color: yellow;
}
<div class="wrapper">
  <div class="elem">elem that I'd like to select</div>
  <div class="elem">elem</div>
  <div class="elem">elem</div>
  <div class="elem">elem</div>
  <div class="elem">elem</div>
  <div class="elem">elem</div>
</div>

<div class="wrapper">
  <div class="elem">Unfortunately, this elem is selected too</div>
  <div class="elem">elem</div>
  <div class="elem">elem</div>
  <div class="elem">elem</div>
  <div class="elem">elem</div>
  <div class="elem">elem</div>
</div>

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

当一个元素没有通过CSS的类时,如何从选择中选择第一个元素?

Jquery 只选择带有类的第一个元素而不是全部

在 CSS 中选择具有特定类的序列的第一个和最后一个元素

从所有元素和嵌套元素中选择第一个孩子

在 XSLT 中选择第一个第一个子元素

查找带有类的第一个元素,使用类追加标题元素

在所有div中选择第一个输入元素

如何从CSS中所有相似的类中选择第一个孩子

当每个使用相同类的后续元素也是第一个孩子时,如何使用特定类选择页面上的第一个元素?

LESS 在 DIV 中隐藏带有类的第一个元素

如何在分页的每个页面中选择第一个元素,例如$ event点击角?

CSS选择没有类的第一个元素

如何使用CSS选择所有元素中第一个出现的类

仅当具有两个类并且共享相同的第一个类时才选择元素

如何在选择列表Angular JS中选择第一个元素?

Python Pandas:在所有单元格中选择数组中的第一个元素

如何触发选择元素上的事件以选择带有打字稿的第一个选项?

从Scala的地图中选择第一个“ N”个元素

无法在此33个元素的节点列表中选择第一个孩子

如何测试此元素是否是整个文档中带有类的第一个元素?

如何使用CSS类在第一个,第二个或第三个html元素中选择子元素?

XPath在下拉列表中选择第一个元素

在data.table中分组,并在多个列中选择第一个元素

如何在硒测试中选择第一个锂元素?

在ul中选择第一个孩子锚元素

从LINQ搜索结果中选择组的第一个元素

Python Selenium从下拉列表中选择第一个元素

无法在jQuery mobile中选择组合框的第一个元素

CSS:如何在每行中选择第一个<td>元素?