css 按子级类名选择父级的第一个子级

dzhpxtsq  于 2022-12-24  发布在  其他
关注(0)|答案(3)|浏览(184)

我正在React中构建一个图像上传器,现在已经基本完成了。我的下一步是尝试让渲染过的div的第一个子元素具有不同的背景颜色,表明它是所选的"主"照片。渲染效果如下:

.preview-images{
    width: 250px;
    border-bottom: 1px solid #BBB;
    border-right: 2px solid #BBB;
    border-radius: 10px;
    margin-bottom: 20px;
    padding: 15px;
    font-size: 30px;
    display: inline-grid;
    margin-right: 20px;
}

div:has(> .preview-images){
    border: 5px solid #FF0000;
}
<div> <!-- This is the direct parent -- It is a rendered react element, I cannot give an ID or Class -->

  <div class="preview-images"> <!-- This is the first child -->
    <img src=. ..>
  </div>

  <div class="preview-images"> <!-- This is a direct child -->
    <img src=. ..>
  </div>

  <div class="preview-images"> <!-- This is a direct child -->
    <img src=. ..>
  </div>

</div>

这是我所能得到的最远的结果,我已经使用has(<选择了directparent ..但是我不能得到这个的first-child。为什么div:has(> .preview-images):first-child{不起作用?根据问题Like This OneThis One-嵌套的伪选择器应该在这里起作用。我做错了什么?

wmomyfyw

wmomyfyw1#

您可以简单地使用:first-of-type CSS伪类,它表示一组兄弟元素中该类型的第一个元素。在您的示例中,子元素可以拥有该类,因此可以直接使用伪类,如下所示:

div.preview-images:first-of-type {
   /* your stuff here */
}

您可以像下面这样修改代码,
x一个一个一个一个x一个一个二个x

dtcbnfnu

dtcbnfnu2#

你想要div.preview-images:first-child:has( > img),你试图用你的方法选择一个div的子元素,这个div的类是preview-images,但是这个类并不存在,修改后的选择器选择的div的类是preview-images,这个类是第一个子元素,并且有一个image作为它的子元素。

.preview-images {
  width: 250px;
  border-bottom: 1px solid #BBB;
  border-right: 2px solid #BBB;
  border-radius: 10px;
  margin-bottom: 20px;
  padding: 15px;
  font-size: 30px;
  display: inline-grid;
  margin-right: 20px;
}

div.preview-images:first-child:has( > img) {
  border: 5px solid #FF0000;
}
<div>
  <!-- This is the direct parent -- It is a rendered react element, I cannot give an ID or Class -->

  <div class="preview-images">
    <!-- This is the first child -->
    <img src=. ..>
  </div>

  <div class="preview-images">
    <!-- This is a direct child -->
    <img src=. ..>
  </div>

  <div class="preview-images">
    <!-- This is a direct child -->
    <img src=. ..>
  </div>

</div>
ix0qys7i

ix0qys7i3#

使用div:has(. preview-images)选择具有. preview-images类的子项的div,然后使用. preview-images:first-child img选择. preview-images子项的第一个图像,如下所示
希望这能有所帮助。注意它可能在firefox上不起作用,但希望很快就能解决。

div:has(.preview-images) .preview-images:first-child img {
  outline: 2px solid red;
}
<div>
  <!-- This is the direct parent -- It is a rendered react element, I cannot give an ID or Class -->

  <div class="preview-images">
    <!-- This is the first child -->
    <img src='https://picsum.photos/id/237/200'>
  </div>

  <div class="preview-images">
    <!-- This is a direct child -->
    <img src='https://picsum.photos/id/238/200'>
  </div>

  <div class="preview-images">
    <!-- This is a direct child -->
    <img src='https://picsum.photos/id/239/200'>
  </div>
</div>

相关问题