【发布时间】:2016-03-16 23:11:56
【问题描述】:
两个组件:父(白框)和子(灰框)。我想将孩子垂直放置在父母的中心。
三个约束是:
- 父级有固定高度,overflow-y 是自动的。
- 孩子的身高是可变的,身高可能小于或大于父母的身高。
- child 是一个普通的组件(div),而不仅仅是一张图片或一段文字。
由于孩子的高度可变,我选择使用“绝对位置+平移”来实现这一点,例如:
.parent {
position: relative;
height: 400px;
width: 300px;
overflow-y: auto;
}
.child {
position: absolute;
top: 50%;
left: 50%;
width: 200px;
height: auto;
transform: translate(-50%, -50%);
}
当孩子的身高低于父母的身高时效果很好。
如果孩子的身高大于父母的身高,就会发生不好的事情(见下图(b))。问题是我无法滚动到孩子的顶部。我想这是导致孩子被裁剪的“翻译-y”。
现场演示在jsfiddle
我该如何克服这个问题?有没有更好的方法来做到这一点?
【问题讨论】:
-
我找到了一个方法并回答了下面的问题,你可以看到它。