首页 > 解决方案 > 将 CSS 应用于第一个子元素,将 CSS 应用于元素内的最后一个子元素,但如果只有子元素则不适用

问题描述

我正在寻找一种优雅的 SASS 解决方案,将样式应用于第一个子元素,并将不同的样式应用于元素内的最后一个子元素,但如果它是唯一的子元素,则没有样式。

我怎么能做到这一点?

一个例子是:

想象一下,我有以下内容:

<div>
  <i>Item 1</i>
  <span>Item 2</span>
  <i>Item 3</i>
</div>

如果我有这个例子:

<div>
  <span>Item</span>
</div>

我试过这样的事情:

div {
  i {
    &:first-child {
      margin-right: 5px;
    }
    &:last-child {
      margin-left: 5px;
    }
  }
}

但如果我有这种情况,这不起作用:

<div>
  <i>Item 1</i>
  <span>Item 2</span>
</div>

因为Item 1两者margin-rightmargin-left属性都设置为5px我真正想要的时候margin-right: 5px; margin-left: 0;

关于如何解决这个问题的任何想法?我对我的 CSS 选择器有点生疏了。

标签: htmlcsssasscss-selectors

解决方案


对您的 SASS 规则稍作修改就可以得到您想要的结果。尝试以下 SASS 规则。

div {
  i {
    &:first-of-type {
      margin-right: 5px;
    }
    &:last-child {
      margin-left: 5px;
    }
  }
}

推荐阅读