css - 用具有自动边距的 div 填充 div (CSS)

标签 css css-float containers margin

我敢打赌这个问题以前被问过好几次了,但我找不到答案。不在这里或谷歌。我想这说明了我的很多前端(和搜索?-)技能。

因此,对于预期已经回答的帖子,我们深表歉意。

我的问题是我有一个 980 像素的 div,我想用其他较小的 div 填充它。假设较小的 div 为 180 像素宽,而我有 7 个。然后它应该是 2 行小 div,它们之间有 20 个像素,第一行应该是 5,下一行应该是 2。

一种方法是将它们设置为 float: left 并有一个 margin-left: 20px。这将如何以 1000px(20 到宽)的总行结束,这将导致第一行有 4 个 div,第二行有 3 个 div。

一个尝试是在容器上设置一个 margin-right:-20px,但它确实(不是那么意外)不起作用。

欢迎提供任何帮助或答案链接!

编辑: 我意识到我的问题不是很清楚。容器也可以重新定位,因此较小的 div 应该只填充容器中的空间,第一个在行中距左侧 0px,最后一个在行中距右侧 0px。中间的 div 应该自动调整。我只为一排问题找到了这样的东西。如果较小的 div 之间的边距 < 1 像素,那么我也更喜欢它打破行直到下一行。

编辑 2: 我对我的问题做了一个 jsfiddle。绿色框应自动填充灰色区域(水平方向,垂直边距可以是给定值,如 15/20 像素)。

http://jsfiddle.net/yfnpv/

最佳答案

很难准确地说出你想要什么。

如果我没理解错的话,就是这个。

demo

我添加了一些辅助元素:

    ....
    <div class="obj">7</div>
    <div class="obj push"></div>
    <div class="obj push"></div>
    <div class="pushend"></div>
</div>

CSS 是:

#container {
    max-width: 980px;
    background-color: gray;
    display: inline-block;
    text-align: justify;
}

.obj {
    width: 180px;
    height: 180px;
    background-color: green;
    display: inline-block;
}
.obj.push {
    height: 0px
}
.pushend {
    width: 100%;
    height: 0px;
    display: inline-block;
}

这个想法不是我的,但我找不到我看到它的地方。

我相信原作者也使用了一些伪元素的巧妙技巧,只是为了不改变 HTML,但我记不清了。

关于css - 用具有自动边距的 div 填充 div (CSS),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17091871/

相关文章:

html - 背景颜色属性不接受打印 css

docker - 从零开始的容器说明

hadoop - 如何将hdfs block 大小设置为1 GB?

jquery - ASP.NET 赋予 Linklabel 风格

javascript - 用于验证的 jQueryUI 工具提示

html - Bootstrap 4 : Can't Change Card Header Properties

javascript - 无法找到在 docker 环境中运行的 Node js 应用程序的模块错误

javascript - 如何停止裁剪 IE 中 Textarea 的最后一行并降低行高?

css - 如何创建包含的 css 列。可滚动的中间列和 float 的左右列

html - 如何将元素从左侧移动到右侧?