【发布时间】:2018-06-09 10:51:34
【问题描述】:
HTML:
<div id="wrap">
<div id="block1"></div>
<div id="block2"></div>
</div>
CSS:
div#wrap{
margin-top: 3em;
border: solid 1px black;
text-align: center;
}
div#wrap *{
display: inline-block;
width: 12.5em;
margin-top: 1em;
height: 8em;
}
div#wrap *:not(:last-child){
margin-right: 8em;
}
#block1{
background: orange;
}
div#wrap #block2{
background: magenta;
}
这两个块应该在响应式设计模式中居中。当屏幕足够宽以连续有 2 个块时,代码就可以工作。但是当我缩小屏幕时,由于边距,顶部块向左移动:
是否可以在不使用媒体查询的情况下解决此问题?
编辑
我试过 flex-box:
div#wrap{
margin-top: 3em;
border: solid 1px black;
display: flex;
flex-flow: row wrap;
justify-content: center;
}
【问题讨论】:
-
您需要从第一个嵌套元素中删除
margin-right属性。 -
@UncaughtTypeError 是的。但是当屏幕足够宽以连续包含 2 个元素时,我需要边距。媒体查询检查屏幕宽度是唯一的解决方案吗?
-
这可能是当前 inline-block 配置中最安全的选择。如果您愿意探索
flex-box解决方案,您可能会有更多选择。 -
正如@UncaughtTypeError 所说,最简单的解决方案是使用媒体查询删除边距,但前提是框的宽度已知并已固定
-
@UncaughtTypeError 我尝试了 flex,但无法使其工作。编辑了问题以显示我尝试过的内容。