不借助后台和 JS,只用 CSS 让一个列表编号倒序...

boyanx5个月前技术教程32

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

最终结果类似如下:

  1. C
  2. B
  3. A

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

HTML中的reversed 属性

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

<ol reversed>
  <li>C</li>
  <li>B</li>
  <li>A</li>
</ol>

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

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

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

HTML中的value属性

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

<ol>
  <li value="3">C</li>
  <li value="2">B</li>
  <li value="1">A</li>
</ol>

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

<ol>
  <li value="6">C</li>
  <li value="4">B</li>
  <li value="2">A</li>
</ol>

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

CSS 自定义的 counter()

第三种方式就是使用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);
}

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

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


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

相关文章

css3属性(transform)的一个css3动画小应用

闲言碎语不多讲,咱们说说css3的transform属性:先上效果:效果说明:当鼠标移到a标签的时候,从右上角滑出二维码。实现方法:HTML 代码如下:需要说明的一点是,a链接的跳转需要用javasc...

英伟达GPU被曝严重漏洞,致模型准确率暴跌99.9%

克雷西 henry 发自 凹非寺量子位 | 公众号 QbitAI通过一种名为GPUHammer的攻击方式,可以让GPU上跑的大模型,准确率从80%直接掉到0.02%,可以说是渣都不剩。多伦多大学的研究...

css实现的图片悬停旋转弹出文本框html页面前端源码

大家好,今天给大家介绍一款,css实现的图片悬停旋转弹出文本框html页面前端源码(图1)。送给大家哦,获取方式在本文末尾。当鼠标经过图片的时候,就会激活旋转和文本弹出事件,非常适合用在图片展示的功能...

视频处理小技巧|ffmpeg视频命令行快速旋转视频

拍视频没注意,横屏内容拍成了竖屏,变成这样了:直接用剪映呢,旋转后大小不对,虽然也有办法可以调整,但以后还会用这些视频,所以决定修正原始视频。想起以前用过的强大视频转换命令行工具ffmpeg, 应该会...

如何使用css完成视差滚动效果?(css视角)

视差滚动(Parallax Scrolling)是指多层背景以不同的速度移动,形成立体的运动效果,带来非常出色的视觉体验我们可以把网页解刨成:背景层、内容层、悬浮层使用css形式实现视觉差滚动效果的方...

作为前端工程师必须懂得的33个CSS核心概念

你真的懂CSS吗?层叠样式表(CSS)是网页设计的支柱,能将单调的HTML转变为视觉惊艳的交互界面。要精通CSS,必须理解从基础选择器到动画、响应式设计等高级技巧在内的核心概念。无论你是初学者还是资深...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。