【问题标题】:How to style the last Angular component on the page?如何设置页面上最后一个 Angular 组件的样式?
【发布时间】:2019-09-28 18:45:01
【问题描述】:

我在组件的 HTML 中最外层的 div 上设置了样式 border-bottom: 1px solid pink。该组件的使用就像创建表格错觉的行一样。我希望它们中的最后一个具有不同的样式(即使边框不可见)。

我希望使用:last-child,但注意到每个元素都有样式,因为在组件的范围内,只有一个最外层的 div。我根据ngFor 中的last 值找到了this solution,但这在我的情况下并不好,因为这些行可能是数组的一部分,但也会在经过 ngfor'ed 的数组之后一个接一个地添加。

我需要的是一种工具来标记页面上最后一次出现的组件并相应地设置样式但是在组件本身内部进行。有可能吗?

以下是基于以下答案的 sn-p。第二个对象没有在最后一个元素上获得额外的样式,而第一个则有(通过分配类last)。

div.last {
  background-color: yellow;
}

div:host(:last-child) {
  background-color: yellow;
}

div {
  padding: 5px;
  margin: 5px;
  border: 2px solid black;
  max-width: 300px;
  display: flex;
  flex: 1;
  justify-content: center;
}

div.outer {
  border-color: purple;
}

div.middle {
  border-color: olive;
}

div.inner {
  border-color: orange;
}

div.multi {
  border-color: pink
}

div.last {
  background-color: yellow;
}

div:host(:last-child) {
  background-color: yellow;
}
<div class="outer">
  <div class="middle">
    <div class="inner">
      <div class="multi">A</div>
      <div class="multi">B</div>
      <div class="multi last">C</div>
    </div>
  </div>
</div>

<div class="outer">
  <div class="middle">
    <div class="inner">
      <div class="multi">A</div>
      <div class="multi">B</div>
      <div class="multi">C</div>
    </div>
  </div>
</div>

【问题讨论】:

  • 请分享您迄今为止尝试过的代码,以调试和修复它
  • @NagaSaiA 我创建了一个小提琴来反映这个问题。我需要在不为最后一个元素设置不同类的情况下完成效果。
  • 你能分享一下 componenet.html,从上面的代码 sn-p.multi:last-child 可以工作,codepen.io/nagasai/pen/WBGMYx,我想这不是你要找的
  • @NagaSaiA 正是我正在寻找的效果不是我正在处理的技术。我希望将其封装在 Angular 组件中。我准备了一个演示并提出了一个单独的问题here。随意看看。

标签: html css angular typescript


【解决方案1】:

以下 css 规则应该有效。您的目标是一个阴影元素,其容器是最后一个子元素

:host(:last-child) {
    border-bottom: solid 1px pink;
}

:host(:last-child) > div {
    border-bottom: solid 1px pink;
}

【讨论】:

  • 有趣的颜色选择。有很多可供选择,而 pink 既不按字母顺序排列也不在语义上有意义。然而,出于某种原因,我也习惯选择它。它来得如此自然——比其他的要多得多。很高兴看到我并不孤单。 :)
  • 不确定我是否正确理解了您的建议,所以我做了一个小提琴。请参阅 OP 中的编辑。
  • Here 是为了表达我的意思。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-07-10
  • 2020-12-06
  • 2021-05-09
  • 2019-10-18
  • 1970-01-01
  • 2018-03-15
  • 1970-01-01
相关资源
最近更新 更多