Пробел между div

У меня проблема, когда между двумя div появляется пробел, и я не знаю, что это вызывает. По сути, это всего лишь один блок с тремя меньшими блоками фиксированной высоты внутри него. Пространство находится между разделами block-title и block-content. Между block-content и block-footer нет места

Вот HTML:

<div class = "block buy">
  <div class = "block-title">
    <span class = "line-1">Title</span>
  </div>
  <div class = "block-content">
    <h2></h2>
  </div>
  <div class = "block-footer">
  </div>
</div>

А вот CSS:

.block {
  width: 300px;
  margin-left: auto;
  margin-right: 15px;
  display: inline-block;
  vertical-align: top;
  margin-top: 35px;
  font-weight: 400;
  text-align: left;
}
.block-title {
  height: 70px;
  padding: 20px;
}
.block-content {
  width: 100%;
  height: 255px;
  text-align: center;
}

.block-footer {
  height: 75px;
}
.block-title,
.block-content,
.block-footer {
  color: #fff;
}
.line-1 {
  font-weight: 300;
  font-size: 20px;
  display: block;
}
.buy > * {
  background-color: #558F38;
}

Живой JSfiddle здесь: JSFiddle

Есть идеи, почему это происходит?

Редактировать

Итак, причина появления пробела в том, что поле элементов <h2> выходит за пределы содержащего div. Почему его нет в div?

проверьте свой <h2> </h2>, проблемы исходят оттуда

Matt 03.08.2018 15:18
Улучшение производительности загрузки с помощью 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
1
77
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

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

У вашего h2 есть маржа, которая выходит из контейнера и выталкивает внешние div. Удалите h2 или удалите его край.

Спасибо, это была проблема. Но почему запас <h2> выходит за пределы содержащего <div>?

martin36 03.08.2018 15:24

Это единственный пост, который действительно отвечает на вопрос.

Rob 03.08.2018 15:27

Поля иногда ведут себя нелогично, вы можете узнать больше об этих причудах из developer.mozilla.org/en-US/docs/Web/CSS/CSS_Box_Model/…. В вашем примере запас, необходимый для отталкивания чего-либо, он не касается родительских div, но братья и сестры / дяди и т. д. Все допустимы, чтобы нажимать и вызывать поведение, которое вы видели.

Alexander De Sousa 03.08.2018 15:35

@ martin36 Также Google за "схлопывающиеся поля".

Rob 03.08.2018 15:40

Спасибо я сделаю это

martin36 03.08.2018 16:11

добавить этот курс или удалить

from second div
h2 {
    margin: 0;
}

.block {
    width: 300px;
    margin-left: auto;
    margin-right: 15px;
    display: inline-block;
    vertical-align: top;
    margin-top: 35px;
    font-weight: 400;
    text-align: left;
}
.block-title {
    height: 70px;
    padding: 20px;
}
.block-content {
    width: 100%;
    height: 255px;
    text-align: center;
}
.block-footer {
    height: 75px;
}
.block-title, .block-content, .block-footer {
    color: #fff;
}
.line-1 {
    font-weight: 300;
    font-size: 20px;
    display: block;
}
.buy > * {
    background-color: #558F38;
}
h2 {
    margin: 0;
}
<div class = "block buy">
  <div class = "block-title">
    <span class = "line-1">Title</span>
  </div>
  <div class = "block-content">
    <h2></h2>
  </div>
  <div class = "block-footer">
  </div>
</div>

Вопрос в том, почему, а не как это исправить.

Rob 03.08.2018 15:27

@rob h2 имеет маржу, которая выходит из контейнера и выталкивает внешние блоки div.

Ankit Jaiswal 03.08.2018 15:32

Да. Я знаю это. Вы должны были указать это в своем ответе, а не в качестве комментария.

Rob 03.08.2018 15:34

@rob, но только вы хотите знать "Почему?"

Ankit Jaiswal 03.08.2018 15:36

Вы не читали вопрос. Вопрос спрашивает почему, а не как это исправить.

Rob 03.08.2018 15:36

@ Жесты Роба более чем достаточно для мудрого человека

Ankit Jaiswal 03.08.2018 17:08

U можно заменить display: inline-block на display: inline-grid. Это решает проблему.

.block {
    width: 300px;
    margin-left: auto;
    margin-right: 15px;
    display: inline-grid;
    vertical-align: top;
    margin-top: 35px;
    font-weight: 400;
    text-align: left;
}

Вопрос в том, почему, а не как это исправить.

Rob 03.08.2018 15:28

Спасибо, похоже, работает. Почему это работает, а не display: inline-block?

martin36 03.08.2018 15:28

В вашем css вы можете добавить:

h2{
     margin-bottom:0px;
}

Вопрос в том, почему, а не как это исправить.

Rob 03.08.2018 15:28

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