【发布时间】:2020-11-03 06:50:21
【问题描述】:
我想要做的是有一个固定的页眉,固定的页脚,中间有一个部分。如果内容不适合屏幕,则中间部分将获得滚动条。在经历了很多挫折之后,我设法在不使用表格的情况下正确地渲染了主布局:
.main-container {
width: 50%;
height: 98vh;
flex-direction: column;
display: flex;
}
.main-container .main-view {
width: 100%;
overflow-y: scroll;
flex: 1 1 auto;
}
.main-container .top-bar {
width: 100%;
flex: 0 0 1em;
text-align: center;
}
.main-container .bottom-bar {
width: 100%;
flex: 0 0 1em;
}
.special {
display: inline;
}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
</head>
<body>
<div class="main-container">
<div class="main-container top-bar">
SOMETHING FIXED HERE
</div>
<div class="main-container main-view">
<span class="special">Lorem</span><span class="special">ipsum</span> dolor sit amet, consectetur adipiscing elit. Pellentesque magna tellus, dictum et luctus ac, laoreet vel justo. Cras at pretium lectus. Lorem ipsum dolor sit amet, consectetur
adipiscing elit. Suspendisse potenti. Maecenas tincidunt efficitur neque, eu elementum purus tincidunt vel. Nunc id dolor bibendum, pharetra erat in, pretium lorem. Donec vitae nulla et lacus porta scelerisque. Praesent blandit, nibh nec vulputate
semper, arcu odio scelerisque velit, at rhoncus lacus dui luctus sapien. Donec venenatis erat libero, vitae lobortis velit finibus ut.
</div>
<div class="main-container bottom-bar" id="bottom-bar">
SOMETHING FIXED HERE
</div>
</div>
</body>
</html>
然而,中间区域的元素只有在没有被任何类型的标签包裹时才能正确呈现。一旦我将它们包装在 div 或 span 中,浏览器(至少是 Chrome)就会坚持让每个标签占据整行。它们并没有像我预期的那样并排显示。
我已尝试创建一个“特殊”类,如上例所述,我已将其应用于 div 和 span。两者都给出相同的结果:“Lorem”和“ipsum”出现在各自的行上,而不是并排出现。我尝试了其他堆栈溢出问题中有关某些相关主题的各种事情,包括“float:left”和使用“display:flex”的额外嵌套。
我只是想应用一些样式,也许让一些项目可点击。为此,它们需要被包裹在 div 或 span 之类的东西中。任何人都知道我怎样才能让它并排呈现它们而不是每个标签在自己的行上?
【问题讨论】: