【发布时间】:2016-01-07 20:58:03
【问题描述】:
请查看http://jsfiddle.net/mrcjcfe7/19/ 以获得有效的布局。
我有 3 列(COL1、COL2 和 COL3)我需要根据屏幕宽度重新排列。扭曲是当屏幕在 300-600 像素之间时,我需要在 COL2 下获得 COL3。 300px以下,需要显示COL2、COL3和COL1。
当调整屏幕大小时,CSS 和 Javascript 的组合就完成了。
var col1 = document.getElementById('col1'),
col2 = document.getElementById('col2'),
swapped = false;
window.onresize = function () {
var width = window.innerWidth;
if (width < 300 && swapped === false) {
swapCols();
swapped = true;
} else if (width > 300 && swapped === true) {
swapCols();
swapped = false;
}
};
function swapCols() {
var _col1 = col1.innerHTML,
_col1id = col1.id,
_col2 = col2.innerHTML,
_col2id = col2.id;
col1.innerHTML = _col2;
col1.id = _col2id;
col2.innerHTML = _col1;
col2.id = _col1id;
}
html * {
margin:0;
padding:0;
}
body {
background:#000;
font-family:helvetica, verdana;
}
#wrapper {
width:600px;
}
#col1 {
float:left;
width:200px;
background:#cc4444;
}
#col2 {
float:left;
width:200px;
background:#44cc44;
}
#col3 {
float:left;
width:200px;
background:#4444cc;
}
.clear {
clear:both;
}
@media only screen and (min-width:300px) and (max-width:600px) {
#col3 {
float:none;
}
}
@media only screen and (max-width:300px) {
#wrapper {
width:100%;
}
#col1, #col2, #col3 {
float:none;
width:100%;
}
}
<div id="wrapper">
<div id="col1" class="cols">COL 1 - COL 1 - COL 1 - COL 1 - COL 1 - COL 1 - COL 1 - COL 1 - COL 1 - COL 1 - COL 1 - COL 1 - COL 1 - COL 1 - COL 1 - COL 1 - COL 1 - COL 1 - COL 1 - COL 1 - COL 1 - COL 1 - COL 1 -</div>
<div id="col2" class="cols">COL 2 - COL 2 - COL 2 - COL 2 - COL 2 - COL 2 - COL 2 - COL 2 - COL 2 - COL 2 - COL 2 - COL 2 - COL 2 - COL 2 - COL 2 - COL 2 - COL 2 - COL 2 - COL 2 - COL 2 - COL 2 - COL 2 - COL 2 - COL 2 - COL 2 - COL 2 - COL 2 - COL 2 - COL 2 - COL 2 - COL 2 - COL 2 - COL 2 - COL 2 - COL 2 - COL 2 - COL 2 - COL 2 - COL 2 - COL 2 - COL 2 - COL 2 - COL 2 - COL 2 - COL 2 - COL 2 - COL 2 - COL 2 - COL 2 - COL 2 - COL 2 - COL 2 - COL 2 - COL 2 - COL 2 -</div>
<div id="col3" class="cols">COL 3 - COL 3 - COL 3 - COL 3 - COL 3 - COL 3 - COL 3 - COL 3 - COL 3 - COL 3 - COL 3 - COL 3 - COL 3 - COL 3 - COL 3 - COL 3 - COL 3 - COL 3 -</div>
<div class="clear"></div>
</div>
我遇到的问题是当 COL2 包含比 COL1 更多的东西时。 COL3 占据了我想要的位置,但在 COL2 旁边的空间中有一个空隙。编辑:请看这篇文章末尾的图片。
当屏幕在 300-600 像素之间且第二列包含的内容比第一列多时,我如何才能在没有间隙的情况下实现所需的布局?
谢谢,
塞巴斯蒂安
编辑 Here is an image showing the correct layout and the problem I attempt to solve
【问题讨论】:
-
所以我有点困惑......你有 3 列(COL1 COL2 COL3)。当屏幕在 300px-600px 之间时,你想让 COL3 低于 COL2 吗?当屏幕低于300px时,按顺序显示列,那么COL1,然后是COL2? COL3 在 COL2 下?
-
用
order属性试试flex。 -
没错,正如@mwl 所说,try
flexlayout: css-tricks.com/snippets/css/a-guide-to-flexbox -
我尝试了 flex 并且得到了相对相同的结果 (jsfiddle.net/n9bt0x0e/1) 当屏幕在 400 到 600 像素之间时,换行(COL1 在 COL2 和 COL3 旁边的“新”行上)。我需要 COL3 的内容正好在 COL1 的内容之下。似乎要填补 COL1 和 COL3 之间的空白需要合并两列内容。
-
您正在寻找类似的东西吗? Fiddle
标签: javascript html css media-queries flexbox