html文本框倒序显示,HTML/CSS实现逆序列表(列表编号倒序)

我正在做一个项目,其中有一个倒序的列表。列表创建时间降序排序的,这里我想在语义和视觉上都能体现出来(让列表显示对应的编号,编号越大表示是最新的)。网上做了一些研究,找到了一些有趣的解决办法,有些很好,有些就不那么好了。

最终结果类似如下:

C

B

A

接着,我们来看看有哪些实现的方式。

HTML中的reversed 属性

简单,最直接的解决方案是HTML中的reversed属性。

  1. C
  2. B
  3. A

765b5954afb6b2d1619d27f026eba7e6.png

reversed 属性是一个布尔属性,reversed 属性规定列表顺序为降序 (9, 8, 7...),而不是升序 (1, 2, 3...)。

reversed 属性除了 IE 大多数的浏览器都支持,如果你只想要解决方法,用这种就够了。

如果你好奇还有哪些实现方式,请继续阅读。

HTML中的value属性

另一种方法就是使用 value 属性:

  1. C
  2. B
  3. A

3543a6f081802b4a323ab3dc40b66939.png

这种方式虽然比较冗长,但我们对列表也有更多控制权,比如,我们还可以这样操作:

  1. C
  2. B
  3. A

c1dbdb6f03797b97c5545485eaf6a315.png

最好还是不要这样做,因为跳过数字可能会让用户感到困惑。

CSS 自定义的 counter()

第三种方式就是使用CSS的 counter 计算器, 要倒序计数器的顺序,我们有两件事要做:将计数器重置为非0的值,并以负数递增计数器。

  1. C
  2. B
  3. A

ol {

counter-reset: my-custom-counter 4;

list-style: none;

}

ol li {

counter-increment: my-custom-counter -1;

}

ol li::before {

content: counter(my-custom-counter) ". ";

color: #f23c50;

font-size: 2.5rem;

font-weight: bold;

}

953e4c7f0ad2d19b6c7e2e53aa1e2bb8.png

如果我们不知道确切的列表数量,则可以将counter-reset属性移到HTML中:

  1. C
  2. B
  3. A

ol {

list-style: none;

}

ol li {

counter-increment: my-custom-counter -1;

}

ol li::before {

content: counter(my-custom-counter) ". "

}

一些文章建议使用Flexbox或类似的技术来反转 CSS 中列表顺序。我们不应该这样做,因为它看起来是正确的,但 DOM 的顺序保持不变。在 CSS 中改变顺序对DOM顺序没有影响。

  1. A
  2. B
  3. C

ol {

display: flex;

flex-direction: column-reverse;

}

125c016a86ec8d7207f9db81a96bf792.png

页面上看好像是我们想要的结果,但你按 F12 打开调试模式,检查该 DOM 的顺序,你会我发现 DOM 的顺序是 “ABC”而不是“CBA”的顺序渲染列表。 另外,如果我们复制并粘贴列表,浏览器可能会以其原始顺序“ABC”复制它。

另外我还在 StackOverflow 上找到的另一个非常有创意的解决方案。其结果与Flexbox的解决方案类似,但也有更多的缺点(例如,它会干扰滚动)。

  1. A
  2. B
  3. C

ol {

transform: rotate(180deg);

}

ol > li {

transform: rotate(-180deg);

}

当然这估计在绝望中没办法了,才会这么做,我们最好还是不要这样搞。

本期的分享就到这了,感谢的大家的观看,我们下期分享在见过。

人才们的 【三连】 就是小智不断分享的最大动力,如果本篇博客有任何错误和建议,欢迎人才们留言,最后,谢谢大家的观看。

本文转载自:https://segmentfault.com/a/1190000023100092

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值