css - 递归定位和修改特定类型的第一个元素的 css
问题描述
我有一个这样定义的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/>
并强制 a display:none;
. 有点像这样(非工作CSS):
.container {
width: 100%;
> img:first-of-type {
display: none;
}
}
据我了解,“第一个类型”选择器仅适用于同级级别,但是由于某些原因,我只能在“容器”级别上操作 - 所以有没有办法递归选择图像的第一个实例从曾祖父级别的造型?
解决方案
根据我自己的理解,“>”选择器选择元素的第一个后代元素。例如div > img
,这个选择所有img
div 的第一个后代,而不是img
它的第二个后继。
所以,如果我没有误解你的问题,你想要完成的是使用选择器img
在类中找到第一个。如果我们基于您元素的结构,它永远不会发生。这是因为您使用的是 ">" 选择器,但由于图像被包装在类中,因此内部没有直接后代。如果你使用,这将选择 image 中的所有第一个实例以及它的后继者。.container
:first-of-type
img
.photoWrapper
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>
推荐阅读
- json.net - Why does validation fail in code, but work in Newtonsoft web validator?
- r - R system2成功后退出失败
- android - Mapbox-gl 在 android 模拟器(离子电容器)上崩溃
- linux - mremap 返回大小,但应该返回一个有效的指针
- java - 将 String 中的 Headers 数据转换为 Map
> - flutter - 颤振:堆栈和墨水覆盖
- css - 使用 flex 根据窗口大小将内容显示为行或列
- javascript - Cube.js - 无法加入 2 个或更多表,但不断收到“找不到要加入的加入路径”错误
- ios - 带有 WebView 的 iOS 中的 URL 方案
- reactjs - 成功消息显示两次反应JS