gpt4 book ai didi

html - 没有额外 'divs' 的 CSS 布局

转载 作者:太空宇宙 更新时间:2023-11-04 11:58:20 24 4
gpt4 key购买 nike

我发现自己在整个堆中使用以下布局,但令我恼火的是它不是很语义化。

http://plnkr.co/edit/qMx9S0?p=preview

我真正想要的是

<body>
<h1>Hi</h1>
<nav> Nav content</nav>
<main> Application</main>
</body>

根据我的实验,如果没有恼人的“容器 div”,就无法实现这一点。最糟糕的是,这种模式可能会在应用程序内部进一步向下发生,(用 say section 替换 main)。

我尝试过使用表格布局、flexbox、 float 等。我试图保持语义,以便我可以随意移动内容。 (例如,受 flexboxes 排序的启发)。

我通过使用带包装的 flexbox 来接近,将“标题”设置为 100%,这样它就可以包装了,虽然这有效,但我遇到了标题或 h1 首先没有使用内容调整大小的情况,而是一些任意计算使用 flexbox,导致它很大。

http://plnkr.co/edit/HJFUqqA6b4ldBBkgDXV6?p=preview

尝试根据其内容调整 h1 的大小 align-self:flex-start 会导致它在其后插入一堆空白。

我想要的几乎就像我想象的 CSS 的网格布局模块是什么,但似乎并没有在任何地方实现。

更新:

它让我恼火的部分原因是它的存在纯粹是为了支持这种布局。这个更新的 plunk 显示了它

http://plnkr.co/edit/rJgrYM?p=preview

在这里,我要在侧面使用全长导航栏,标题位于“主要”内容之上。从语义上讲,它们都是一样的,只是布局不同,但请注意,我必须更改 div 包裹的内容。这在很大程度上很糟糕,需要 html 错误更改的样式/布局更改让人感觉非常不干净。

最佳答案

我通过将正文用作表格为您提供了这个解决方案。

h1 显示为 table-caption。因此它显示在表格上方,不包含在它的高度中。你需要给它一个固定的高度(以 px、em、% 等为单位)并在 body 的高度中对其进行补偿。

在这种情况下,我为标题设置了 40 像素的固定高度,并使用 calc() 对其进行了补偿。方法。请注意它是 compatibility .

html {
height: 100%;
}
body {
display: table;
width: 100%;
height: calc( 100% - 40px );
}
h1 {
display: table-caption;
height: 40px;
background: lightblue;
}
nav {
display: table-cell;
width: 20%;
background: lightgreen;
}
main {
display: table-cell;
width: 80%;
background: lightcyan;
}

JSFiddle Demo

关于html - 没有额外 'divs' 的 CSS 布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30025375/

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