html - 行中的元素之间没有额外的间距

标签 html css flexbox

所以我正在使用新的 flexbox CSS 模块来尝试创建两列框。

目标: 框必须按左-右-左-右等顺序排列,而不是按列顺序(需要行) 盒子可以有不同的高度 除了通过 css 指定的内容之外,框之间不应有垂直间距

除了列表中的最后一项,我已经完成了所有任务。无论我做什么,如果其中一排的元素比另一排高,它不可避免地会将下一行的元素向下推。我不希望出现这种行为,并且再次强调,使用列而不是行不是一种选择。

这里有一些您可以使用的简化标记:

HTML:

<div class="blocks">
     <div class="block"></div>
     <div class="block"></div>
     <div class="block"></div>
     <div class="block"></div>
     <div class="block"></div>
     <div class="block"></div>
</div>

CSS:

.blocks {
    display: flex;
    flex-wrap: wrap;
}

.block {
    width: calc(50% - 15px);
    background: gray;
    outline: 1px solid red;
    margin-bottom: 10px;
}

.block:nth-child(2n+1){
    margin-right: 30px;
}

.block:nth-child(1) {
    height: 150px;
}

.block:nth-child(2) {
    height: 190px;
}

.block:nth-child(3) {
    height: 180px;
}

.block:nth-child(4) {
    height: 160px;
}

.block:nth-child(5) {
    height: 190px;
}

.block:nth-child(6) {
    height: 150px;
}

在此示例中,列中的元素之间的间距永远不应超过 10 像素。

这是一个供你们玩的 JS Fiddle:

http://jsfiddle.net/esryrk3w/

请注意列中元素之间的额外垂直间距。

最佳答案

解决方案?停止使用 flexbox。

只需使用交替 float 。第一个将第二个盒子和之后的第二个盒子向右浮动,第二个将第一个盒子和之后的第二个盒子向左浮动。问题已解决。

.block:nth-child(2n+2) {

    // POSITIONING
    float: right;
}

.block:nth-child(2n+1) {

    // POSITIONING
    float: left;
}

工作 JS fiddle :http://jsfiddle.net/esryrk3w/1/

关于html - 行中的元素之间没有额外的间距,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31144643/

相关文章:

javascript - SharePoint 聊天图标嵌入 iframe 问题

html - 水平拉伸(stretch)按钮

css - 如何在 mvc 应用程序的编辑器模板模型对象上应用样式

html - 如何防止输入字段将最后一个元素推到 div 之外?

javascript - 函数未定义即使它位于同一文件中

javascript - 使用哪个 Controller 进行健康指数监控

javascript - 在 ReactJS 中每次重新渲染时获取一个新的 FabricJS-Canvas

css - 为移动、屏幕和打印提供不同样式表的简单方法

javascript - 在数据刷新时为 flexbox 列设置动画

html - Bootstrap Flex 使 div 溢出