文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

一个有意思的方案:不借助后台和 JS ,只用 CSS 让一个列表编号倒序,你会怎么做?

2024-12-11 17:43

关注

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

最终结果类似如下:

C

B

A

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

HTML中的reversed 属性

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

  1.  
  2.   
  3. C
  4.  
  5.   
  6. B
  7.  
  8.   
  9. A
  10.  
 

 

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

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

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

HTML中的value属性

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

    1.  
    2.   "3">C
    3.  
    4.   "2">B
    5.  
    6.   "1">A
    7.  
     

 

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

    1.  
    2.   "6">C
    3.  
    4.   "4">B
    5.  
    6.   "2">A
    7.  
     

 

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

CSS 自定义的 counter()

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

    1.  
    2.   
    3. C
    4.  
    5.   
    6. B
    7.  
    8.   
    9. A
    10.  
     
  1. ol { 
  2.   counter-reset: my-custom-counter 4; 
  3.   list-style: none; 
  4.  
  5. ol li { 
  6.   counter-increment: my-custom-counter -1; 
  7.  
  8. ol li::before { 
  9.   content: counter(my-custom-counter) ". "
  10.   color: #f23c50; 
  11.   font-size: 2.5rem; 
  12.   font-weight: bold; 

 

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

  1. "counter-reset: my-custom-counter {{ items.length + 1 }}"
  2.   
  3. C
  4.  
  5.   
  6. B
  7.  
  8.   
  9. A
  10.  
 
  • 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.  
      2.   
      3. A
      4.  
      5.   
      6. B
      7.  
      8.   
      9. C
      10.  
       
    1. ol { 
    2.   display: flex; 
    3.   flex-direction: column-reverse; 

     

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

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

      1.  
      2.   
      3. A
      4.  
      5.   
      6. B
      7.  
      8.   
      9. C
      10.  
       
    1. ol { 
    2.   transform: rotate(180deg); 
    3.  
    4. ol > li { 
    5.   transform: rotate(-180deg); 

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

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

    作者:Manuel Matuzovic 译者:前端小智 来源:matuzo 原文:https://dzone.com/articles/html-5-reverse-ordered-lists

    本文转载自微信公众号「大迁世界」,可以通过以下二维码关注。转载本文请联系大迁世界公众号。

     

    来源:大迁世界内容投诉

    免责声明:

    ① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

    ② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

    软考中级精品资料免费领

    • 历年真题答案解析
    • 备考技巧名师总结
    • 高频考点精准押题
    • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

      难度     813人已做
      查看
    • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

      难度     354人已做
      查看
    • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

      难度     318人已做
      查看
    • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

      难度     435人已做
      查看
    • 2024年上半年系统架构设计师考试综合知识真题

      难度     224人已做
      查看

    相关文章

    发现更多好内容

    猜你喜欢

    AI推送时光机
    位置:首页-资讯-后端开发
    咦!没有更多了?去看看其它编程学习网 内容吧
    首页课程
    资料下载
    问答资讯