0 added
0 removed
Original
2026-01-01
Modified
2026-02-26
1
<p><em>Это перевод статьи Massimo Artizzu<a>The new (and old) CSS units you've never heard about</a>.</em></p>
1
<p><em>Это перевод статьи Massimo Artizzu<a>The new (and old) CSS units you've never heard about</a>.</em></p>
2
<p>JavaScript<em>быстро</em>эволюционирует в последнее время, но не то, чтобы другие языки веб-разработки стояли на месте.</p>
2
<p>JavaScript<em>быстро</em>эволюционирует в последнее время, но не то, чтобы другие языки веб-разработки стояли на месте.</p>
3
<p>CSS тоже развивается, и скорее всего<a>Houdini</a>совершит новый прорыв в CSS, но его, к сожалению, адаптируют далеко не все. Мы всё так же проходим процесс совещаний специалистов, которые создают новые спецификации и всё такое… Не так, как с непрерывными изменениями стандарта TC39, но всё же.</p>
3
<p>CSS тоже развивается, и скорее всего<a>Houdini</a>совершит новый прорыв в CSS, но его, к сожалению, адаптируют далеко не все. Мы всё так же проходим процесс совещаний специалистов, которые создают новые спецификации и всё такое… Не так, как с непрерывными изменениями стандарта TC39, но всё же.</p>
4
<p>Вы вероятно слышали но, скорее всего - нет! о единицах измерения в CSS, речь о которых пойдёт в этой статье. И нет, не о тех, "старых" vw и vh (которые предстоит объяснить тем, кто меньше разбирается в CSS).</p>
4
<p>Вы вероятно слышали но, скорее всего - нет! о единицах измерения в CSS, речь о которых пойдёт в этой статье. И нет, не о тех, "старых" vw и vh (которые предстоит объяснить тем, кто меньше разбирается в CSS).</p>
5
<p>Ниже перечислены новые единицы CSS, которые будут детально описаны в готовящемся<a>CSS Value и Units Module Level 4</a>.</p>
5
<p>Ниже перечислены новые единицы CSS, которые будут детально описаны в готовящемся<a>CSS Value и Units Module Level 4</a>.</p>
6
<h4>lh и rlh</h4>
6
<h4>lh и rlh</h4>
7
<p>lh равно<strong>текущей высоте строки</strong>, и это может стать очень полезной штукой при вычислении высоты текстового контента. К сожалению, ни один браузер не поддерживает это.</p>
7
<p>lh равно<strong>текущей высоте строки</strong>, и это может стать очень полезной штукой при вычислении высоты текстового контента. К сожалению, ни один браузер не поддерживает это.</p>
8
<p>rlh, с другой стороны, эквивалентна тому, чем rem выступает для em: высоте строки главного элемента.</p>
8
<p>rlh, с другой стороны, эквивалентна тому, чем rem выступает для em: высоте строки главного элемента.</p>
9
<h4>vi and vb</h4>
9
<h4>vi and vb</h4>
10
<p>Еще одно интересное дополнение, подобно vw и vh - это процентное соотношение, относительно области просмотра (viewport). А именно:</p>
10
<p>Еще одно интересное дополнение, подобно vw и vh - это процентное соотношение, относительно области просмотра (viewport). А именно:</p>
11
<ul><li>vi составляет 1% от размера области просмотра (viewport) в направлении<em>inline</em>;</li>
11
<ul><li>vi составляет 1% от размера области просмотра (viewport) в направлении<em>inline</em>;</li>
12
<li>vb составляет 1% от размера области просмотра (viewport) в направлении <em>block</em>.</li>
12
<li>vb составляет 1% от размера области просмотра (viewport) в направлении <em>block</em>.</li>
13
</ul><p>Что представляют из себя эти<a>оси "inline" и "block"</a>? Для языков с горизонтальным написанием, как английский или арабский, они соответствуют горизонтальному и вертикальному направлению, что делает эти две единицы измерения эквивалентными vw и vh.</p>
13
</ul><p>Что представляют из себя эти<a>оси "inline" и "block"</a>? Для языков с горизонтальным написанием, как английский или арабский, они соответствуют горизонтальному и вертикальному направлению, что делает эти две единицы измерения эквивалентными vw и vh.</p>
14
<p>Но для языков с вертикальным написанием (приходит в голову японский), эти направления<em>взаимозаменяются</em>.</p>
14
<p>Но для языков с вертикальным написанием (приходит в голову японский), эти направления<em>взаимозаменяются</em>.</p>
15
<p>Мы использовали такое различие в CSS с самого начала (настройка display, например), поэтому теперь они используются соответственно, поскольку создаются дополнительные спецификации CSS.</p>
15
<p>Мы использовали такое различие в CSS с самого начала (настройка display, например), поэтому теперь они используются соответственно, поскольку создаются дополнительные спецификации CSS.</p>
16
<p>Жаль, что *ни один браузер, как всегда, не поддерживает эти единицы измерения 👎.</p>
16
<p>Жаль, что *ни один браузер, как всегда, не поддерживает эти единицы измерения 👎.</p>
17
<h4>ic</h4>
17
<h4>ic</h4>
18
<p>В отношении интернационализации, ic- это восточный эквивалент ch, он представляет собой размер символа 0. ic - размер CJK (китайского / японского / корейского ) идеограма (символа) 水 ("вода", U + 6C34), поэтому его можно грубо интерпретировать как "количество идеограмов.</p>
18
<p>В отношении интернационализации, ic- это восточный эквивалент ch, он представляет собой размер символа 0. ic - размер CJK (китайского / японского / корейского ) идеограма (символа) 水 ("вода", U + 6C34), поэтому его можно грубо интерпретировать как "количество идеограмов.</p>
19
<p>Но что это за "размер"? Это так называемая<a>"advance measure"</a>(предупредительная мера): если текст лежит горизонтально - это ширина, в противном случае - это высота. Обратите внимание, что та же концепция <em>применима и к ch</em>!</p>
19
<p>Но что это за "размер"? Это так называемая<a>"advance measure"</a>(предупредительная мера): если текст лежит горизонтально - это ширина, в противном случае - это высота. Обратите внимание, что та же концепция <em>применима и к ch</em>!</p>
20
<p>Ииии всё ещё нет поддержки браузерами.</p>
20
<p>Ииии всё ещё нет поддержки браузерами.</p>
21
<h4>cap</h4>
21
<h4>cap</h4>
22
<p>Это измерение так называемой <em>cap-height</em>.<a>Спецификация</a>определяет высоту капса как "приблизительно равную высоте заглавной латинской буквы". Существует алгоритм для её вычисления, даже для шрифтов, которые не содержат латинских букв, но я не буду объяснять подробности.</p>
22
<p>Это измерение так называемой <em>cap-height</em>.<a>Спецификация</a>определяет высоту капса как "приблизительно равную высоте заглавной латинской буквы". Существует алгоритм для её вычисления, даже для шрифтов, которые не содержат латинских букв, но я не буду объяснять подробности.</p>
23
<p>Ещё и потому, что мы не можем использовать их в каком-либо браузере.</p>
23
<p>Ещё и потому, что мы не можем использовать их в каком-либо браузере.</p>
24
<h3>Теперь немного конкретики</h3>
24
<h3>Теперь немного конкретики</h3>
25
<p>Давайте посмотрим на спецификацию постарше (Level 3), потому что хоть она и должна чаще использоваться и иметь широкую поддержку, в ней всё ещё присутствуют малоизвестные моменты...</p>
25
<p>Давайте посмотрим на спецификацию постарше (Level 3), потому что хоть она и должна чаще использоваться и иметь широкую поддержку, в ней всё ещё присутствуют малоизвестные моменты...</p>
26
<h4>turn и его братья</h4>
26
<h4>turn и его братья</h4>
27
<p>Этот параграф для разогрева, поскольку эта единица должна быть более известна, чем остальные.</p>
27
<p>Этот параграф для разогрева, поскольку эта единица должна быть более известна, чем остальные.</p>
28
<p>Мы используем deg для поворота элементов при transform, так? Один turn эквивалентен 360 deg. Всё очень просто. Полезно для анимации (особенно для вращения на 360 градусов) и значений прогрессии, вычисляемых в JavaScript.</p>
28
<p>Мы используем deg для поворота элементов при transform, так? Один turn эквивалентен 360 deg. Всё очень просто. Полезно для анимации (особенно для вращения на 360 градусов) и значений прогрессии, вычисляемых в JavaScript.</p>
29
<p>Но подождите, есть ещё кое-что! grad и rad тоже имеют свои значения, и да, как вы догадываетесь - это грады (сотая часть прямого угла) и радианы (угол, длина дуги которого равна радиусу окружности), соответственно.</p>
29
<p>Но подождите, есть ещё кое-что! grad и rad тоже имеют свои значения, и да, как вы догадываетесь - это грады (сотая часть прямого угла) и радианы (угол, длина дуги которого равна радиусу окружности), соответственно.</p>
30
<p>И все они поддерживаются всеми браузерами (IE с 9-й версии), и я не особо вижу необходимость в градах, а вот радианы могут быть использованы напрямую из тригонометрических функций JavaScript.</p>
30
<p>И все они поддерживаются всеми браузерами (IE с 9-й версии), и я не особо вижу необходимость в градах, а вот радианы могут быть использованы напрямую из тригонометрических функций JavaScript.</p>
31
<h4>Q</h4>
31
<h4>Q</h4>
32
<p>Эта единица должна поддерживаться всеми браузерами, потому что она - часть Level 3. Но на факте поддерживает её только Firefox, и с относительно недавней 49 версии (сентябрь 2016).</p>
32
<p>Эта единица должна поддерживаться всеми браузерами, потому что она - часть Level 3. Но на факте поддерживает её только Firefox, и с относительно недавней 49 версии (сентябрь 2016).</p>
33
<p>Так что это, Q? Это всего лишь <strong>0.25мм</strong>- четверть милиметра.</p>
33
<p>Так что это, Q? Это всего лишь <strong>0.25мм</strong>- четверть милиметра.</p>
34
<p>И почему она нам вдруг могла понадобиться? По всей видимости она использовалась в печатной типографике. В Японии, где не используются пункты (points) и другие империальные единицы (и это 👍 для меня).</p>
34
<p>И почему она нам вдруг могла понадобиться? По всей видимости она использовалась в печатной типографике. В Японии, где не используются пункты (points) и другие империальные единицы (и это 👍 для меня).</p>
35
<h4>Соотношение сторон (Aspect ratio)</h4>
35
<h4>Соотношение сторон (Aspect ratio)</h4>
36
<p>Не совсем единица измерения, потому что единица должна содержать чистое значение, но всё же это измерение. Соотношение сторон специально выражено через положительные целые числа, разделённые / (слеш или "солидус", говоря языком Unicode).</p>
36
<p>Не совсем единица измерения, потому что единица должна содержать чистое значение, но всё же это измерение. Соотношение сторон специально выражено через положительные целые числа, разделённые / (слеш или "солидус", говоря языком Unicode).</p>
37
<p>Где мы можем это использовать? В медиа-запросах конечно! Например:</p>
37
<p>Где мы можем это использовать? В медиа-запросах конечно! Например:</p>
38
<p>Хорошие новости: это поддерживается любым браузером! Ура! 🎉</p>
38
<p>Хорошие новости: это поддерживается любым браузером! Ура! 🎉</p>
39
<h4>Hz and kHz</h4>
39
<h4>Hz and kHz</h4>
40
<p>…Стоп, что? Как мы учили в универе, разве это не единицы<em>частоты</em>? Как они связаны с CSS?</p>
40
<p>…Стоп, что? Как мы учили в универе, разве это не единицы<em>частоты</em>? Как они связаны с CSS?</p>
41
<p>Ответ на эти вопросы: да, - это единицы частоты и никакого отношения к CSS они не имеют, потому что в свойствах CSS в данный момент ничто не требует частоты. Но единицы частоты были сформулированы. Почему?</p>
41
<p>Ответ на эти вопросы: да, - это единицы частоты и никакого отношения к CSS они не имеют, потому что в свойствах CSS в данный момент ничто не требует частоты. Но единицы частоты были сформулированы. Почему?</p>
42
<p>Возможно, для использования в будущем, на случай спецификации модуля таргетированного на синтез речи или какой-то акустический вывод. Уже разрабатывается<a>CSS Aural style sheets module</a>, он использует свойства, которые применяют частоту, но этот модуль ещё никто не видел.</p>
42
<p>Возможно, для использования в будущем, на случай спецификации модуля таргетированного на синтез речи или какой-то акустический вывод. Уже разрабатывается<a>CSS Aural style sheets module</a>, он использует свойства, которые применяют частоту, но этот модуль ещё никто не видел.</p>
43
<p>Этот модуль был вытеснен новым, совместимым со <a>Speech Synthesis Markup Language (SSML)</a>, который откликается на имя<a>CSS Speech</a>. Он всё ещё в разработке и содержит свойства (вроде voice-pitch), которые предусматривают использование частот, но он не готов.</p>
43
<p>Этот модуль был вытеснен новым, совместимым со <a>Speech Synthesis Markup Language (SSML)</a>, который откликается на имя<a>CSS Speech</a>. Он всё ещё в разработке и содержит свойства (вроде voice-pitch), которые предусматривают использование частот, но он не готов.</p>
44
<p>Вполне понятно, почему ни один браузер не поддерживает единицы измерения частоты: мы бы в любом случае не смогли бы их использовать!</p>
44
<p>Вполне понятно, почему ни один браузер не поддерживает единицы измерения частоты: мы бы в любом случае не смогли бы их использовать!</p>