Конфликты вертикального выравнивания CSS

Я хотел бы полностью понять, что происходит, когда возникают конфликты в расположении базовой линии и разные vertical-align в соседних строчных элементах. Я пробовал тестировать это на более сложных сценариях, но, короче говоря, базовая линия перемещается вверх или вниз в зависимости от того, какой элемент идет первым, и я не могу найти в документации ответа на то, как разрешаются эти конфликты.

Демо-версия JSFiddle

.container {
  color: white;
  background-color: black;
  width: 160px;
  border: 4px solid black;
}

.foo,
.bar {
  display: inline-block;
  width: 60px;
  height: 60px;
}

.foo {
  background-color: orange;
  vertical-align: top;
}

.bar {
  background-color: yellowgreen;
  vertical-align: bottom;
}
<div class = "container">
  A
  <!-- swap foo with bar -->
  <div class = "foo">
    B
  </div>
  <div class = "bar">
    C
  </div>
</div>
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
1
0
65
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

На самом деле однозначного ответа нет. Из Спецификации:

Если они выровнены «сверху» или «снизу», они должны быть выровнены так, чтобы минимизировать высоту линейного блока. Если такие блоки достаточно высокие, существует несколько решений, и CSS 2.2 не определяет положение базовой линии линейного блока.

Как вы можете прочитать, у нас может быть несколько решений, то есть несколько базовых показателей, и спецификация не определяет, какое из них использовать.

Это случай вашего примера, и если вы протестируете свой код в разных браузерах, вы не получите одинаковый базовый показатель.

Chrome выбери верх

Firefox выбирает низ

Другие вопросы по теме