【问题标题】:Adjust orders for responsive layout with 3 floating divs使用 3 个浮动 div 调整响应式布局的顺序
【发布时间】:2015-12-19 05:41:15
【问题描述】:

我正在尝试创建一个 3 网格响应式布局,如附图所示。在全尺寸屏幕上,div 应该看起来像左边的那个,当按比例缩小时,右边的那个。

一旦页面足够小,我可以使用 "float:left" 轻松地将 div B 向下移动到 div C 下方,它自然会下降到 div C 下方。

所以我面临的问题是如何真正让 div C 低于 B 而 B 像右图一样进入 A 和 C 之间?

  • 我需要按 A、B、C 的顺序编码的 div
  • A 的高度是固定的
  • B 的高度是可变的
  • C 的高度是可变的

我被困在这个阶段:https://jsfiddle.net/45x54w2g/ 我不知道如何将 C 向下移动到 div A 下方的左下角 - 不留空隙..任何帮助表示赞赏!谢谢! 正文代码:

<div id="A" style="width: 40%; height: 300px;">
  A
</div>  

<div id="B" style="width: 55%; height: 600px;">
  B
</div>  


<div id="C" style="width: 40%">  
  C
</div>  

CSS:

div {
  min-width: 400px;
  float: left;
  background-color: gray;
  margin: 4px;
  text-align: center;
  height: 200px;  
}

【问题讨论】:

  • 这可能会有所帮助:stackoverflow.com/questions/23637501/…
  • 高度部分,左图中呢?对于右图,我猜你希望 3 个块占据容器 100% 的高度,对吧?
  • 是!!!!!!!!! jsfiddle.net/mm6ck3dc/25
  • 如果 flexbox 是一个选项,那么有一个 order 属性可以让您定义 div 的顺序
  • @Pangloss 对于左图,A 和 C 上的高度大多是固定的,但是 - B 是一个变量,取决于有多少文本

标签: html css


【解决方案1】:

我稍微编辑了标记,添加了一个容器,将 div B 移到顶部,并将其浮动到右侧。对于第二个结构,我使用了@media + flexbox。看下面的demo,运行sn-p点击“Full page”查看其他布局,或者使用jsfiddle demo。

https://jsfiddle.net/ydv01r9e/

.a, .b, .c {
  width: 50%;
}

.b {
  float: right;
}

@media (max-width: 700px) {
  .container {
    display: flex;
    flex-direction: column;
  }
  .a, .b, .c {
    width: auto;
  }
  .a {
    order: 1;
  }
  .b {
    order: 2;
  }
  .c {
    order: 3;
  }
}

.a {background: lime;}
.b {background: orange;}
.c {background: hotpink;}
<div class="container">
  <div class="b">b<br>b<br>b</div>
  <div class="a">a</div>
  <div class="c">c</div>
</div>

【讨论】:

  • 谢谢,这行得通!但是有没有办法让 div 'b' 向左浮动而不是向右浮动并且仍然使整个布局工作?
  • 除非你给div A和​​C添加一个容器,但是flexbox部分会有问题。顺便说一句,为什么需要向左浮动?
  • 我在使用 float:right 时非常糟糕 - 我试图将 div "b" 锚定在 "a" 和 "c" 的右侧,右侧有大约 30px 的填充,所以它使事情变得有点复杂我尝试了 padding-right : 10% on div "b" - 但这显然会导致整体布局出现一些问题(例如当页面缩小时 b 会完全冲下 "a" 和 "c")
  • 或者,有没有办法让“a”和“c”像 460px 这样的固定宽度?而不是使用百分比值?因为我真的只需要“b”来响应
  • 如果需要padding,也可以加box-sizing:border-box;
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-01-29
  • 1970-01-01
  • 1970-01-01
  • 2012-07-10
  • 2015-12-04
  • 1970-01-01
  • 2020-01-30
相关资源
最近更新 更多