css - 对齐弹性父项列表中的子项
问题描述
我正在尝试做一个非常简单的两列布局,这让我很难过。我仍在学习 flex 布局的艺术,所以我确信我缺少一些简单的东西。我想要一个 s 的垂直列表<div>
,每个列表都是一个带有两个 child<div>
的 flexbox。第一个孩子的宽度因内容而异。第二个孩子是flex-grow: 1
,我希望这些项目在父母组中左对齐。相反,第一个孩子的大小适合,第二个孩子在右边靠着它。
#resultsList {
display: flex;
flex-direction: column;
}
.result {
display: flex;
align-items: flex-start;
justify-content: flex-start;
}
.result-text {
flex: 1;
}
<div id="resultsList">
<div class="result">
<div class="result-line">Line 147</div>
<div class="result-text">Blah blah</div>
</div>
<div class="result">
<div class="result-line">Line 223</div>
<div class="result-text">Resukt 2</div>
</div>
<div class="result">
<div class="result-line">Line 445</div>
<div class="result-text">Quick brown fox</div>
</div>
</div>
我尝试了许多对齐、对齐等组合,但我总是得到相同(或更差)的结果。
解决方案
可以,然后呢:
这里有很多弹性,所以基本原则是:
main-container
包含所有内容,将其显示为flex
. 的固定宽度600px
。sub-container
是每个弹性项目,显示为column
.first-container
是固定宽度(在这种情况下:150px
)和flex-grow: 1;
content
没有 flex grow 属性,因此只有其内容的宽度。padder
有一个flex-grow
属性,所以它会占用剩余的空间。second-container
占据容器的其余部分。
剩下的只是使用边框。在适用的情况下,您可以border-{top|bottom|left|right}
设置为无,因此看起来好像该框已扩展。尝试使用 chrome 开发工具查看每个组件的宽度。
.main-container {
width: 600px;
display: flex;
flex-direction: column;
}
.sub-container {
display: flex;
}
.first-container {
border: 1px solid black;
border-right: none;
flex-grow: 1;
display: flex;
max-width: 150px;
}
.content {
border-right: 1px solid black;
padding: 10px;
}
.padder {
flex-grow: 1;
}
.second-container {
border: 1px solid black;
border-left: none;
flex-grow: 2;
padding: 10px;
}
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" type="text/css" href="test.css">
</head>
<body>
<div class="main-container">
<div class="sub-container">
<div class="first-container">
<div class="content">
<p>text</p>
</div>
<div class="padder"></div>
</div>
<div class="second-container">
<p>text</p>
</div>
</div>
<div class="sub-container">
<div class="first-container">
<div class="content">
<p>sample text</p>
</div>
<div class="padder"></div>
</div>
<div class="second-container">
<p>text</p>
</div>
</div>
<div class="sub-container">
<div class="first-container">
<div class="content">
<p>more sample text</p>
</div>
<div class="padder"></div>
</div>
<div class="second-container">
<p>text</p>
</div>
</div>
</div>
<script type="text/javascript" src="app.js"></script>
</body>
</html>
推荐阅读
- c# - 在 3D 单人游戏项目中,如何将对象放置在相机前方一定距离处?
- amazon-web-services - AWS Cloudformation:有没有办法捕获 Glue ARN 以用于阶跃函数?
- android - AOSP:在 /data 目录上写入文件
- matplotlib - 如何通过 matplotlib 在 spyder3 中绘图?
- java - 如何在java中将二进制有效负载(文件)转换为字节[]?
- ios - iOS 拖放。如何在拖动时用自定义视图替换单元格
- c++ - 编写 gtest 验证类是否为空
- javascript - Firebase 云消息传递 - JS SDK 中的 getToken() 错误
- android - Android Arcore Plane Tracker 目标
- python - 在 bash 和 python 之间保持 oracle DB 连接