做者:Manuel Matuzovic
译者:前端小智
来源:matuzo
点赞再看,微信搜索
【大迁世界】 关注这个没有大厂背景,但有着一股向上积极心态人。本文
GitHub
https://github.com/qq44924588... 上已经收录,文章的已分类,也整理了不少个人文档,和教程资料。
我正在作一个项目,其中有一个倒序的列表。列表建立时间降序排序的,这里我想在语义和视觉上都能体现出来(让列表显示对应的编号,编号越大表示是最新的)。网上作了一些研究,找到了一些有趣的解决办法,有些很好,有些就不那么好了。html
最终结果相似以下:前端
接着,咱们来看看有哪些实现的方式。git
reversed
属性简单,最直接的解决方案是HTML中的reversed
属性。github
<ol reversed> <li>C</li> <li>B</li> <li>A</li> </ol>
reversed
属性是一个布尔属性,reversed
属性规定列表顺序为降序 (9, 8, 7...),而不是升序 (1, 2, 3...)。浏览器
reversed
属性除了 IE 大多数的浏览器都支持,若是你只想要解决方法,用这种就够了。微信
若是你好奇还有哪些实现方式,请继续阅读。工具
另外一种方法就是使用 value 属性:flex
<ol> <li value="3">C</li> <li value="2">B</li> <li value="1">A</li> </ol>
这种方式虽然比较冗长,但咱们对列表也有更多控制权,好比,咱们还能够这样操做:spa
<ol> <li value="6">C</li> <li value="4">B</li> <li value="2">A</li> </ol>
最好仍是不要这样作,由于跳过数字可能会让用户感到困惑。debug
第三种方式就是使用CSS的 counter
计算器, 要倒序计数器的顺序,咱们有两件事要作:将计数器重置为非0的值,并以负数递增计数器。
<ol> <li>C</li> <li>B</li> <li>A</li> </ol>
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; }
若是咱们不知道确切的列表数量,则能够将counter-reset
属性移到HTML中:
<ol style="counter-reset: my-custom-counter {{ items.length + 1 }}"> <li>C</li> <li>B</li> <li>A</li> </ol>
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顺序没有影响。
<ol> <li>A</li> <li>B</li> <li>C</li> </ol>
ol { display: flex; flex-direction: column-reverse; }
页面上看好像是咱们想要的结果,但你按 F12 打开调试模式,检查该 DOM 的顺序,你会我发现 DOM 的顺序是 “ABC”而不是“CBA”的顺序渲染列表。 另外,若是咱们复制并粘贴列表,浏览器可能会以其原始顺序“ABC”
复制它。
另外我还在 StackOverflow 上找到的另外一个很是有创意的解决方案。其结果与Flexbox的解决方案相似,但也有更多的缺点(例如,它会干扰滚动)。
<ol> <li>A</li> <li>B</li> <li>C</li> </ol>
ol { transform: rotate(180deg); } ol > li { transform: rotate(-180deg); }
固然这估计在绝望中没办法了,才会这么作,咱们最好仍是不要这样搞。
本期的分享就到这了,感谢的你们的观看,咱们下期分享在见过。
人才们的 【三连】 就是小智不断分享的最大动力,若是本篇博客有任何错误和建议,欢迎人才们留言,最后,谢谢你们的观看。
代码部署后可能存在的BUG无法实时知道,过后为了解决这些BUG,花了大量的时间进行log 调试,这边顺便给你们推荐一个好用的BUG监控工具 Fundebug。
原文:https://dzone.com/articles/ht...
文章每周持续更新,能够微信搜索 【大迁世界 】 第一时间阅读,回复 【福利】 有多份前端视频等着你,本文 GitHub https://github.com/qq449245884/xiaozhi 已经收录,欢迎Star。