Задать вопрос
Nordborn
@Nordborn
Frontend

Как выровнять несколько разных блоков по высоте?

Здравствуйте. Подскажите пожалуйста, как мне можно решить возникшую проблему. Суть ее в следующем:

Имеется трехуровневое выпадающее меню, в дочерних менюшках второго и третьего уровня может быть любое количество строк. Нужно найти самый высокий среди двух этих уровней список и задать его высоту для остальных. С этой задачей, я более-менее справился, но. По умолчанию эти меню должны быть display:none; и появляться только по наведению курсора на соответствующий пункт.

Так вот, в этом случае у меня приравнивается к нулю высота меню третьего уровня и выровнять получается только по меню второго уровня. Слишком длинные списки просто начинают вылезать за рамки. Для наглядности привожу код своего случая: jsfiddle.net/5pbjzjgk/1

Что нужно изменить/добавить в JS, CSS или HTML что бы все заработало как надо? (Что бы посмотреть как примерно все должно быть, можно убрать в CSS стилях строчку display:none; у .block1 (19 строка))
  • Вопрос задан
  • 367 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 1
Sadist07
@Sadist07
Верстальщик, Недо дизайнер
jsfiddle.net/5pbjzjgk/3 Лучше в 4 утра не придумал )
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Machez
@Machez
Бу!
Элементы, имеющие display: none; не учитываются в дереве разметки. Поэтому вы и не можите вычислить их высоту, т.к. она не назначена движком браузера. Кажды раз, когда вы, что-то изменяете в дереве элементов, браузер перестраивает весь документ, целиком и полностью.

В вашем случае можно попробовать поиграться со свойством visibility, вместо hidden. Но там тоже есть нюансы.
Ответ написан
Комментировать
premas
@premas
Full-stack web-developer
Это сложно признать, но ваша задача решается наилучшим образом с помощью таблиц. Даже без js и тем более без jQuery. Высота каждого td в таблице вычисляется на основании высоты самого высокого td, находящегося в том же tr.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы