html - 2 个 DIV 元素之间的垂直空白

标签 html css

我有 4 个 DIV,我需要将它们全部粘在一起。我在前 2 个 DIV 之间且仅在它们之间有一个空白区域,我不知道为什么。有什么建议和可能的解释吗?我没有任何填充,这让这很烦人。

@font-face {
  font-family: FONT;
  src: url(Montserrat-Regular.ttf);
}
p.title1 {
  font-size: 2.5em;
}
p.title2 {
  font-size: 3em;
}
div.surf1 {
  display: block;
  /*background-image: url("surf1.jpg");*/
  background: #41c3ac;
  background-position: center;
  background-size: cover;
  height: 600px;
}
div.surf2 {
  display: block;
  background: #41c3ac;
  height: 600px;
}
div.surf3 {
  display: block;
  background: #ff6b57;
  height: 600px;
}
div.surf4 {
  display: block;
  background: #8C78B1;
  height: 600px;
}
div.text1 {
  padding-top: 100px;
  color: white;
  text-align: center;
  font-size: 2.5em;
}
div.button {
  text-align: center;
  font-size: 1.5em;
  margin: 0 auto;
  width: 15%;
  padding: 8px;
  border: 2px solid;
  border-color: #e7dd84;
  background-color: rgba(236, 229, 167, 0.2);
  color: #e7dd84;
  transition: 0.35s;
}
div.button:hover {
  background-color: white;
  color: black;
  border-color: white;
  transition: 0.35s;
}
body {
  margin: 0;
  font-family: FONT;
  color: white;
}
<!doctype html>
<html>

<head>
  <title>Welcome</title>
  <link rel="stylesheet" type="text/css" href="style.css">
</head>
<div class="surf1">
  <div class="text1">
    <b>Welcome to smartlearning.com, <br>the place where you can <br>learn and practice English</b>
  </div>
  <br>
  <br>
  <br>
  <br>
  <br>
  <div class="button">
    Go to site
  </div>
</div>
<div class="surf2">
  <p class="title1">Interractive games</p>
  <ul style="font-size: 1.5em">
    <li>We have different types of games you can play, testing your abilities to recognise objects, multiple choise exercices and also putting you to the test of spotting mistakes.</li>
    <li>Those games are designed to help you learn and practice english by combining fun with hard-working.</li>
  </ul>
</div>
<div class="surf3"></div>
<div class="surf4"></div>

<body>
</body>

</html>

最佳答案

嵌套的 p 元素上的默认 margin-topcollapsing vertically ,它实际上在父 .surf2 元素上创建了一个相等的 margin-top(这就是您看到空格的原因)。

根据 the spec ,如果您建立新的 block 格式化上下文,则不会发生这种情况,这意味着一个选项是将 .surf2 元素的 overflow 设置为不同于默认值可见。将其更改为 autohidden 即可解决问题。

.surf2 {
  background: #41c3ac;
  height: 600px;
  overflow: auto;
}

@font-face {
  font-family: FONT;
  src: url(Montserrat-Regular.ttf);
}
p.title1 {
  font-size: 2.5em;
}
p.title2 {
  font-size: 3em;
}
div.surf1 {
  display: block;
  /*background-image: url("surf1.jpg");*/
  background: #41c3ac;
  background-position: center;
  background-size: cover;
  height: 600px;
}
div.surf2 {
  display: block;
  background: #41c3ac;
  height: 600px;
  overflow: auto;
}
div.surf3 {
  display: block;
  background: #ff6b57;
  height: 600px;
}
div.surf4 {
  display: block;
  background: #8C78B1;
  height: 600px;
}
div.text1 {
  padding-top: 100px;
  color: white;
  text-align: center;
  font-size: 2.5em;
}
div.button {
  text-align: center;
  font-size: 1.5em;
  margin: 0 auto;
  width: 15%;
  padding: 8px;
  border: 2px solid;
  border-color: #e7dd84;
  background-color: rgba(236, 229, 167, 0.2);
  color: #e7dd84;
  transition: 0.35s;
}
div.button:hover {
  background-color: white;
  color: black;
  border-color: white;
  transition: 0.35s;
}
body {
  margin: 0;
  font-family: FONT;
  color: white;
}
<!doctype html>
<html>

<head>
  <title>Welcome</title>
  <link rel="stylesheet" type="text/css" href="style.css">
</head>
<div class="surf1">
  <div class="text1">
    <b>Welcome to smartlearning.com, <br>the place where you can <br>learn and practice English</b>
  </div>
  <br>
  <br>
  <br>
  <br>
  <br>
  <div class="button">
    Go to site
  </div>
</div>
<div class="surf2">
  <p class="title1">Interractive games</p>
  <ul style="font-size: 1.5em">
    <li>We have different types of games you can play, testing your abilities to recognise objects, multiple choise exercices and also putting you to the test of spotting mistakes.</li>
    <li>Those games are designed to help you learn and practice english by combining fun with hard-working.</li>
  </ul>
</div>
<div class="surf3"></div>
<div class="surf4"></div>

<body>
</body>

</html>

这只是一种解决方法。有关折叠边距的具体规则,请参阅规范。您也可以简单地删除 p 元素的边距。

关于html - 2 个 DIV 元素之间的垂直空白,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34618788/

相关文章:

jquery - 带有可缩放 div 的粘性页眉和页脚

jquery - 侧边栏应该以与滑入相同的 Action 滑出

php - 通过ajax接收数据,不将数据插入mysql数据库

html - Angular Flickity 改变元素

html - 内联 block 周围的空间

html - 位置粘性结合 z-index

javascript - 强制加载图像以停止闪烁?

html - 使悬停背景具有其标题的链接

html - 如何在 Chrome 中将数字输入重置为默认行为

javascript - 无法获取 HTML ANCHOR + 如何覆盖 anchor 的 .onclick