html - 不使用百分比水平分布 3 列容器的内部 Div?- 柔性
问题描述
我想知道是否有更好的方法可以使用 flex 在父 div(水平)内均匀地分隔三个 div。这是我所拥有的:
.container {
display: flex;
}
.left-div, .middle-div, .right-div {
display: flex;
justify-content: center;
width: 33.3%;
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Demo</title>
</head>
<body>
<div class="container">
<div class="left-div">
Left
</div>
<div class="middle-div">
Middle
</div>
<div class="right-div">
Right
</div>
</div>
</body>
</html>
如您所见,我将每个 child-div / column 设置为width: 33.3%
- 是否有一个 CSS 属性会自动强制它们跨越其父级的 100% 宽度,而不使用百分比?
如果我摆脱width: 33%
,我会得到这个:
.container {
display: flex;
}
.left-div, .middle-div, .right-div {
display: flex;
justify-content: center;
/*width: 33.3%;*/
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Demo</title>
</head>
<body>
<div class="container">
<div class="left-div">
Left
</div>
<div class="middle-div">
Middle
</div>
<div class="right-div">
Right
</div>
</div>
</body>
</html>
我也尝试将父 div 设置为justify-content: space-between;
,但现在这会强制内部 div 的内容与左对齐(对于左 div)或右对齐(对于右 div):
.container {
display: flex;
justify-content: space-between;
}
.left-div, .middle-div, .right-div {
display: flex;
justify-content: center;
/*width: 33.3%;*/
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Demo</title>
</head>
<body>
<div class="container">
<div class="left-div">
Left
</div>
<div class="middle-div">
Middle
</div>
<div class="right-div">
Right
</div>
</div>
</body>
</html>
我知道将每个子 div 设置为width: 33%
有效,但有更好的方法吗?例如,如果我想要 7 列,就不必计算百分比?
解决方案
flex-grow
可能是你需要的。
CSS 属性设置弹性项目主要尺寸的
flex-grow
弹性增长因子。它指定应该将弹性容器中的剩余空间分配给项目(弹性增长因子)。
.container {
display: flex;
}
.left-div, .middle-div, .right-div {
display: flex;
justify-content: center;
flex-grow:1;
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Demo</title>
</head>
<body>
<div class="container">
<div class="left-div">
Left
</div>
<div class="middle-div">
Middle
</div>
<div class="right-div">
Right
</div>
</div>
</body>
</html>
推荐阅读
- python - Pandas 用特定列的列表替换 NaN 值
- linux - 打印文件名列表,文本文件中指定的文件名除外
- api - 使用 d3.js 的可缩放条形图
- java - MATLAB中的datestr函数到Java
- javascript - 如何使用 .reduce 函数将键值数组转换为对象数组?
- python - python https认证错误?
- mysql - mysql 5.7 中的查询比 5.1 慢 2 倍或更多倍
- c# - 从其他较小的 DataTable 填充 DataTable
- python - 在不删除注释的情况下更改 python 中的配置文件
- java - 如何高效地读写 Parquet 文件?