Свойство CSS `writing-mode`
Базовая поддержка Широко доступно
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и во многих версиях браузеров. Она доступна во всех браузерах с марта 2017 года.
Свойство writing-mode CSS определяет, располагаются ли строки текста горизонтально или вертикально, а также направление потока текста.
Попробуйте
writing-mode: horizontal-tb;
writing-mode: vertical-lr;
writing-mode: vertical-rl;
writing-mode: sideways-rl;
writing-mode: sideways-lr;
<section class="default-example" id="default-example">
<div class="transition-all" id="example-element">
<div>1</div>
<div>2</div>
<div>3</div>
<div>4</div>
</div>
</section>
#example-element {
border: 1px solid #c5c5c5;
padding: 0.75em;
width: 80%;
max-height: 300px;
}
#example-element > div {
background-color: rgb(0 0 255 / 0.2);
border: 3px solid blue;
margin: 10px;
}
Синтаксис
/* Keyword values */ writing-mode: horizontal-tb; writing-mode: vertical-rl; writing-mode: vertical-lr; writing-mode: sideways-rl; writing-mode: sideways-lr; /* Global values */ writing-mode: inherit; writing-mode: initial; writing-mode: revert; writing-mode: revert-layer; writing-mode: unset;
Значения
Это свойство задаётся одним из следующих ключевых слов:
-
horizontal-tb - Для письменностей
ltrсодержимое располагается горизонтально слева направо. Для письменностейrtlсодержимое располагается горизонтально справа налево. Следующая горизонтальная строка размещается под предыдущей. -
vertical-rl - Для письменностей
ltrсодержимое располагается вертикально сверху вниз, а следующая вертикальная строка размещается слева от предыдущей. Для письменностейrtlсодержимое располагается вертикально снизу вверх, а следующая вертикальная строка размещается слева от предыдущей. -
vertical-lr - Для письменностей
ltrсодержимое располагается вертикально сверху вниз, а следующая вертикальная строка размещается справа от предыдущей. Для письменностейrtlсодержимое располагается вертикально снизу вверх, а следующая вертикальная строка размещается справа от предыдущей. -
sideways-rl - Для письменностей
ltrсодержимое располагается вертикально сверху вниз. Для письменностейrtlсодержимое располагается вертикально снизу вверх. Все глифы, даже в вертикальных письменностях, повёрнуты боком вправо. -
sideways-lr - Для письменностей
ltrсодержимое располагается вертикально снизу вверх. Для письменностейrtlсодержимое располагается вертикально сверху вниз. Все глифы, даже в вертикальных письменностях, повёрнуты боком влево. -
lr - Устарело, кроме документов SVG1. В CSS используйте вместо этого
horizontal-tb. -
lr-tb - Устарело, кроме документов SVG1. В CSS используйте вместо этого
horizontal-tb. -
rl - Устарело, кроме документов SVG1. В CSS используйте вместо этого
horizontal-tb. -
tb - Устарело, кроме документов SVG1. В CSS используйте вместо этого
vertical-lr. -
tb-lrУстарело - Устарело, кроме документов SVG1. В CSS используйте вместо этого
vertical-lr. -
tb-rl - Устарело, кроме документов SVG1. В CSS используйте вместо этого
vertical-rl.
Описание
Свойство writing-mode определяет, располагаются ли строки текста горизонтально или вертикально. Оно задаёт направление потока блоков — направление, в котором располагаются блочные контейнеры, а также направление потока строчного содержимого внутри блочного контейнера. Таким образом, оно также определяет порядок блочного содержимого.
На направление потока в горизонтальных письменностях также влияет направленность этой письменности: слева направо (ltr, как в английском и большинстве других языков) или справа налево (rtl, как в иврите или арабском).
Если свойство задаётся для всего документа, его следует задавать для корневого элемента (элемента html в HTML-документах).
Формальное определение
| Начальное значение | horizontal-tb |
|---|---|
| Применяется к | всем элементам, кроме групп строк таблицы, групп столбцов таблицы, строк таблицы и столбцов таблицы |
| Наследуется | да |
| Вычисленное значение | как задано |
| Тип анимации | Не анимируется |
Формальный синтаксис
writing-mode =
horizontal-tb |
vertical-rl |
vertical-lr |
sideways-rl |
sideways-lr
Примеры
Использование нескольких режимов письма
В этом примере демонстрируются все режимы письма: каждый из них показан на тексте на разных языках.
HTML
HTML представляет собой <table>, в каждой строке которого показан режим письма, а в столбце — текст на разных письменностях, использующий этот режим.
<table>
<caption>
Using multiple writing modes
</caption>
<thead>
<tr>
<th>Value</th>
<th>Vertical script</th>
<th>Horizontal (LTR) script</th>
<th>Horizontal (RTL) script</th>
<th>Mixed script</th>
</tr>
</thead>
<tbody>
<tr class="text1">
<th>horizontal-tb</th>
<td>我家没有电脑。</td>
<td>Example text</td>
<td>מלל ארוך לדוגמא</td>
<td>1994年に至っては</td>
</tr>
<tr class="text2">
<th>vertical-lr</th>
<td>我家没有电脑。</td>
<td>Example text</td>
<td>מלל ארוך לדוגמא</td>
<td>1994年に至っては</td>
</tr>
<tr class="text3">
<th>vertical-rl</th>
<td>我家没有电脑。</td>
<td>Example text</td>
<td>מלל ארוך לדוגמא</td>
<td>1994年に至っては</td>
</tr>
<tr class="experimental text4">
<th>sideways-lr</th>
<td>我家没有电脑。</td>
<td>Example text</td>
<td>מלל ארוך לדוגמא</td>
<td>1994年に至っては</td>
</tr>
<tr class="experimental text5">
<th>sideways-rl</th>
<td>我家没有电脑。</td>
<td>Example text</td>
<td>מלל ארוך לדוגמא</td>
<td>1994年に至っては</td>
</tr>
</tbody>
</table>
<p class="notice">
Your browser does not support the <code>sideways-lr</code> or
<code>sideways-rl</code> values.
</p>
CSS
table {
border-collapse: collapse;
}
td,
th {
border: 2px black solid;
padding: 4px;
}
th {
background-color: lightgray;
}
.experimental {
display: none;
}
.notice {
display: table-row;
font-weight: bold;
text-align: center;
}
@supports (writing-mode: sideways-lr) {
.experimental {
display: table-row;
}
.notice {
display: none;
}
}
CSS, задающий направление содержимого, выглядит так:
.text1 td {
writing-mode: horizontal-tb;
}
.text2 td {
writing-mode: vertical-lr;
}
.text3 td {
writing-mode: vertical-rl;
}
.text4 td {
writing-mode: sideways-lr;
}
.text5 td {
writing-mode: sideways-rl;
}
Результат
Использование writing-mode с преобразованиями
Если ваш браузер не поддерживает sideways-lr, можно использовать transform в качестве обходного решения, чтобы добиться аналогичного эффекта с учётом направления письменности. Эффект vertical-rl такой же, как у sideways-lr, поэтому для письменностей слева направо преобразование не требуется. В некоторых случаях для достижения эффекта sideways-lr достаточно повернуть текст на 180 градусов, но глифы шрифта могут быть не предназначены для поворота, что может привести к неожиданному позиционированию или отображению.
HTML
<table>
<caption>
Using writing-mode with transforms
</caption>
<thead>
<tr>
<th>Vertical LR</th>
<th>Vertical LR with transform</th>
<th>Sideways LR</th>
<th>Only rotate</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<span class="vertical-lr">我家没有电脑。</span>
<span class="vertical-lr">Example text</span>
</td>
<td>
<span class="vertical-lr rotated">我家没有电脑。</span>
<span class="vertical-lr rotated">Example text</span>
</td>
<td>
<span class="sideways-lr">我家没有电脑。</span>
<span class="sideways-lr">Example text</span>
</td>
<td>
<span class="only-rotate">我家没有电脑。</span>
<span class="only-rotate">Example text</span>
</td>
</tr>
</tbody>
</table>
CSS
.vertical-lr {
writing-mode: vertical-lr;
}
.rotated {
transform: rotate(180deg);
}
.sideways-lr {
writing-mode: sideways-lr;
}
.only-rotate {
inline-size: fit-content;
transform: rotate(-90deg);
}
table {
border-collapse: collapse;
}
td,
th {
border: 2px black solid;
padding: 4px;
}
th {
background-color: lightgray;
}
span {
display: inline-block;
width: 1.5em;
text-align: center;
}
Результат
Спецификации
| Спецификация |
|---|
| Режимы письма CSS, уровень 4 # block-flow |
| Масштабируемая векторная графика (SVG) 2 # WritingModeProperty |
Совместимость с браузерами
| Настольные компьютеры | Мобильные устройства | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome для Android | Firefox для Android | Opera для Android | Safari в iOS | Samsung Internet | WebView для Android | WebView в iOS | |
writing-mode |
48
8
|
12
12
|
41В Firefox 42 добавлена поддержка двунаправленных сценариев и сценариев с письмом справа налево в вертикальных режимах. |
35
15
|
10.1
5.1
|
48
18
|
41В Firefox для Android 42 добавлена поддержка двунаправленных сценариев и сценариев с письмом справа налево в вертикальных режимах. |
35
14
|
10.3
5
|
5.0
1.0
|
48
3
|
10.3
5
|
horizontal-tb |
48 |
12 |
43 |
35 |
9 |
48 |
43 |
35 |
9 |
5.0 |
48 |
9 |
lr |
48 |
12 |
43 |
35 |
10.1 |
48 |
43 |
35 |
10.3 |
5.0 |
48 |
10.3 |
lr-tb |
48 |
12 |
43 |
35 |
10.1 |
48 |
43 |
35 |
10.3 |
5.0 |
48 |
10.3 |
rl |
48 |
12 |
43 |
35 |
10.1 |
48 |
43 |
35 |
10.3 |
5.0 |
48 |
10.3 |
rl-tb |
48 |
12 |
43 |
35 |
10.1 |
48 |
43 |
35 |
10.3 |
5.0 |
48 |
10.3 |
sideways-lr |
132 |
132 |
43 |
117 |
18.4 |
132 |
43 |
87 |
18.4 |
29.0 |
132 |
18.4 |
sideways-rl |
132 |
132 |
43 |
117 |
18.4 |
132 |
43 |
87 |
18.4 |
29.0 |
132 |
18.4 |
tb |
48 |
12 |
43 |
35 |
10.1 |
48 |
43 |
35 |
10.3 |
5.0 |
48 |
10.3 |
tb-rl |
48 |
12 |
43 |
35 |
10.1 |
48 |
43 |
35 |
10.3 |
5.0 |
48 |
10.3 |
vertical-lr |
48 |
12 |
43 |
35 |
9 |
48 |
43 |
35 |
9 |
5.0 |
48 |
9 |
vertical-rl |
48 |
12 |
43 |
35 |
9 |
48 |
43 |
35 |
9 |
5.0 |
48 |
9 |
vertical_oriented_form_controls |
124Поддерживается для элементов select, button, textarea, текстовых полей ввода, ползунков диапазона, meter и progress.121–124Поддерживается для элементов select, button, textarea и текстовых полей ввода.119–121Поддерживается только для элементов select и button. |
124Поддерживается для элементов select, button, textarea, текстовых полей ввода, ползунков диапазона, meter и progress.121–124Поддерживается для элементов select, button, textarea и текстовых полей ввода.119–121Поддерживается только для элементов select и button. |
120 |
110Поддерживается для элементов select, button, textarea, текстовых полей ввода, ползунков диапазона, meter и progress.107–110Поддерживается для элементов select, button, textarea и текстовых полей ввода.105–107Поддерживается только для элементов select и button. |
17.4
16.5–17.4Поддерживаются только ползунки диапазона, текстовые поля ввода и текстовые области |
124Поддерживается для элементов select, button, textarea, текстовых полей ввода, ползунков диапазона, meter и progress.121–124Поддерживается для элементов select, button, textarea и текстовых полей ввода.119–121Поддерживается только для элементов select и button. |
120 |
82Поддерживается для элементов select, button, textarea, текстовых полей ввода, ползунков диапазона, meter и progress.81–82Поддерживается для элементов select, button, textarea и текстовых полей ввода.79–81Поддерживается только для элементов select и button. |
17.4
16.5–17.4Поддерживаются только ползунки диапазона, текстовые поля ввода и текстовые области |
27.0Поддерживается для элементов select, button, textarea, текстовых полей ввода, ползунков диапазона, meter и progress.25.0–27.0Поддерживается для элементов select, button, textarea и текстовых полей ввода. |
124Поддерживается для элементов select, button, textarea, текстовых полей ввода, ползунков диапазона, meter и progress.121–124Поддерживается для элементов select, button, textarea и текстовых полей ввода.119–121Поддерживается только для элементов select и button. |
17.4
16.5–17.4Поддерживаются только ползунки диапазона, текстовые поля ввода и текстовые области |
|---|
См. также
directionunicode-biditext-orientationtext-combine-upright- Логические свойства CSS
- модуль режимов письма CSS
- Атрибут SVG
writing-mode - Создание вертикальных элементов управления формы
- Работа с текстом, имеющим разные направления письма
- Стилизация вертикального текста (китайский, японский, корейский и монгольский) на W3.org (2022)
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Properties/writing-mode