Здесь есть 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
, который позволит вам немного перемещать символы в упорядоченный мода. Установите фиксированную ширину контейнера, а затем разместите их достаточно, чтобы они были из коробки. Наконец, используйте text-shadow
для проецирования одного символа за раз.
Я знаю, это может быть утомительно (и немного глупо), но это отчасти работает:)
Но вы хотели это с да sh, для этого используйте псевдоэлемент, такой как ::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>