Одинаковая высота блоков является насущной проблемой при разработке дизайна сайта, средствами css это делать не удобно, т.к. требует специальной верстки. Отлично с данной задачей справляется jQuery.
Скрипт EqualHeight
Скрипт для того чтобы динамически сделать одинаковую высоту блоков на странице по самому высокому.
<script type="text/javascript">
$.fn.setEqualHeight = function() {
$this = this;
setTimeout(function() {
var maxHeight = 0;
$this.each(function() {
if (maxHeight < $(this).height()) {
maxHeight = $(this).height();
}
});
$this.each(function() {
$(this).height(maxHeight);
});
}, 1000);
}
$(document).ready(function() {
$(".hentry-box").setEqualHeight();
});
</script>
Нужный для выравнивания блок вписываем в последнюю функцию.
Там где в скрипте прописана цифра (в примере выше 1000) — это временной интервал после которого срабатывает скрипт. Естественно чем быстрее — тем лучше, но иногда нужно «время» чтоб загрузить блоки. И если времени будет недостаточно, то блоки выровнятся не корректно.
На одном из сайтов происходил конфликт с Woocommerce в шаблоне карточки товара (не работала мини-корзина), условием jQuery я его отключил для этого шаблона:
if(!$("div").is(".entry-summary")) {
скрипт EqualHeight
}
Перезагрузка высоты
Если надо на лету перезагрузить высоту блоков, например если мы меняем вид построения постов, то добавляем код
// Перезагрузка высоты блоков при нажатии на кнопки
$( '#btn-block, #btn-line, #btn-photo' ).click(function(){
$(".hentry-empty").css("height", "auto");
$(".hentry-empty").setEqualHeight();
});
// Перезагрузка высоты блоков при изменении размера окна
$(window).resize(function(){
$(".hentry-empty").css("height", "auto");
$(".hentry-empty").setEqualHeight();
});
Одинаковая высота карточек товаров WC
$.fn.setEqualHeight = function() {
$this = this;
setTimeout(function() {
var maxHeight = 0;
$this.each(function() {
if (maxHeight < $(this).height()) {
maxHeight = $(this).height();
}
});
$this.each(function() {
$(this).height(maxHeight);
});
}, 400);
}
$(document).ready(function() {
$(".products .product").setEqualHeight();
});
$(window).resize(function(){
$(".products .product").css("height", "auto");
$(".products .product").setEqualHeight();
});
Перезагрузка высоты, при переключении табов. Это нужно в случае, если мы реализовали, например, Похожие товары во вкладке.
$('.wc-tabs li').click(function(){
$(".products .product").css("height", "auto");
$(".products .product").setEqualHeight();
});
[site-socialshare]
