如何在一个包含许多img标签的div中选择第一个img标签?

Rev*_*air 11 css css-selectors css3

我有这个HTML:

<div class="image">
   <img src=... />
   <img src= .../>
</div>
Run Code Online (Sandbox Code Playgroud)

而且我只会将css应用于类图像div的第一个图像,而不必在我的第一个img中添加一个类(在这种情况下,我会这样做.image .img1但是还有另一种方法吗?

非常感谢你的帮助

Mic*_*ael 25

您可以使用:first-child选择器执行此操作.

你也可以使用:nth-child(1) (其中1是=第一个孩子,2等于第二个孩子等)

最后,更合适的方式是使用 :first-of-type

例如:

div.image img:first-child {}
Run Code Online (Sandbox Code Playgroud)

要么:

div.image img:nth-child(1) {}
Run Code Online (Sandbox Code Playgroud)

或者(如果还有其他元素,请说出<h1>任何图像之前的元素:

div img:first-of-type
Run Code Online (Sandbox Code Playgroud)

如果你有可能有一个div类图像里面有图像,还有另一个div里面有图像,如下所示:

HTML:

<div class="image">
   <img src=... />
   <img src= .../>
   <div class="image">
      <img src=... />
      <img src= .../>
   </div>
</div>
Run Code Online (Sandbox Code Playgroud)

然后使用这些选择器:

例如:

div.image > img:first-child {}
Run Code Online (Sandbox Code Playgroud)

要么:

div.image > img:nth-child(1) {}
Run Code Online (Sandbox Code Playgroud)

要么:

div > img:first-of-type
Run Code Online (Sandbox Code Playgroud)

文档:first-child和on :nth-​​child()和on :first-of-type和on child combinator.

请注意,:nth-child()并且:first-of-type是CSS3选择器,它们在使用IE时具有一些有限的支持.请参阅我可以使用CSS3选择器获取浏览器支持详细信息.

考虑像Selectivizr这样的东西来帮助标准化IE.

  • "使用IE时的有限支持"将算作一个.此外,Modernizr不支持polyfill选择器 - 您可以使用Selectivizr来实现. (3认同)
  • 编辑我的回答.在任何情况下,first-of-type都是更好的解决方案,因为它仅对img标签更具体.如果在任何时候这个HTML被修改为包括,例如图像前的标题(这不是一个不合理的想法),:第一个孩子会破坏,解决方案是使用:first-of-type to固定.为什么不切入追逐和使用:首先是第一类?没理由我不能看到. (2认同)

Sac*_*hin 6

你可以使用first-child选择器

.image img:first-child
{
  height:500px;
  width:200px;
  border:15px solid Red;    
}
Run Code Online (Sandbox Code Playgroud)

JS小提琴示例