тогда не учитывает свойство направления, которое я установил в селекторе header .nav, и меняет порядок элементов в обратном.
Это ожидаемый результат при изменении направления и наличии inline-block
элементов.Порядок будет изменен.
Поведение с текстом не совсем то же самое, и здесь unicode-bidi
играют его роли.В основном, когда браузер изменит направление, он не будет разбивать текст и менять порядок каждого символа.это будет сделано, только если вы измените unicode-bidi
normal
Элемент не открывает дополнительный уровень внедрения по отношению к двунаправленному алгоритму.Для встроенных элементов неявное переупорядочение 1 работает через границы элемента.
переопределение двунаправленного текста
Это означает, что переупорядочение внутри элемента строгопоследовательность в соответствии со свойством direction; неявная 1 часть двунаправленного алгоритма игнорируется .
Вот пример, чтобы лучше понять и увидеть разницупри наличии дополнительной обертки:
span {
border:1px solid;
}
div {
margin-top:10px;
}
<div style="direction:rtl;">lorem ipsum text</div>
<div style="direction:rtl;">lorem <span>ipsum text</span></div>
<div style="direction:rtl;">lorem <span style="display:inline-block">ipsum text</span></div>
<div style="direction:rtl;unicode-bidi:bidi-override">lorem ipsum text</div>
<div style="direction:rtl;unicode-bidi:bidi-override">lorem <span>ipsum text</span></div>
<div style="direction:rtl;unicode-bidi:bidi-override">lorem <span style="display:inline-block">ipsum text</span></div>
1 Алгоритм состоит из неявной части, основанной на свойствах символа, а также явных элементов управления для вложений и переопределений.CSS 2.1 использует этот алгоритм для достижения правильного двунаправленного рендеринга.Свойства 'direction' и 'unicode-bidi' позволяют авторам указать, как элементы и атрибуты языка документа соответствуют этому алгоритму.
Ссылка: https://www.w3.org/TR/CSS2/visuren.html#direction
Все вышеперечисленное немного сложнее, и использование направления - не лучший способ.Вы можете рассмотреть text-align
с inline-block
:
* {
margin: 0;
padding: 0;
font-family: 'Open Sans', sans-serif;
}
header {
height: 7vh;
width: 100vw;
background-color: #D1C4E9;
line-height: 7vh;
}
header .nav {
margin-right: 3vw;
text-align:right;
}
header .nav a {
display: inline-block;
font-size: 1.25em;
padding: 0 2vw;
text-decoration: none;
color: #6A1B9A;
}
header .nav a:hover {
background-color: #6A1B9A;
color: #D1C4E9;
}
<header>
<div class='nav'>
<a href='#'>Home</a>
<a href='#'>Products</a>
<a href='#'>Services</a>
<a href='#'>About</a>
</div>
</header>
Или используйте flexbox для простого управления выравниванием:
* {
margin: 0;
padding: 0;
font-family: 'Open Sans', sans-serif;
}
header {
height: 7vh;
width: 100vw;
background-color: #D1C4E9;
line-height: 7vh;
}
header .nav {
margin-right: 3vw;
text-align:right;
display:flex;
justify-content:flex-end;
}
header .nav a {
font-size: 1.25em;
padding: 0 2vw;
text-decoration: none;
color: #6A1B9A;
}
header .nav a:hover {
background-color: #6A1B9A;
color: #D1C4E9;
}
<header>
<div class='nav'>
<a href='#'>Home</a>
<a href='#'>Products</a>
<a href='#'>Services</a>
<a href='#'>About</a>
</div>
</header>