用flex布局垂直居中,子元素过多导致无法显示

Squall001 2017-09-29 12:22:13

<!DOCTYPE html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,minimum-scale=1.0,user-scalable=no">
<title>示例</title>
</head>
<body>

<div id="PriceDetailPad" style="display:block;position:fixed;top:0;left:0;width:100%;height:100%;background-color:rgba(222, 204, 204,0.4);" onclick="DelPriceDetail()">
<div style="overflow:auto;display:flex;align-items:center;justify-content:center;flex-direction:column; text-align:center;background-color:white;width:100%;height:30%;top:25%;width:85%;margin:0 auto;position:relative;">

<p style="flex:1;font-size:medium;border:1px dashed #FFF;">入住日期:<span style="font-size:large;color:cornflowerblue">2017-09-28</span>   价格<span style="font-size:large;color:cornflowerblue">258</span></p>
<p style="flex:1;font-size:medium;border:1px dashed #FFF;">入住日期:<span style="font-size:large;color:cornflowerblue">2017-09-29</span>   价格<span style="font-size:large;color:cornflowerblue">268</span></p>
<p style="flex:1;font-size:medium;border:1px dashed #FFF;">入住日期:<span style="font-size:large;color:cornflowerblue">2017-09-30</span>   价格<span style="font-size:large;color:cornflowerblue">338</span></p>
<p style="flex:1;font-size:medium;border:1px dashed #FFF;">入住日期:<span style="font-size:large;color:cornflowerblue">2017-10-01</span>   价格<span style="font-size:large;color:cornflowerblue">338</span></p>
<p style="flex:1;font-size:medium;border:1px dashed #FFF;">入住日期:<span style="font-size:large;color:cornflowerblue">2017-10-02</span>   价格<span style="font-size:large;color:cornflowerblue">338</span></p>
<p style="flex:1;font-size:medium;border:1px dashed #FFF;">入住日期:<span style="font-size:large;color:cornflowerblue">2017-10-03</span>   价格<span style="font-size:large;color:cornflowerblue">338</span></p>
<p style="flex:1;font-size:medium;border:1px dashed #FFF;">入住日期:<span style="font-size:large;color:cornflowerblue">2017-10-04</span>   价格<span style="font-size:large;color:cornflowerblue">338</span></p>
<p style="flex:1;font-size:medium;border:1px dashed #FFF;">入住日期:<span style="font-size:large;color:cornflowerblue">2017-10-05</span>   价格<span style="font-size:large;color:cornflowerblue">338</span></p>
<p style="flex:1;font-size:medium;border:1px dashed #FFF;">入住日期:<span style="font-size:large;color:cornflowerblue">2017-10-06</span>   价格<span style="font-size:large;color:cornflowerblue">338</span></p>
<p style="flex:1;font-size:medium;border:1px dashed #FFF;">入住日期:<span style="font-size:large;color:cornflowerblue">2017-10-07</span>   价格<span style="font-size:large;color:cornflowerblue">338</span></p>
<p style="flex:1;font-size:medium;border:1px dashed #FFF;">入住日期:<span style="font-size:large;color:cornflowerblue">2017-10-08</span>   价格<span style="font-size:large;color:cornflowerblue">258</span></p>
<p style="flex:1;font-size:medium;border:1px dashed #FFF;">入住日期:<span style="font-size:large;color:cornflowerblue">2017-10-09</span>   价格<span style="font-size:large;color:cornflowerblue">258</span></p>
<p style="flex:1;font-size:medium;border:1px dashed #FFF;">入住日期:<span style="font-size:large;color:cornflowerblue">2017-10-10</span>   价格<span style="font-size:large;color:cornflowerblue">258</span></p>
</div>
</div>
</body>
</html>

我发现,子元素一旦超过容器高度,就会出现只能显示在容器外面了,用滚动条也不行,如下图

这个怎么解决呢?
...全文
959 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
HDdgut 2021-04-21
  • 打赏
  • 举报
回复
flex-shrink:0;
技术成长ing 2019-09-20
  • 打赏
  • 举报
回复
感谢感谢,受楼主启发,我的问题也解决了。
Squall001 2017-10-02
  • 打赏
  • 举报
回复
最后我自己解决了,无论在单个还是多个,都可以实现垂直居中

<!DOCTYPE html>
 
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,minimum-scale=1.0,user-scalable=no">
    <title>示例</title>
<style>
.main {
	display: flex;
	flex : 1;
	justify-content : center;
	flex-direction : column;
	align-items : center;
	height : 600px;
}
.container {
	display: flex;
	flex-direction : column;
	align-items : center;
    width:100%;
    height:50%;
    overflow-x:scroll;
    flex-flow:wrap;
	background-color:rgba(222, 204, 204,0.4);
    justify-content:center;

}
.container div{
	font-size:medium;
	border:1px dashed #FFF;
	text-align:center;
	width : 100%;
	height : 10%;
	margin : 5px;
}
.container div span {
	height : 100%;
}
.container div span label {
	font-size:large;
	color:cornflowerblue;
}
</style>
</head>
<body>
    <div class='main'>
        <div class='container'>
<div>
    <span>入住日期:<label>2017-09-23</label></span>
    <span>价格:<label>258<label></span>
</div>
<div>
    <span>入住日期:<label>2017-09-21</label></span>
    <span>价格:<label>258<label></span>
</div>
<div>
    <span>入住日期:<label>2017-09-21</label></span>
    <span>价格:<label>258<label></span>
</div><div>
    <span>入住日期:<label>2017-09-21</label></span>
    <span>价格:<label>258<label></span>
</div><div>
    <span>入住日期:<label>2017-09-21</label></span>
    <span>价格:<label>258<label></span>
</div><div>
    <span>入住日期:<label>2017-09-21</label></span>
    <span>价格:<label>258<label></span>
</div><div>
    <span>入住日期:<label>2017-09-21</label></span>
    <span>价格:<label>258<label></span>
</div><div>
    <span>入住日期:<label>2017-09-21</label></span>
    <span>价格:<label>258<label></span>
</div><div>
    <span>入住日期:<label>2017-09-21</label></span>
    <span>价格:<label>258<label></span>
</div><div>
    <span>入住日期:<label>2017-09-21</label></span>
    <span>价格:<label>258<label></span>
</div><div>
    <span>入住日期:<label>2017-09-21</label></span>
    <span>价格:<label>258<label></span>
</div><div>
    <span>入住日期:<label>2017-09-21</label></span>
    <span>价格:<label>258<label></span>
</div><div>
    <span>入住日期:<label>2017-09-21</label></span>
    <span>价格:<label>258<label></span>
</div><div>
    <span>入住日期:<label>2017-09-21</label></span>
    <span>价格:<label>258<label></span>
</div><div>
    <span>入住日期:<label>2017-09-21</label></span>
    <span>价格:<label>258<label></span>
</div><div>
    <span>入住日期:<label>2017-09-21</label></span>
    <span>价格:<label>258<label></span>
</div><div>
    <span>入住日期:<label>2017-09-21</label></span>
    <span>价格:<label>258<label></span>
</div><div>
    <span>入住日期:<label>2017-09-21</label></span>
    <span>价格:<label>258<label></span>
</div><div>
    <span>入住日期:<label>2017-09-21</label></span>
    <span>价格:<label>258<label></span>
</div><div>
    <span>入住日期:<label>2017-09-21</label></span>
    <span>价格:<label>258<label></span>
</div>
        </div>
    </div>

</body>
</html>

天际的海浪 2017-09-29
  • 打赏
  • 举报
回复
去掉justify-content:center;
Squall001 2017-09-29
  • 打赏
  • 举报
回复
我想了下,flex布局好像不能做到这种效果,需要js去判断中间P标签的个数和高度和。 我这里想要做到的效果就是,在容器里面只有单个元素的时候,是垂直居中的,也就是那个p标签是在整个DIV正中心的位置,那么如果按照此排列,如果P标签的个数多了,超过了整个DIV的高度,那么flex还是按照此规则排列的,也就是中间那个P标签在正中心,其他的自然而然的就被溢出到上面去了,
Squall001 2017-09-29
  • 打赏
  • 举报
回复
引用 1 楼 jslang 的回复:
去掉justify-content:center;
我试过这样的,但是在容器里面只有单个P标签的时候,是不用做到垂直居中的

61,115

社区成员

发帖
与我相关
我的任务
社区描述
层叠样式表(英文全称:Cascading Style Sheets)是一种用来表现HTML(标准通用标记语言的一个应用)或XML(标准通用标记语言的一个子集)等文件样式的计算机语言。
社区管理员
  • HTML(CSS)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧