CSS 动态两列布局

CSS dynamic two column layout

我需要使用 css

创建以下布局

===== 移动设备 ===== ===== 在桌面设备上 ======

-----[1]----- -----[1]-----|-----[4]-----
-----[2]----- -----[2]-----|-----[5]-----
-----[3]----- -----[3]-----|-----[6]-----
-----[4]-----
-----[5]-----
-----[6]-----

===== 移动设备 ==== ===== 在桌面上====

它们上面的布局 DOM 结构将按照移动布局顺序并且它是动态的,如果我从 DOM 中删除 [2] [3] 应该取代 [2] ] 不是 [5]。我如何根据这些条件创建 css 布局 是否可以使用 css 创建?

你可以CSS columns,它是专门为这样的布局设计的。

CSS 列http://jsfiddle.net/teddyrised/6bz4a0ox/

使用以下标记:

<div class="container">
    <div class="wrapper">
        <label for="">label</label>
        <input type="text" placeholder="[1]">
    </div>
    <!-- more -->
</div>

而对于 CSS,我们确保我们声明了列数(如您所愿,为 2)和最小列宽。我实际上建议这样做而不是针对移动设备与桌面设备,因为 fluid/responsive 布局应该迎合内容,而不是设备:

* {
  box-sizing: border-box;
  padding: 0;
  margin: 0;
}
.container {
     -webkit-columns: 2 200px;
        -moz-columns: 2 200px;
             columns: 2 200px;
  -webkit-column-gap: 1em;
     -moz-column-gap: 1em;
          column-gap: 1em;
}
.wrapper {
  overflow: hidden;
  padding: .5em;
}
.wrapper label {
  float: left;
  width: 50px;
}
.wrapper label + input {
  float: left;
  width: calc(100% - 50px);
}