html - CSS 网格布局中重叠的行

标签 html css grid-layout css-grid

如何防止页脚行与内容行重叠?

这是我得到的:

enter image description here

body {
	display: grid;
	grid-template-rows: 3.7rem auto auto;
	grid-template-columns: 3rem 3fr 2fr;
}
*[role="banner"] {
	grid-row: 1;
	grid-column: 2/4;
	
	background-color: green;
	height: 3rem;
}
*[role="main"] {
	grid-row: 2;
	grid-column: 2;
	background-color: yellow;
	height: 100px;
}
*[role="contentinfo"] {
	grid-row: 3;
	grid-column: 2/3;
	border-top: 1px solid black;
}
*[role="contentinfo"] img {
	height: 100px;
}
<div role="banner"></div>
<article role="main"><p>Some Text.</p><p>Some more text</p><p>the last text</p></article>
<footer role="contentinfo"><img src="https://s14-eu5.ixquick.com/cgi-bin/serveimage?url=https%3A%2F%2Fdata.motor-talk.de%2Fdata%2Fgalleries%2F0%2F147%2F9424%2F43109894%2Fbild--7008737403287221413.jpg&sp=6a4eaf3bd8ff58ca9d9bba2e3519888e"></footer>

最佳答案

页脚(第 3 行)与文章(第 2 行)重叠,因为文章的高度是固定的:

[role="main"] { height: 100px; }

覆盖您在网格容器上指定的 auto 高度:

grid-template-rows: 3.7rem auto auto

一旦删除 height 规则,重叠就消失了。

body {
	display: grid;
	grid-template-rows: 3.7rem auto auto;
	grid-template-columns: 3rem 3fr 2fr;
}
*[role="banner"] {
	grid-row: 1;
	grid-column: 2/4;
	
	background-color: green;
	height: 3rem;
}
*[role="main"] {
	grid-row: 2;
	grid-column: 2;
	background-color: yellow;
	/* height: 100px; <-------- REMOVE */
}
*[role="contentinfo"] {
	grid-row: 3;
	grid-column: 2/3;
	border-top: 1px solid black;
}
*[role="contentinfo"] img {
	height: 100px;
}
<div role="banner"></div>
<article role="main"><p>Some Text.</p><p>Some more text</p><p>the last text</p></article>
<footer role="contentinfo"><img src="https://s14-eu5.ixquick.com/cgi-bin/serveimage?url=https%3A%2F%2Fdata.motor-talk.de%2Fdata%2Fgalleries%2F0%2F147%2F9424%2F43109894%2Fbild--7008737403287221413.jpg&sp=6a4eaf3bd8ff58ca9d9bba2e3519888e"></footer>

关于html - CSS 网格布局中重叠的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43494960/

相关文章:

javascript - 网站页面的滑动面板

html - CSS 网格重复、动态、水平 div 元素

Java - 异常的 GridLayout 行为

css - Bootstrap Grid System 新行看起来不太好

jquery - 如何显示基于 Html.DropDownList 的 div?

javascript - 在 setTimeout 间隔期间单击另一个按钮时出现错误

c# - HTML anchor 替换为 RegEx

javascript - 如果在 jQuery 中选择了选项,如何显示 div

javascript - jQuery:动画不透明度为 0 然后淡出

css - LESS 类名字符串插值不起作用