【问题标题】:CSS select from last element upCSS 从最后一个元素向上选择
【发布时间】:2020-05-16 06:09:49
【问题描述】:

我有一个最多可以包含 5 个项目的列表。

<ul>
 <li>One</li>
 <li>Two</li>
 <li>Three</li>
 <li>Four</li>
 <li>Five</li>
</ul>

每个列表项的宽度将增加10%。我正在使用:

ul li:nth-child(1) {
  width: 60%;
}
ul li:nth-child(2) {
  width: 70%;
}
ul li:nth-child(3) {
  width: 80%;
}
ul li:nth-child(4) {
  width: 90%;
}
ul li:nth-child(5) {
  width: 100%;
}

最后一项应该是100%

但是当我的列表项少于 5 个时会发生什么?例如,如果有 3 个列表项,最后一个将是 80%,而不是 100%

我尝试使用:

ul li:last-child {
  width: 100%;
}

这使得最后一项全宽,但前面的将不遵守10% 递增规则。

有什么办法可以做...

ul li:last-child {
  width: 100%;
}
ul li:first-before-last {
  width: 90%;
}
ul li:second-before-last {
  width: 80%;
}
ul li:third-before-last {
  width: 70%;
}

等等……

我正在尝试仅使用 CSS 来实现这一点。

注意:颠倒一切并从100% 的第一个开始,然后向下不是一个选项。最后一个必须是 100% 并首先增加它。它只是为一些类似的动画设置的。改不了了

【问题讨论】:

  • 每一项增加 10% 还是最后一项始终保持 100%?还是说如果从最后一项开始计算,每次应该从 100 到 -10?
  • this thread你要使用:nth-last-child(2)

标签: html css


【解决方案1】:

颠倒逻辑,使用:nth-last-child伪类从最后一个元素开始设置width

这种方法需要设置与列表项的最大基数一样多的选择器。

li:nth-last-child(n + 1) {
   width: 100%
}

li:nth-last-child(n + 2) {
   width: 90%
}

li:nth-last-child(n + 3) {
   width: 80%
}

li:nth-last-child(n + 4) {
   width: 70%
}

li:nth-last-child(n + 5) {
   width: 60%
}

li:nth-last-child(n + 6) {
   width: 50%
}



li { border: 1px #9cb solid; }
<ul>
 <li>One</li>
 <li>Two</li>
 <li>Three</li>
 <li>Four</li>
 <li>Five</li>
</ul>



<ul>
 <li>One</li>
 <li>Two</li>
 <li>Three</li>
</ul>

【讨论】:

  • 我无法反转
  • @Cyber​​J 你在哪里看到了反转?
  • @Cyber​​J 你只是颠倒了css中的选择器而已
  • @Cyber​​J 在你的问题中“有什么办法可以做类似...”我编码的正是你想要的。
  • 这是一个非常好的答案。 OP 的实际问题是 last 项应该是 100%,并且应该从那里减小大小。
猜你喜欢
  • 2022-06-23
  • 2013-08-18
  • 2017-11-28
  • 1970-01-01
  • 2016-04-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多