Элемент с краем-маркером имеет поле вне поля для хранения

У меня есть что-то в этом роде:

#div {
   background: green; 
   width: 200px;
   height: 100px;
}

h1 {
   margin-top: 100px;
}

(И, очевидно, есть некоторый HTML-код).

Теперь при просмотре в браузере h1 отображается в самом верху #div, а поле 100px появляется поверх #div.

Может кто-нибудь предложить причину?

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

Ответ 1

Попробуйте вместо этого добавить дополнение. Раньше я видел эту проблему. Если прокладка делает то же самое, попробуйте поместить контейнер div, но #div и h1 затем добавьте маржу. Если вы просто хотите переместить h1 вниз из #div, то отступы - ваш лучший выбор, так как он будет "Нажать h1 дальше в поле #div".

Ответ 2

Это не относится к тегу H1. Это то, что мы называем крахом.

Вы можете найти сообщение об этой теме здесь: http://reference.sitepoint.com/css/collapsingmargins

у вас есть несколько решений:

  • вместо этого используйте дополнение
  • добавить переполнение: auto в родительском div
  • добавить прозрачную верхнюю границу к родительскому div

Ответ 3

Я смог решить эту проблему, выполнив все теги заголовка (h1-h6) display: inline-block;. Как встроенные элементы с полями, они могут переполняться, как это, но как встроенные блоки, они ведут себя немного лучше с другими.