【问题标题】:Fluid grid layout with fixed pixel spacing具有固定像素间距的流体网格布局
【发布时间】:2013-08-07 22:02:02
【问题描述】:

在下面对单元格之间固定间距的“流动”网格布局的尝试中,任何人都可以解释为什么当容器宽度发生变化时左下角图像上方的间距会不同。示例如下。

问题:

  • 为什么会发生这种情况?我没有考虑什么?
  • /您能建议一种更好的方法来使用 CSS 实现这样的网格吗?图片必须保持比例,并且应该适用于 IE8。

可在this jsFille 获得。

宽度约为 200 像素:

还有 ~1120px 宽度(裁剪):

HTML:

<div class="container">
    <div class="col1"><img src="http://placekitten.com/200/200"/></div>
    <div class="col2"><img src="http://placekitten.com/200/200"/></div>
    <div class="col3">
        <img src="http://placekitten.com/200/200"/>
        <img src="http://placekitten.com/285/678"/>
    </div>
    <div class="col4"><img src="http://placekitten.com/875/532"/></div>
</div>

CSS:

.container{    
    outline: 2px solid #000;
    margin: 30px auto;

    overflow: auto;
    font-size: 0;
    position: relative;

    padding-left: 20px;
    box-sizing: border-box;
    -moz-box-sizing: border-box;
}
img{
    width: 100%;
}

.col1, .col2, .col3{
    width: 37.5%;
    float: left;
}

.col1{
    margin-left: -20px;
}
.col1, .col2{
    margin-right: 10px;
}

.col3{
    width: 25%;
}
.col3 img:first-child{
    margin-bottom: 10px;
}

.col4{
    position: absolute;
    bottom: 0;
    left: 0;
    width: 75%;
    padding-right: 5px;
    box-sizing: border-box;
    -moz-box-sizing: border-box;
}

【问题讨论】:

    标签: html css fluid-layout


    【解决方案1】:

    您的左下角图像绝对定位在底部:0; left:0;,所以它和它上面的图片之间的间距只取决于左下图的纵横比。换句话说,如果你想减少那个空间,你需要增加那个图像的高度。

    【讨论】:

    • 不,不仅如此。它还取决于“决定”容器高度和它们之间的间距的图像的纵横比。所以这并不能回答任何问题。
    • 基本上,这里不应该有任何绝对定位。我通常不提倡使用表格,但也许表格布局会在这里为您提供更好的结果。然后你可以设置单元格间距。
    • “它和它上面的图片之间的间距只取决于左下图的纵横比”,你能通过改变那张图片的纵横比来说明这一点这样间距总是保持不变?如果不是,那么该陈述是错误的(在另一个方面)。表格可能有效,但我不再 100% 确定这一点。也许有些东西在这里没有加起来,这就是我们产生差异的原因。
    • 我认为您的问题是整个网格的纵横比会随着您调整窗口大小而变化,因为您在图像之间设置了固定的 10px 间距。您还需要使该间距保持流畅,以保持一定的纵横比。尝试将间距设置为 0 并使网格对齐,然后我想你会看到它在调整大小时保持一致。
    猜你喜欢
    • 2012-07-17
    • 1970-01-01
    • 1970-01-01
    • 2017-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-18
    • 2013-02-18
    相关资源
    最近更新 更多