Что ж, очевидное быстрое решение - просто изменить порядок элементов в списке:
<ul>
<li>a</li>
<li>b</li>
<li class="nav">d</li>
<li class="nav">c</li>
</ul>
Я предполагаю, что всякий раз, когда механизм рендеринга встречает элемент с float:right
, он толкает этот элемент как можно дальше вправо. Таким образом, он сначала сталкивается с буквой «c» и толкает все вправо, затем встречает букву «d» и толкает ее как можно дальше вправо, но «c» уже занимает самое правое место, поэтому "остается слева от него. По сути, элементы располагаются в порядке справа налево, а не слева направо.
Другим вариантом, я думаю, было бы разделить элементы на два списка и просто применить стиль float: right
ко второму списку в целом (то есть к элементу <ul>
).
<ul>
<li>a</li>
<li>b</li>
</ul>
<ul class="nav">
<li>c</li>
<li>d</li>
</ul>
и
ul li {
display: inline;
}
ul.nav {
float: right;
}
Таким образом, сам список будет перемещаться по правому краю, но порядок элементов в нем не будет обратным.