Cheizer
@Cheizer

Как на JS сделать колонки одинаковой высоты?

Как на JS или JQUERY сделать так, чтобы колонки слева и справа, были одинаковы по высоте?
На CSS так не сделать. А на JS сложновато для моих умений задачка.
Сложность в том, нужно чтобы слева и справа первые колонки, высоту делали по самой большой из них.
И вторые тоже, по самой большой из них обоих. То есть, колонки друг напротив друга, должны быть одинаковыми по высоте.

Сейчас они неровные:
5ec1c4aa68b69025721497.jpeg

А вот как нужно, чтобы ровные были:
5ec1c2b6b996b045711103.jpeg

  • Вопрос задан
  • 421 просмотр
Решения вопроса 2
ArsenyMatytsyn
@ArsenyMatytsyn Куратор тега CSS
Руководитель frontend направления, предприниматель
Вообще-то на CSS можно без проблем такое сделать. По пути наименьшего сопротивления → на гридах с параметром 1fr для шаблона по высоте. На флексбоксах тоже такое можно муткануть, но не так приятно, как на гридах.

А на JS надо брать размер элемента, можно сразу три, чтобы сравнивать и брать больший, а затем присваивать его всем в качестве min-height (иначе при перерасчетах он будет всегда фикс высоту выдавать).

Желательно это все завернуть в функцию, которую вызвать при инициации скрипта И запустить в вотчере события изменения размера окна.
Ответ написан
Cheizer
@Cheizer Автор вопроса
Нашел решение, продублировать пришлось код для двух колонок, не красиво, но с этим буду разбираться дальше, так как нужно для вторых колонок, вычесть высоту первых при условии что центральная колонка выше обоих. Сложно пипец.
jQuery(function($){
	
	var max_col_height = 0; // максимальная высота, первоначально 0
	$('.box_one').each(function(){ // цикл "для каждой из колонок"
		if ($(this).height() > max_col_height) { // если высота колонки больше значения максимальной высоты,
			max_col_height = $(this).height(); // то она сама становится новой максимальной высотой
		}
	});
	$('.box_one').height(max_col_height); // устанавливаем высоту каждой колонки равной значению максимальной высоты
//////////	
	var max_col_height2 = 0; // максимальная высота, первоначально 0
	$('.box_two').each(function(){ // цикл "для каждой из колонок"
		if ($(this).height() > max_col_height2) { // если высота колонки больше значения максимальной высоты,
			max_col_height2 = $(this).height(); // то она сама становится новой максимальной высотой
		}
	});
	$('.box_two').height(max_col_height2); // устанавливаем высоту каждой колонки равной значению максимальной высоты
	
});
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@zkrvndm
Софт для автоматизации
Автор, блин. Просто используйте таблицы! Задача же элементарно решается, через объединение ячеек в средней колонке.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы