"Почему этот мр-авто применим даже к кнопке за пределами ul?"
Это потому, что Bootstrap 4 Navbar - это flexbox (дисплей: flex). Поэтому содержимое Navbar (бренд, div и кнопка переключения navbar-collapse) естественным образом отображаются слева направо, но не расширяется, чтобы заполнить ширину. Однако для navbar-collapse
было установлено значение width:100%
, что заставляет его заполнять всю ширину контейнера Navbar.
Здесь я добавил цвет фона, чтобы вы могли видеть, как navbar-collapse
заполняет ширину navbar
:
Также отображается navbar-collapse
: flex, поэтому это также дети следуют правилам flexbox . Дети вашего navbar-collapse
- это navbar-nav
ul и кнопка. При использовании авто-полей на дочерних элементах flexbox они сдвигаются влево, вправо или в центр. Когда вы добавляете mr-auto
(автоматическое поле справа) к navbar-nav
ul, она нажимает кнопку до упора вправо. Когда он вынут, предметы возвращаются к естественному прилипанию к левой стороне.
Здесь я добавил цвет размытия фона к navbar-nav
, чтобы вы могли видеть, как он придерживается левой стороны navbar-collapse
:
Итак, если вы визуализируете авто-поле справа от navbar-nav
, то имеет смысл нажимать кнопку вправо.
Демо: https://www.codeply.com/go/oTjFSG1g29
Также см .:
Bootstrap 4 выравнивает элементы панели навигации вправо
Bootstrap NavBar с выровненными по левому, среднему или правому краю элементами