html - CSS和元素的高度
问题描述
如何在我的 SPA 应用程序中设置 div-s 的高度,以便满足以下条件(黑色和红色边框仅用于表示目的):
- 黑色边框:其中的所有内容都必须适合屏幕的大小,并且不能进一步扩展 - 垂直滚动只能在 div4 内进行。
- 每个视图中的红色框必须具有相同的高度并对齐(如图所示)。
解决方案
不要使用height
,您只需要一个 flex 布局。
.wrapAll{
height: calc(100vh - 4px);
/* 4px due to borders */
display: flex;
flex-direction: column;
}
[class^=div]{
display: flex;
align-items: center;
justify-content: center;
}
.div1 {
flex-basis: 40px;
flex-shrink: 0;
}
.otherDivs {
flex-grow: 1;
display: flex;
flex-direction: row;
}
.leftBar {
flex-basis: 100px;
flex-shrink: 0;
display: flex;
flex-direction: column;
align-items: stretch;
}
.body{
flex-grow: 1;
display: flex;
}
.div2, .div3, .div4, .div5 {
flex-grow: 1;
flex-shrink: 0;
}
.div4 {
overflow-y: scroll;
}
/* styling */
.wrapAll {
border: 1px solid black;
}
.leftBar {
border: 1px solid red;
}
.body {
border: 1px solid red;
}
.div1 {
background: #719ecf;
}
.div2 {
background: #fdf599;
}
.div3 {
background: #fcf266;
}
.div4 {
background: #6fee99;
}
.div5 {
background: #234fcc;
color: white;
}
body{
margin: 0;
}
<div class="wrapAll">
<div class="div1">div1</div>
<div class="otherDivs">
<aside class="leftBar">
<div class="div2">div2</div>
<div class="div3">div3</div>
<div class="div4">div4</div>
</aside>
<main class="body">
<div class="div5">div5</div>
</main>
</div>
</div>
推荐阅读
- c++ - 使用 QWebView 在本地网络中加载网页
- bash - 默认更改 bash 脚本的目录
- django - 错误:类型对象“库存”没有属性“对象”
- java - Java:参数的值不会改变
- c# - ThreadPool 或 Timers 任务未正确等待
- python - 使用 BeautifulSoup 抓取网站
- android - Android Emulator 不再连接到包服务器的问题
- localization - vert.x 是否提供任何加载本地化文件的方法?像语言环境解析器?
- jquery - 如何在循环中将类添加到 div
- c++ - 将具有数组成员的类传递给使用该数组成员的函数的重载