【问题标题】:CSS dynamic two column layoutCSS动态两列布局
【发布时间】:2015-06-10 16:13:34
【问题描述】:

我需要使用 css 创建以下布局

===== 手机 ===== ===== 在桌面上 ======

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

===== 移动 ==== ===== 在桌面上====

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

【问题讨论】:

  • 将 1、2、3 放在一个 div 中,4、5、6 在一秒钟内。然后使用媒体查询将包含的 div 从 50% 宽度切换到 100% 宽度。如果您希望 4 在 2 被移除时在 3 的位置上回流 - 那是另一回事...
  • 嗨瑞士先生,我试过这个jsbin.com/paduqupipa/1/edit?html,css,output,它失败了,我想在 3 的地方回流 4,我怎样才能使它成为可能,你可以指导我吗? (也尝试使用引导程序,但似乎不适用于我的问题。row>.col-sm-6+.col-xs-12*2)。
  • @SwissMister,我对你提到的另一个故事很感兴趣 :),你能指导我一些观点吗?
  • “另一个故事”:除非你很幸运能够使用@Terry 优雅的 CSS 列解决方案,否则我相信你需要自己使用 javascript 来编程回流。这很重要,并且取决于我在 OP 中看到的更多信息。喜欢1、2、3等的身高。祝你好运!
  • @Sudeep 的 jsbin 解决方案还没有使用 media queries。但是再说一遍:如果您有回流的附加功能要求(4 -> 3),那么无论如何您都必须寻求更复杂的东西。

标签: css layout flexbox multiple-columns


【解决方案1】:

你可以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)和最小列宽。我实际上建议这样做,而不是针对移动设备和桌面设备,因为流畅/响应式布局应该迎合内容,而不是设备:

* {
  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);
}

【讨论】:

  • 嗨@terry,我测试了你的代码并发现了一个问题,我从标记中删除了 [2] 元素,现在浏览器在下一列中呈现 [4] 输入框底部,是否存在有什么办法可以解决这个问题吗?jsfiddle.net/sharpshooter1990/27ygfwpr/1 这是经过测试的版本。
  • 这是预期的行为。该列将内容从左向右流动,因此它会在向右移动之前填充左侧的空间。
  • 列目前似乎有very limited browser support。所以这取决于您的环境(具有可控浏览器软件版本的内联网与广泛的互联网等)。
猜你喜欢
  • 2013-01-06
  • 1970-01-01
  • 1970-01-01
  • 2011-12-03
  • 2013-10-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-01
相关资源
最近更新 更多