CSS font-variant-numeric — цифри, tabular-nums


Властивість font-variant-numeric дозволяє контролювати стиль відображення чисел на сторінці.

Властивість font-variant-numeric є однією із властивостей у CSS3, які використовуються для ввімкнення різних функцій, пов'язаних зі шрифтом та покращення зовнішнього вигляду тексту на сторінці. У даному випадку властивість застосовується для чисел.

автор: Svitlana

Загальний опис

автор: NagarD

Синтаксис

font-variant-numeric: normal | [ <numeric-figure-values> || <numeric-spacing-values> || <numeric-fraction-values> || ordinal || slashed-zero ]

Властивість font-variant-numeric може отримувати 6 значень:

normal

Вказує, що жодна з наведених нижче функцій не активована.

автор: Svitlana

ordinal

Це ключове слово зумовлює використання спеціальних гліфів для порядкових маркерів.

автор: Svitlana

slashed-zero

Це ключове слово призводить до використання 0 (нуля) з косою рискою всередині символу (перекресленням).

автор: Svitlana

<numeric-figure-values>

lining-nums - дозволяє відображати звичайні цифри.

oldstyle-nums - вмикає відображення старих цифр.

автор: Svitlana

<numeric-spacing-values>

proportional-nums - дозволяє відображати пропорційні цифри.

tabular-nums - вмикає відображення табличних чисел.

автор: Svitlana

<numeric-fraction-values>

diagonal-fractions - активізуює набір фігур, де чисельник і знаменник зменшені і розділені косою лінією.

stacked-fractions - активізує набір фігур, де чисельник і знаменник зменшені, та розділені горизонтальною лінією.

автор: Svitlana

Значення без задання: normal
Наслідує: Так
Анімується: Ні
JavaScript синтаксис: object.style.fontVariantNumeric

Переглядачі

Підтримка: стаціонарні переглядачі
Переглядач Google Chrome Mozilla Firefox Apple Safari Opera Microsoft EDGE Microsoft Internet Explorer
52 34 9.1 39 79
Підтримка: мобільні переглядачі
Переглядач Mobile Google Android Mobile Google Chrome Mobile Mozilla Firefox Mobile Apple Safari
52 52 34 9.3

Приклади

+ запропонувати свій приклад у пісочниці

Цифрові можливості шрифту: tabular-nums робить усі цифри однакової ширини (111 і 888 вирівнюються), slashed-zero перекреслює нуль, щоб не плутати з O. Потрібна підтримка з боку шрифту.

HTML

<p class="prop">Пропорційні: 111 888</p>
<p class="tab">tabular-nums: 111 888</p>
<p class="zero">slashed-zero: 0 проти O</p>

CSS

p {
    font-size: 24px;
}

.tab {
    font-variant-numeric: tabular-nums;
}

.zero {
    font-variant-numeric: slashed-zero;
}
автор: Svitlana

Приклад використання

HTML

<table>
  <tr>
    <th />
    <th style="font-family: 'Raleway'">Raleway</th>
    <th style="font-family: 'Helvetica'">Helvetica</th>
    <th style="font-family: 'Georgia'">Georgia</th>
  </tr>
  <tr class="oldstyle">
    <td class="desc">Oldstyle</td>
    <td style="font-family: 'Raleway'">1234567890</td>
    <td style="font-family: 'Helvetica'">1234567890</td>
    <td style="font-family: 'Georgia'">1234567890</td>
  </tr>
  <tr class="lining">
    <td class="desc">Lining</td>
    <td style="font-family: 'Raleway'">1234567890</td>
    <td style="font-family: 'Helvetica'">1234567890</td>
    <td style="font-family: 'Georgia'">1234567890</td>
  </tr>
  <tr class="tabular">
    <td class="desc">Tabular</td>
    <td style="font-family: 'Raleway'">1234567890</td>
    <td style="font-family: 'Helvetica'">1234567890</td>
    <td style="font-family: 'Georgia'">1234567890</td>
  </tr>

CSS

body {
  font-family: "Raleway";
  font-size: 1em;
  line-height: 10%;
  font-weight: 400;

}

.desc { font-size: 1rem; }

th, td { padding: 1em; }
table { margin: 2em auto; }

.oldstyle {
  font-variant-numeric: oldstyle-nums;
  font-feature-settings: 'onum';
  /* vendor-prefixes */
  -moz-font-feature-settings: 'onum=1';
  -ms-font-feature-settings: 'onum';
  -webkit-font-feature-settings: 'onum';
  -o-font-feature-settings: 'onum';
}

.lining {
  font-variant-numeric: lining-nums;
  font-feature-settings: 'lnum';
  /* vendor-prefixes */
  -moz-font-feature-settings: 'lnum=1';
  -ms-font-feature-settings: 'lnum';
  -webkit-font-feature-settings: 'lnum';
  -o-font-feature-settings: 'lnum';
}

.tabular {
  font-variant-numeric: tabular-nums;
  font-feature-settings: 'tnum';
  /* vendor-prefixes */
  -moz-font-feature-settings: 'tnum=1';
  -ms-font-feature-settings: 'tnum';
  -webkit-font-feature-settings: 'tnum';
  -o-font-feature-settings: 'tnum';
}

table, td{
  border: 1px solid grey;
  border-collapse: collapse;
}
th{
  background: lightgrey;
}
автор: Svitlana

Значення у дії

HTML

<p>Цей приклад показує як працює властивість <code>font-variant-numeric</code>. Спробуйте вимкнути/ввімкнути перемикач, щоб змінити відображення цифр нижче. Зверніть увагу, що властивість може не підтримуватися Вашим браузером.</p>

<div class="inputs">
  <input id="normal" checked name="font-variant-numeric" type="radio"/>
  <label for="normal">normal</label>
  <message for="normal">Без задання. Використовуються стандартні гліфи.</message>
  
  <input id="slashed-zero" name="font-variant-numeric" type="radio"/>
  <label for="slashed-zero">slashed-zero</label>
  <message for="slashed-zero">Це ключове слово призводить до використання нуля з перекресленням.</message>
</div>

<p id="message">Без задання. Використовуються стандартні гліфи.</p>

<hr>

<p id="block"><span>0000</span></p>

CSS

* {
  box-sizing: border-box;
  padding: 0;
}

body {
  font-family: 'Helvetica';
}

#block {
  font-size: 7em; 
  text-align: center;
}

message {
  display: none;
}

JS

const message = document.querySelector('#message');

document.querySelectorAll('.inputs input').forEach((el) => el.addEventListener('change', function () {

  var messageText = document.querySelector("message[for='" + this.id + "']");
  message.textContent = messageText?.textContent ?? '';

  document.querySelectorAll('#block').forEach((n) => n.style.setProperty('font-variant-numeric', this.id));

}));
автор: Svitlana

Приклад використання

HTML

<div>
  Без задання: <span>1234567890</span>
</div>

<div class="oldstyle">
  Старий стиль: <span>1234567890</span>
</div>

CSS

body {
  font-family: 'Helvetica';
  font-size: 2em;
  color: #444;
}

span {
  color: #000;
  font-weight: 700;
  font-size: 2.4em;
}

.oldstyle {
  font-variant-numeric: oldstyle-nums;
}
автор: Svitlana

Ліва колонка примусово використовує пропорційні цифри, права — табличні. У правій усі цифри однакової ширини, тож розряди стоять рівно один під одним. Якщо різниці не видно, обраний шрифт має лише один набір цифр — це очікувано.

HTML

<div class="col p">
    <div>1 111,00</div>
    <div>8 888,00</div>
    <div>1 818,00</div>
</div>
<div class="col t">
    <div>1 111,00</div>
    <div>8 888,00</div>
    <div>1 818,00</div>
</div>

CSS

.col {
    display: inline-block;
    margin-right: 30px;
    padding: 8px;
    font-size: 22px;
    background: #eef2f7;
}
.p {
    font-variant-numeric: proportional-nums;
}
.t {
    font-variant-numeric: tabular-nums;
}
автор: NagarD

Коментарі

Коментарів ще немає — будьте першим!

Відповідь для

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле веде сходинками (розділ → тип → сторінка), а хибний ключ підкреслить хвилею.
[[!sandbox/S0oh1hBm]] Живий приклад окремим рядком — саме вікно результату. Той самий ключ зі знаком !: наберіть [[! і дійдіть сходинками до потрібної сторінки, список покаже її приклади.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

Увійдіть — коментар з'явиться одразу, без капчі й очікування перевірки.

Правка
Зворотний зв'язок
Вхід