Почему верхнее поле тела все еще разрушается?

Обычно при схлопывании родительского поля overflow: hidden помогает, но в этой ситуации это не работает. Другие исправления работают нормально padding:0.01px,position absolute. Вы можете объяснить, почему здесь не работает переполнение?

html {
  background: #e3b5a4;
  height: 100%;
}

body {
  background: #d1cfcd;
  width: 960px;
  height: 100%;
  margin: 0px auto;
  overflow: hidden;
}

div {
  text-align: center;
  background: #eee;
  border: 1px solid;
  padding: 10px;
  margin: 10px;
}
<!DOCTYPE html>
<html lang = "en">

<head>
  <meta charset = "UTF-8">
  <title>layout</title>
</head>

<body>
  <div class = "header">Header</div>
  <div class = "navigation">Navigation</div>
  <div class = "leftcontent">Content Left</div>
  <div class = "main-content">Main Content</div>
  <div class = "right-content">Content Right</div>
  <div class = "footer">Footer</div>
</body>

</html>

ссылка на jsfiddle

Вы можете немного подробнее объяснить, что вы имеете в виду? Например, что вы имеете в виду под parent's border collapsing?

Ashley Brown 07.10.2018 18:51

Извините, я имел в виду маржу, а не границу, как это stackoverflow.com/questions/19718634/…

ogbofjnr 07.10.2018 19:46
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Введение в 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. Это простой сайт, ничего вычурного. Основная цель -...
CSS: FlexBox
CSS: FlexBox
Ранее разработчики использовали макеты с помощью Position и Float. После появления flexbox сценарий полностью изменился.
1
2
66
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Это нормальное поведение для полей - просто установите для margin-top для .header значение 0:

html {
  background: #e3b5a4;
  height: 100%;
}

body {
  background: #d1cfcd;
  width: 960px;
  height: 100%;
  margin: 0px auto;
  overflow: hidden;
}

div {
  text-align: center;
  background: #eee;
  border: 1px solid;
  padding: 10px;
  margin: 10px;
}
.header {
  margin-top: 0;
} 
<!DOCTYPE html>
<html lang = "en">

<head>
  <meta charset = "UTF-8">
  <title>layout</title>
</head>

<body>
  <div class = "header">Header</div>
  <div class = "navigation">Navigation</div>
  <div class = "leftcontent">Content Left</div>
  <div class = "main-content">Main Content</div>
  <div class = "right-content">Content Right</div>
  <div class = "footer">Footer</div>
</body>

</html>

Извините за ошибки, может быть, вы меня не правильно поняли. Я хочу, чтобы верхнее поле для первого div также было 10 пикселей, как и везде. Работает, если добавить padding: 0.01px; в тело. И если я добавлю обертку div и сделаю ее overflow: hidden, она тоже работает, но почему overflow: hidden не работает с телом?

ogbofjnr 07.10.2018 19:40
Ответ принят как подходящий

Потому что, если вы не установите значение переполнения, отличное от видимого для элемента html, overflow:hidden, установленный в теле, будет перенесен в область просмотра. Таким образом, он не применяется к элементу body и, следовательно, не может остановить схлопывание поля. Чтобы исправить это, просто установите для элемента html значение auto.

html {
  background: #e3b5a4;
  height: 100%;
  overflow:auto;
}

body {
  background: #d1cfcd;
  width: 960px;
  height: 100%;
  margin: 0px auto;
  overflow: hidden;
}

div {
  text-align: center;
  background: #eee;
  border: 1px solid;
  padding: 10px;
  margin: 10px;
}
<!DOCTYPE html>
<html lang = "en">

<head>
  <meta charset = "UTF-8">
  <title>layout</title>
</head>

<body>
  <div class = "header">Header</div>
  <div class = "navigation">Navigation</div>
  <div class = "leftcontent">Content Left</div>
  <div class = "main-content">Main Content</div>
  <div class = "right-content">Content Right</div>
  <div class = "footer">Footer</div>
</body>

</html>

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