Сегодня мы с вами сделаем простую, но интересную фишку - уравняем высоту двух (можно более) независимых html-блоков. Пример такого можно увидеть на главной странице этого сайта.
Итак, пусть у нас есть два блока:
<style type="text/css">
#block-one, #block-two {
width: 300px;
border: 1px solid #999;
padding: 5px;
}
#block-one { float: left; }
#block-two { float: right; }
</style>
<div id="block-one">
Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh
euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.
</div>
<div id="block-two">
Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie
consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan
et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis
dolore te feugait nulla facilisi.
</div>
Выглядеть это будет примерно так:
Допустим нам нужно сделать эти блоки с равной высотой (как-будто это ячейки одной строки одной таблицы). Для этого нам необходимо:
Скрипт, выполняющий эти задачи, представлен ниже:
<script type="text/javascript"> var oldHandler = window['onload']; // сохраняем старый onload (если есть) window['onload'] = function() { if(typeof(oldHandler) == 'function') { oldHandler(); } setHeight(); // наша функция }; function setHeight() { var b1 = document.getElementById('block-one'); var b2 = document.getElementById('block-two'); if (!b1 || !b2) return; var h1 = b1.offsetHeight; var h2 = b2.offsetHeight; if (h1 > h2) { b2.style.height = (h1 - 10) + 'px'; b1.style.height = (h1 - 10) + 'px'; }else if (h1 < h2) { b1.style.height = (h2 - 10) + 'px'; b2.style.height = (h2 - 10) + 'px'; } } </script>
Здесь перед присваиванием высоты отнимаются паддинги (-10), так как они входят в offsetHeight. Теперь, если применить этот javascript-код к нашим блокам, получим:
Вот и все. Это решение будет работать во всех браузерах. Стоит отметить, что количество блоков ничем неограничено - можно сделать хоть 10 независимых блоков одинаковой высоты. В приложении к заметке находится html-файлик с собранным кодом.
Примечание: При определении высоты использовать следует именно offsetHeight, а не innerHeight и уж тем более не clientHeight.
| Прикрепленный файл | Размер |
|---|---|
| blocks-height.html | 1.77 кб |
Комментарии
Спасибо! Оч помогло ;)
Благодарю, пришлось перелопатить громадное кол-во форумов, и ничего не помогало. Ваш вариант подошел на все 100%.
Спасибо автору. Думал, что самому надо будет писать этот код, а тут... все есть. Разобрано по косточкам. Внедрение кода заняло 5 минут. Все работает на ура)
Никогда не знаешь, где найдешь где потеряешь. Тут нашел то, что искал. Очень благодарен! Никита Быков
Отправить комментарий