Reputation: 61
These few lines display my WordPress posts in two columns. Is it possible to change it to three columns?
if ($(window).width() > 600) {
var i = 0,
colOne = new Array(),
colTwo = new Array();
jQuery('#cff .cff-item').each(function() {
i++;
var $self = jQuery(this);
function isEven(value) {
if (value % 2 == 0)
return true;
else
return false;
}
if (isEven(i)) {
colTwo.push($self);
} else {
colOne.push($self);
}
$self.remove();
});
$('#cff').prepend('<div class="col-one" style="width: 45%; float: left; margin: 0 2.5%;"></div><div class="col-two" style="width: 45%; float: left; margin: 0 2.5%;"></div>');
for (var i = 0; i < colOne.length; i++) {
jQuery('#cff .col-one').append(colOne[i]);
};
for (var i = 0; i < colOne.length; i++) {
jQuery('#cff .col-two').append(colTwo[i]);
};
}
How would I do it?
Upvotes: 0
Views: 67
Reputation: 34199
Answering your question directly, yes, you can easily edit this code such that it now works with three columns:
if ($(window).width() > 600) {
var columnsCount = 3;
var $columns = new Array(columnsCount);
// Create columns
for (var i = 0; i < columnsCount; i++) {
$columns[i] = $("<div class='col' style='float: left; margin: 0;'/>")
.css({
"width": Math.floor(45 / columnsCount).toFixed(2) + "%",
"margin-left": Math.floor(5.0 / columnsCount).toFixed(2) + "%",
"margin-right": Math.floor(5.0 / columnsCount).toFixed(2) + "%"
});
}
// Relocate items
$("#cff .cff-item").each(function (i) {
$(this).appendTo($columns[i]);
});
// Replace grid
$("#cff").empty();
$columns.forEach(function($c) { $("#cff").append($c); });
}
However, as I said before, it is much a better idea to achieve this using CSS.
Something like would solve all your problems:
.cff-item {
display: inline-block;
width: 90%;
margin: 0 5%;
}
@media (min-width: 600px) {
.cff-item {
width: 45%;
margin: 0 2.5%;
}
}
Upvotes: 1
Reputation: 60563
This could be done with CSS only, by using columns
property
Something like this
div {
columns: 3;
-webkit-columns: 3;
-moz-columns: 3
}
<div>Etiam posuere tristique ligula, quis euismod sem facilisis et. Mauris rhoncus lacus vitae dui dictum, sed iaculis ante pellentesque. Sed ut laoreet sem, ac accumsan arcu. Etiam orci ante, molestie semper leo vitae, varius mattis enim. Aliquam quis laoreet
mi. Aenean aliquam dolor ac accumsan faucibus. Sed ut risus sit amet quam accumsan blandit. Donec sit amet condimentum sapien. Fusce tincidunt sem eget justo ultricies vehicula. Nunc gravida, mi ut ultricies elementum, magna ante vestibulum augue, a
pretium lacus velit nec lectus. Vestibulum vitae purus vel erat commodo luctus nec a augue. Cras nec scelerisque enim. Etiam hendrerit vel diam et vehicula. Pellentesque finibus feugiat magna finibus pellentesque. Integer quis elementum ante, nec pellentesque
justo. Pellentesque eleifend facilisis elit ac posuere. Donec ac molestie massa. Phasellus finibus, eros nec auctor tempus, nisi diam tincidunt tortor, eu condimentum enim dolor eget elit. Etiam maximus dui bibendum tristique tincidunt. Vivamus euismod,
nisl nec faucibus cursus, metus justo accumsan lacus, nec hendrerit nisi risus nec purus. Duis auctor vel mi et ullamcorper. Nam quis felis id leo bibendum varius. In eu bibendum mi. Phasellus feugiat ligula elit, consectetur tempus lorem malesuada
ac. In vitae volutpat tellus. Aenean tempus pellentesque libero, ut pretium sem hendrerit sed. Phasellus nec imperdiet nibh. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean tincidunt ac justo et tempor. Ut elementum turpis a neque tristique
interdum. Morbi eleifend risus risus. Nulla ullamcorper arcu laoreet, malesuada sem eget, molestie libero. Donec volutpat turpis non finibus elementum. Sed sed mauris id dolor consectetur vulputate.</div>
Upvotes: 1