CSS: display: flex против display: поведение заполнения блоков - PullRequest
0 голосов
/ 08 января 2019

Пожалуйста, посмотрите на https://jsbin.com/jodorazone/1/edit?html,css,output

Если я установлю родителя на display: block, учитывается только padding детей. Если установлено значение display: flex, дочерний элемент отображается вместе с padding внутри родительского элемента padding.

Почему он так себя ведет?

1 Ответ

0 голосов
/ 08 января 2019

Это потому, что span является элементом inline по умолчанию и заполнение сверху / снизу не влияет на высоту. Если вы хотите установить отступы, просто установите span display: block. Справка: https://www.w3.org/TR/CSS2/visudet.html#inline-non-replaced

body {
  margin: unset;
}

button, div {
  display: block; 
  width: 100%;
  justify-content: center;
  align-items: center;
  padding: 12px;
  border: 1px solid black;
}

button span,
div span {
  /* if button, div is set to display: block, their (parent) padding isn't factored in */
  padding: 10px;
  display: block;
}
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>JS Bin</title>
</head>
<body>
<div><span>div</span></div>
  <button><span>button</span></button>
</body>
</html>

О display: flex Поведение:

Отображаемое значение гибкого элемента блокируется: если указано отображение входящего дочернего элемента элемента, генерирующего гибкий контейнер это значение на уровне строки, оно вычисляется до его эквивалента на уровне блока. (См. CSS2.1§9.7 [CSS21] и CSS Display [CSS3-DISPLAY] для получения подробной информации о этот тип преобразования отображаемого значения.)

Ссылка: https://www.w3.org/TR/css-flexbox-1/#flex-containers

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...