【发布时间】:2019-12-12 11:32:26
【问题描述】:
我正在尝试制作一个响应式网格。网格从 4x3 开始,当我达到 720 像素时,我希望它是 3x4 网格。我正在使用 bootstrap 3(这个项目不能使用 bootstrap 4)。现在我可以使用 javascript 来做到这一点,但我想用纯 html 和 css 来做到这一点。
从...出发
A B C D
E F G H
I J K L
到... @media only screen and (min-width: 720px)
A B C
D E F
G H I
J K L
我意识到您需要在其间添加行,这就是我使用 javascript 动态添加它的原因。当它静态存在时,我不知道该怎么做。
function gridDivideBy(divideNum) {
$('.myClass').contents().unwrap();
var $square = $(".square");
for (let i = 0; i < $square.length; i += divideNum) {
// Create dynamic div
let $div = $("<div/>", {
class: 'myClass row'
});
// Wrap all the boxes inside a row and div with myClass
$square.slice(i, i + divideNum).wrapAll($div);
}
}
function myFunc(x) {
if (x.matches) {
gridDivideBy(4);
} else {
gridDivideBy(3);
}
}
var x = window.matchMedia("(min-width: 720px)")
myFunc(x);
x.addListener(myFunc);
.square {
flex: 1;
padding: 5px;
margin: 5px;
border: 2px solid #eee;
flex: 1;
}
.myClass {
display: flex;
padding: 5px;
margin: 4px;
border: 1px solid green;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="container" id="square-wrapper">
<div class="col-md-3 square">A</div>
<div class="col-md-3 square">B</div>
<div class="col-md-3 square">C</div>
<div class="col-md-3 square">D</div>
<div class="col-md-3 square">E</div>
<div class="col-md-3 square">F</div>
<div class="col-md-3 square">G</div>
<div class="col-md-3 square">H</div>
<div class="col-md-3 square">I</div>
<div class="col-md-3 square">J</div>
<div class="col-md-3 square">K</div>
<div class="col-md-3 square">L</div>
</div>
【问题讨论】:
-
您是否尝试将
col-sm-4与col-md-3一起添加? -
这给了我 3x4、2x6 和 1x12,但不是我想要开始的 4x3,但是谢谢,我只是不擅长网格。
-
您可以在容器上使用 display:flex,然后在 .square 上使用 25% 的宽度,然后对
标签: javascript jquery html css twitter-bootstrap-3