css - 递归定位和修改特定类型的第一个元素的CSS

标签 css css-selectors

我有一个这样定义的 html 结构:

<div class="container">
  <div class=photoItems>
    <div class=photoWrapper>
      <img class="image" ... />
    </div>
    <div class=photoWrapper>
      <img class="image" ... />
    </div>
    <div class=photoWrapper>
      <img class="image" ... />
    </div>
    ...
  </div>
</div>

我希望能够做的是使用“容器”样式递归地遍历其子项并找到类型的第一个实例 <img/>并强制display:none; .有点像这样(非工作 css):

.container {
  width: 100%;

  > img:first-of-type {
    display: none;
  }
}

据我了解,“首类型”选择器仅适用于同级级别,但由于某些原因我只能在“容器”级别运行 - 所以有没有一种方法可以递归选择第一个实例曾祖父级别的造型图像?

最佳答案

根据我自己的理解,“>”选择器选择元素的第一个后代元素。例如div > img , 这个选择了所有的 img是 div 的第一个后代,而不是 img这是它的第二个继任者。

所以,如果我没有误解你的问题,你想要完成的是找到第一个 img.container里面使用 :first-of-type 上课选择器。如果我们基于你的元素的结构,它永远不会发生。这是因为您使用的是“>”选择器,但没有 img 的直接后代。里面,因为图像被包裹在里面 .photoWrapper类(class)。如果你使用 div img:first-of-type , 这将选择 div 中所有图像的第一个实例以及它的继任者。

可悲的是,我认为 CSS 上仍然没有功能/选择器可以根据您的问题找到其所有后继者的元素。您可以在此处阅读有关选择器的信息: https://www.w3schools.com/cssref/css_selectors.asp/ https://www.w3schools.com/cssref/css_selectors.asp

嗯,我不知道你是否喜欢这个,但这是我解决你问题的方法。我会用find('img:first') jquery的功能。

希望对您有所帮助。

$(document).ready(function(){
   $('.container').find('img:first').hide();
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="container">
  <div class=photoItems>
    <div class=photoWrapper>
      <img class="image" alt="1" />
    </div>
    <div class=photoWrapper>
      <img class="image" alt="2"  />
    </div>
    <div class=photoWrapper>
      <img class="image" alt="3"  />
    </div>
    ...
  </div>
</div>

关于css - 递归定位和修改特定类型的第一个元素的CSS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59095895/

相关文章:

html - 嵌套类的 CSS 选择器

jquery - 将 <th> 类附加到同一列中的 <td>

html - 在 HTML 中选择 td 元素值的 css-selector 路径是什么?

css - 尝试在预告片中显示有限数量的图像

html - 将鼠标悬停在右侧时,左侧 div 确实会减小宽度

html - 垂直居中div的内容

css - 在 Sinatra 应用程序的 layout.html.erb 中使用 if 语句

c# - 在 HTML5 CSS 或 C#.NET 中裁剪图像

javascript - addClass 到当前 li 元素并 removeClass

javascript - focus() 方法不起作用,而使用鼠标或 Tab 键手动聚焦时起作用