Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Сделать элементы списка одной высоты в пределах каждой строки (https://javascript.ru/forum/dom-window/59765-sdelat-ehlementy-spiska-odnojj-vysoty-v-predelakh-kazhdojj-stroki.html)

eddin 25.11.2015 19:20

Сделать элементы списка одной высоты в пределах каждой строки
 
Добрый день!
Есть такая страница

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
		<style type="text/css">
			body{font-size:16px}
			#wrap{max-width:400px;text-align:center;border:2px solid red}
			.list li{display:inline-block;vertical-align:bottom;width:100px;text-align:left;}
			.list li a{display:block;margin:5px;border:1px solid green}
		</style>
	</head>
	<body>
		<div id="wrap">
		`	<ul class="list">
				<li><a href="#">111111 111111 1 1 1 1</a></li>
				<li><a href="#">22 2222 2 2 2</a></li>
				<li><a href="#">333 3 3 3 3 33 3 3 33333 3 3 3 3 3 3 3 3 3</a></li>
				<li><a href="#">4444444444 4444444 444 4 4 4444444444 4 44 4 4 44</a></li>
				<li><a href="#">5555 555</a></li>
				<li><a href="#">66 6666  6666  6 6 6 666 66 66 6 6 6 6  6 6 66666 66666 666 6</a></li>
				<li><a href="#">7777 7777777 7777 777777 777</a></li>
			</ul>
		</div>
	</body>
</html>


По условию на странице нельзя использовать таблицы html, display:table, и float (это важно!).

Как кроссбраузерно (IE6 и 7 не нужны) с помощью чистого JS или Jquery (Jquery предпочтительней, тк библиотека подключена) сделать так, чтобы высота элементов списка подгонялась под высоту самого высоко в строке?

Я знаю, как сделать все элементы списка одной высоты, выровняв их по самому высокому в списке. Но мне надо, чтобы это работало отдельно для каждой строки. Количество строк может быть любым, ширина #wrap тоже любым, как и количество элементов в строке. Например, в данном примере, при увеличении масштаба страницы, #wrap начнет сужаться, а количество элементов в строке уменьшится с 3 до 2. Соответственно после этого и самый высокий элемент в строке может смениться.

Друзья, заранее спасибо!

ruslan_mart 25.11.2015 19:25

var maxHeight = 0;

$('.list li').each(function() {
    maxHeight = Math.max(maxHeight, this.clientHeight);
});

alert(maxHeight);

eddin 25.11.2015 19:38

Ruslan_xDD, спасибо за интерес!
Как я понимаю, этот код всего лишь вычисляет высоту самого высокого элемента... Как я писал, я сам могу вытянуть все элементы по максимальной высоте, но задача-то другая...

ruslan_mart 25.11.2015 19:49

var maxHeight = 0;

$('.list li').each(function() {
    maxHeight = Math.max(maxHeight, this.clientHeight);
}).css({height: maxHeight + 'px'});

eddin 25.11.2015 20:21

Ruslan_xDD, и всё же вы неправильно поняли условие.
Мне не надо вытягивать все элементы по самому высокому в списке
Мне надо вытянуть элементы по самому высокому в в рамках каждой строки
Прицепляю картинку
для наглядности добавил в CSS
.list li{border:1px solid blue}


ruslan_mart 25.11.2015 21:12

Вариант на скорую руку: http://jsfiddle.net/jxaaojx5/2/

Можно конечно это всё проще написать.

eddin 25.11.2015 21:47

Ruslan_xDD, спасибо!
Да, я нашел похожее с вашим решение здесь
http://webformyself.com/otzyvchivye-...snove-flexbox/
Просто надеялся, что есть более элегантное решение.
В общем буду это ковырять. Там еще почему-то весь контент внутри LI прижался кверху, игнорируя CSS.

eddin 25.11.2015 22:03

Цитата:

Сообщение от eddin (Сообщение 397686)
[b]Там еще почему-то весь контент внутри LI прижался кверху, игнорируя CSS.

А всё, понял, никакого игнорирования стилей нет.


Часовой пояс GMT +3, время: 03:53.