【发布时间】:2018-10-07 14:00:36
【问题描述】:
我想使用relative div 来填充它,其中inline-block 元素彼此相邻对齐,它们都具有相同的宽度和高度(= 正方形)。
所以如果有n 元素,relative div 应该可以在 x 方向滚动。正如您在下面的示例代码中看到的那样,这是有效的:
.outer {
position: absolute;
width: 100%;
height: 100%;
}
.parent {
position: relative;
width: 90%;
height: 40%;
overflow-y: hidden;
overflow-x: scroll;
text-align: center;
white-space: nowrap;
background: red;
}
.item {
background: yellow;
display: inline-block;
width: 4%;
margin: 0% 3%;
}
.item::after {
content: "";
display: block;
padding-bottom: 100%;
}
<div class="outer">
<div class="parent">
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
</div>
</div>
但现在我希望 item-elements (黄色方块) 垂直对齐到 red parent-div (relative div) 以便距离从上到中心和从下到中心是相同的。请看这张图片:
注意:我不想改变层次结构(保持父元素相对和外部元素绝对等...)
我怎样才能做到这一点?
【问题讨论】:
-
如需进一步参考,请参阅Centering in CSS: A Complete Guide @ CSS-Tricks。
-
@Temani Afif。真的?您使用答案标记了一个弹性框作为该问题的正确答案?看过“保持父元素相对和外部元素绝对,等等......”。所以
relative != flex. -
@Asker 我添加了 flexbox 解决方案作为第二个 dup ;) 如果你愿意,我可以添加更多... flexbox 是未来读者考虑的替代方案
-
现在你已经有了所有与居中相关的重复项,仅限于 5 个,但我仍然可以添加更多。
-
Flex 不影响相对/绝对位置值。