`padding` и `border` для отображаемых встроенных элементов

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

Диапазоны от span1 до span12 выравниваются на основе текста. Но у них все еще есть странная граница/отступы вокруг них, которые перекрывают окружающий контент.

Я пытаюсь выяснить основу для поведения в спецификации CSS. Вот что говорит спецификация: https://www.w3.org/TR/CSS22/box.html#margin-свойства

These properties apply to all elements, but vertical margins will not have any effect on non-replaced inline elements.

Итак, margin-top и margin-bottom специально упоминаются как noop. Но спецификация ничего не говорит об отступах и границах для встроенных элементов. Это выведено откуда-то еще?

На самом деле здесь написано обратное: https://www.w3.org/TR/CSS22/visuren.html#inline-formatting

A line box is always tall enough for all of the boxes it contains. [...] Line boxes are stacked with no vertical separation (except as specified elsewhere) and they never overlap.

Что предполагает, что границы не должны были пересекаться.

Но и:

The boxes may be aligned vertically in different ways: their bottoms or tops may be aligned, or the baselines of text within them may be aligned.

что предполагает поведение, которое можно ожидать.

По сути, я пытаюсь понять, как это работает, основываясь на спецификации, даже если она явно определяет ее как неопределенную. FWIW, и Chrome, и Firefox ведут себя одинаково.

  .div1 {
  border: 10px solid black;
}

.div2 {
  border: 10px solid rgba(7, 154, 70, 0.5);
}

span:nth-child(2n) {
  border: 50px solid rgba(255, 0, 0, 0.5);
  background: rgba(0, 0, 255, 0.5);
  padding: 20px;
  margin: 10px;
  vertical-align: baseline;
}
<div class = "div1">
    Div1
</div>
<div class = "div2">
    Div2
    <span>Span1</span><span>Span2</span><span>Span3</span><span>Span4</span>
    <span>Span5</span><span>Span6</span><span>Span7</span><span>Span8</span>
    <span>Span9</span><span>Span10</span><span>Span11</span><span>Span12</span>
</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 страниц, которые помогут...
0
0
32
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

The vertical padding, border and margin of an inline, non-replaced box start at the top and bottom of the content area, and has nothing to do with the 'line-height'. But only the 'line-height' is used when calculating the height of the line box.

https://www.w3.org/TR/CSS22/visudet.html#inline-non-replaced

padding, margin и border существуют, но не влияют на расчет высоты строки. Маржа не видна, в отличие от границы заполнения, но она существует. Это можно заметить при осмотре элемента.

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