gpt4 book ai didi

html - float div 和绝对定位 div 下方的 div 会导致额外的边距 - 为什么?

转载 作者:可可西里 更新时间:2023-11-01 13:24:53 24 4
gpt4 key购买 nike

我在绝对定位的 div(标题)下方设置了一个左浮动的 div(导航)。除了左侧 float 的 div,我还有另一个 div(文章),其边距比 float div 的宽度稍大(通常用于两列布局)。导航和文章都有 4em 的上边距(标题的高度为 3em)导航 div 的位置有 4em 的额外边距。我可以解决这个问题,但我的问题是:为什么要额外 margin 。如果我省略标题的绝对定位,它看起来像我期望的:标题 - 边距 - 导航和文章在一行。代码:

 * {
box-sizing: border-box;
}

body { /*schalte voreinstellung Browser aus */
margin: 0px;
padding: 0px;
}
header {
position: absolute;
top: 1px;
left: 0px;
height: 3em;
width: 100%;
padding: 10px;
border: 1px solid blue;
border-radius: 0.5em;
background-color: silver;
}
nav {
float: left;
width: 17em; /*breite relativ zum Buchstaben "m" in der aktuellen Schriftgroesse */
border: 1px dashed red; /*Rand und padding jedoch in pixel */
margin-top: 4em;
padding: 5px;
}


article {
margin: 4em 1em 0em 18em; /* top right bottom left */
padding: 0px 10px;
border: 1px dashed red;
min-width: 15em;
}
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
<title>Layout</title>
</head>
<body>
<header>
headline - position fixed w&uuml;rde sie fest halten
</header>
<nav>
<h2> Navigation </h2>
<ul>
<li> hier die links </li>
</ul>
</nav>

<article>
<h1>CSS-basierte Layouts</h1>
<h2>2 Spalten</h2>
die ziemlich leer sind
</article>

</body>
</html>

最佳答案

当您绝对定位标题时,布局的其余部分就好像标题从未存在过一样。

因此,在不考虑标题的情况下,我们正在研究三个主要布局元素:正文、导航和文章。

发生的事情是,因为标题现在与布局的其余部分无关,文章成为主体的第一个流入子项,结果它的顶部边距与主体的顶部边距一起折叠(参见 Why does this CSS margin-top style not work? ) .这导致body被压低,文章的border边缘与body齐平,看起来文章根本没有调整过。

另一方面,导航是 float 的,因此不在流中。 float 元素的边距不会与其祖先一起折叠,因为 float 元素不在流中。因此它的边距边缘与正文齐平,而不是文章中的边框边缘。

当您停止定位页眉时,它仍然是正文的第一个流入子元素。文章的上边距现在与标题的下边距折叠,而不是正文的上边距。由于标题实际上没有任何边距,而且导航和文章的顶部边距相等,这导致后两者相互对齐。

关于html - float div 和绝对定位 div 下方的 div 会导致额外的边距 - 为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40405403/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com