css - 如何将样式(使用 CSS) "20201231123456"设置为 "20201231-123456"?

标签 css

“20201231123456”是版本标识符,在页面元素中显示为静态文本。视觉解析相当困难,我想知道是否可以使用纯 CSS 将其拆分为日期和时间组件;也就是不需要修改HTML源码中的实际值?

我尝试过搜索,但我得到的结果要么是 2011 年的结果,说这是不可能的,但有人正在研究它,要么结果表明将每个 Angular 色都放在自己的范围内。

这个看似简单的想法有现代解决方案吗?

奖励: 更复杂的是,这会与其他东西一起进入一个长表 - 一些版本标识符是 5 位数字而不是日期时间,但它们显示在相同类型的 HTML 元素。 HTML 元素的样式能否同时适应这两种格式,使“54321”保持原样,但“20201231123456”仍变为“20201231-123456”?

最佳答案

这里有一个纯 CSS 解决方案,它适用于长(14 个字符)和短值(小于 14 个字符):

div {
  font-family: monospace, monospace;
  width: 15ch;
  overflow: hidden;
  letter-spacing: 20ch;
  text-shadow: 
    /* the date */
    -20ch 0, -40ch 0, -60ch 0, -80ch 0, -100ch 0, -120ch 0, -140ch 0,
    /* the time */
    -159ch 0, -179ch 0, -199ch 0, -219ch 0, -239ch 0, -259ch 0;
}
<div>20201231123456</div>

<div>12345</div>

这个想法是使用等宽字体(所有字符的宽度相同)和 ch 单元,这将允许您以 orderly 的方式稍微移动字符。为容器设置一个固定的宽度,然后将它们隔开,使它们开箱即用。最后,使用 text-shadow 一次转换一个字符。

我知道,这可能很乏味(而且有点傻),但它确实有效 :)

但你想用破折号,为此,使用像 ::before::after:

这样的伪元素

div {
  font-family: monospace, monospace;
  width: 19ch;
  overflow: hidden;
  position: relative;
  letter-spacing: 20ch;
  text-shadow: 
    /* the date */
    -20ch 0, -40ch 0, -60ch 0, -80ch 0, -100ch 0, -120ch 0, -140ch 0,
    /* the time */
    -159ch 0, -179ch 0, -199ch 0, -219ch 0, -239ch 0, -259ch 0;
}

div::before {
  content: "-";
  position: absolute;
  left: 8ch;
}
<div>20201231123456</div>


现在最重要的是:使用框的伪元素绘制线条和冒号以完全格式化日期。尽管那样它不适用于较小的日期,但仅适用于较长的日期:

div {
  font-family: monospace, monospace;
  width: 19ch;
  overflow: hidden;
  position: relative;
  letter-spacing: 20ch;
  text-shadow: 
    /* the date */
    -20ch 0, -40ch 0, -60ch 0, -79ch 0, -99ch 0, -118ch 0, -138ch 0,
    /* the time */
    -157ch 0, -177ch 0, -196ch 0, -216ch 0, -235ch 0, -255ch 0;
}

div::before {
  content: "-:";
  position: absolute;
  text-shadow: 3ch 0, -12ch 0, -9ch 0;
  left: 4ch;
}
<div>20201231123456</div>

关于css - 如何将样式(使用 CSS) "20201231123456"设置为 "20201231-123456"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60738730/

相关文章:

html - Angular/ng-bootstrap - 旋转木马箭头定制

javascript - 如何在 wordpress 上移动 iframe?

javascript - 如何用边框半径显示焦点的效果..我试过了。我想让它缩小

ruby-on-rails - 输入上方的 Rails simple_form 标签

html - CSS 列表样式具有随机空间

css - 剪辑路径不适用于 chrome

javascript - 拆分和编辑表单提交的时间线

javascript - Bootstrap carousel-control 正在获取图像

JQuery .height() 没有按预期工作

asp.net - CSS Problems : Advertise over 2 divs, 布局问题