响应式布局重新定位

时间:2017-09-21 10:29:06

标签: html css responsive-design

我有一点响应式布局内容定位问题。

我有一张“卡片”,在一个布局上看起来像下面一样,每个帖子的卡都会重复,其中有很多:

  --card---------------------------------------------------
| 
|   div 1                                               |
|                                                       |
|  --------------------------------------------------   |
|   div 2                                               |
|                                                       |
|                                                       |
|                                                       |
|                                                       |
|                                                       |
|                                                       |
|                                                       |
|                                                       |
|  ----------------------------- ---------------------- |
|   div 3                        |                      |
|                                |                      |
|                                | -------------------- |
|                                |   div 5              |
-------------------------------- |                      |
|          |                     | -------------------- |
|    div 4 |                     |                      |
|          |                     |   div 6              |
|          |                     |                      |
---------------------------------------------------------

它有点复杂,但这些是主要部分,让我们说。 这个(移动)的第二个版本添加了一个div,这很容易,并重新定位div 5和6,并调整div 3.有点棘手,但我可以在CSS中做到这一点。具体来说,我将div 3和4组合在一个内联块包装中,然后我向上/向下浮动5和6,还有一些事情要做。而现在我必须将div 4相对于整张卡水平居中,但我这样做的边缘并不总是正确的。 另外,5-6挡的包装器相对定位,所以可以将它粘在角落里。

--card---------------------------------------------------
| 
|   div 1                                               |
|                                                       |
|  --------------------------------------------------   |
|   div 2                                               |
|                                                       |
|                                                       |
|                                                       |
|                                                       |
|                                                       |
|                                                       |
|                                                       |
|                                                       |
|  ---------------------------------------------------- |
|   div 3                                               |
|                                                       |
|                                                       |
|                                                       |
------------------------------------------------------- |
|*new - 7* |               4     |  *6*                 |
|          |                     |                      |
|          |                     |                      |
|          |                     |                      |
|          |                     | ------------------   |
|          |                     |  *5*                 |
|          |                     |                      |
---------------------------------------------------------

现在真的很疯狂,在横向移动设计上,我明白了:

正如你所看到的,现在我必须漂浮在div 1和2之间,并完全拉出一些盒子并将它们放在不同的地方,并且通常完全不同的布局。

--card--------------------------------------------------------------
| div 2                 |   div 1   |  div 7  | div 4          | n |
|                       |---------------------|                | e |
|                       |                     |                | w |
|                       |  div 5              |                |   |
|                       |                                      | 8 |
|                       | -----------------------------------------|
|                       |                              |           |
|                       |  div 3                       |  6        |
|                       |                              |           |
|                       |                              |           |
|                       |                              |           |
--------------------------------------------------------------------

有没有办法在不诉诸重复内容或相对定位的情况下完成所有这些?

我具体做了什么: - 我现在通过向左浮动来拉div 2,我绝对定位div1。 - 我做了一些pos:relative和float divs来拉动div 3和6这看起来很脏但是有效。有一些屏幕尺寸关闭,但我现在迷路了。 - 我复制了一些内容(就像那个可怜的div 5)并使用媒体查询来显示和隐藏。 - 我总体上弄得一团糟,因为当我更多地挖掘自己时,我发现我需要更多的黑客来“修复”不同布局的东西,所以现在我完全迷失了。 FWIW这是一个Angular webapp,但布局事情与此完全不同。

一般如何处理这类问题?

1 个答案:

答案 0 :(得分:1)

一般情况下,如果您的布局对于不同的屏幕尺寸而言完全不同,那么您将要达到布局变得非常难以维护而不诉诸复制的程度。

我个人的建议是使用基于flexbox的网格(例如Bootstrap 4.0),原因有两个:

  • 在列中划分布局要容易得多,可以使用纯css类完成,而不必浮动所有内容
  • flexbox为您提供额外的灵活性。例如,您可以应用于设计的两个便利事项是order(要使 div 2 在第三个布局中的 div 1 之前呈现),并切换flex-direction(使最后一个布局从左向右流动,而不是从上到下)。进入它可能需要做一些工作,但我相信这样可以为您提供获得结果所需的灵活性。

This指南对于更深入地了解它们非常有用。