Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 25.11.2015, 19:20
Аспирант
Отправить личное сообщение для eddin Посмотреть профиль Найти все сообщения от eddin
 
Регистрация: 11.10.2010
Сообщений: 60

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

<!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 в 20:48.
Ответить с цитированием
  #2 (permalink)  
Старый 25.11.2015, 19:25
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

var maxHeight = 0;

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

alert(maxHeight);
Ответить с цитированием
  #3 (permalink)  
Старый 25.11.2015, 19:38
Аспирант
Отправить личное сообщение для eddin Посмотреть профиль Найти все сообщения от eddin
 
Регистрация: 11.10.2010
Сообщений: 60

Ruslan_xDD, спасибо за интерес!
Как я понимаю, этот код всего лишь вычисляет высоту самого высокого элемента... Как я писал, я сам могу вытянуть все элементы по максимальной высоте, но задача-то другая...
Ответить с цитированием
  #4 (permalink)  
Старый 25.11.2015, 19:49
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

var maxHeight = 0;

$('.list li').each(function() {
    maxHeight = Math.max(maxHeight, this.clientHeight);
}).css({height: maxHeight + 'px'});
Ответить с цитированием
  #5 (permalink)  
Старый 25.11.2015, 20:21
Аспирант
Отправить личное сообщение для eddin Посмотреть профиль Найти все сообщения от eddin
 
Регистрация: 11.10.2010
Сообщений: 60

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

Ответить с цитированием
  #6 (permalink)  
Старый 25.11.2015, 21:12
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

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

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

Последний раз редактировалось ruslan_mart, 25.11.2015 в 21:24.
Ответить с цитированием
  #7 (permalink)  
Старый 25.11.2015, 21:47
Аспирант
Отправить личное сообщение для eddin Посмотреть профиль Найти все сообщения от eddin
 
Регистрация: 11.10.2010
Сообщений: 60

Ruslan_xDD, спасибо!
Да, я нашел похожее с вашим решение здесь
http://webformyself.com/otzyvchivye-...snove-flexbox/
Просто надеялся, что есть более элегантное решение.
В общем буду это ковырять. Там еще почему-то весь контент внутри LI прижался кверху, игнорируя CSS.
Ответить с цитированием
  #8 (permalink)  
Старый 25.11.2015, 22:03
Аспирант
Отправить личное сообщение для eddin Посмотреть профиль Найти все сообщения от eddin
 
Регистрация: 11.10.2010
Сообщений: 60

Сообщение от eddin Посмотреть сообщение
[b]Там еще почему-то весь контент внутри LI прижался кверху, игнорируя CSS.
А всё, понял, никакого игнорирования стилей нет.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Событие на динамически созданные элементы списка Arigato Events/DOM/Window 7 12.12.2011 09:28
вставка текста в начато каждой строки qwertyuiop Общие вопросы Javascript 23 02.08.2011 12:30
Sortable, два связанных списка. Как один из них сделать неизменяемым? kvecxjo jQuery 1 30.03.2010 03:15