Почему второй div перемещается на другую строку, даже если для обоих из них установлено значение display:inline-block?

#html #css #positioning

#HTML #css #позиционирование

Вопрос:

Я немного боюсь использовать значения с плавающей запятой, поскольку я еще не понял, как очистить значения с плавающей запятой и все хаки, которые есть в Интернете в отношении этого действия, поэтому я использовал display:inline-block для размещения двух divs встроенным способом. Их контейнер имеет

 width:auto;
max-width:900px;
 

и каждый из divs имеет

 display:inline-block;
width: 450px;
 

Теперь, что бы я ни делал, второй div всегда переходит на другую строку прямо под первым div.

Вот код: http://codepen.io/anon/pen/xgtFd

Я уже изменил ширину двух разделов, например

 width:440px;
 

но это не помогло. Тем не менее, второй div немного «не на месте». Это странно, потому что я создавал веб-сайт и использовал практически тот же подход к своему заголовку, что и в этом проекте. Пожалуйста, помогите мне определить проблему.

Я был бы рад любой помощи.

Ответ №1:

Ширина слишком велика.

Уменьшите навигацию примерно до 446px, и они вернутся в строку.

Почему 444px вместо 450 пикселей? Две причины:

  1. Ваша граница занимает 2 пикселя.
  2. Между <div> тегами в вашей разметке есть пробелы, что отражается на рендеринге. Если вы хотите, чтобы он мог увеличить его до 450 пикселей, поместите закрывающий тег div и следующий открывающий тег div рядом, вот так: </div><div id="nav">

Если вы хотите сохранить границу и установить ширину в 450 пикселей, тогда вам следует проверить box-sizing и использовать box-sizing: border-box; .

Редактировать:
Чтобы решить ваши проблемы с выравниванием по вертикали, вам необходимо применить vertical-align: top; к элементам div (разделениям навигации и логотипа).

И ul не центрируется, потому что, когда вы применяете display:block к нему, он заполняет всю ширину. Таким образом, вы могли бы либо центрировать содержимое div с text-align: center помощью on ul , либо вы могли бы сделать ul display: inline-block .

Комментарии:

1. Даже когда я уменьшаю ширину второго div, например, до 440 пикселей, он действительно находится на правой стороне, но перемещается немного вниз, как если бы во втором div был верхний край: codepen.io/anon/pen/yktrB . Граница была там только для визуализации пространства, занимаемого каждым из элементов. Кроме того, почему ul не центрируется внутри навигационного контейнера, когда я добавил display:block и margin: 0 auto; в ul?

2. Кто-нибудь хочет помочь? 🙂

3. @Danny_Student — Я обновил ответ, чтобы учесть ваши комментарии.

4. Спасибо, Кейл! Извините, что снова беспокою, но нужно ли мне устанавливать оболочку таблицы, которая будет окружать эти два элемента, когда я использую параметр и значение vertical-align: top