Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Событие ресайза (https://javascript.ru/forum/jquery/50799-sobytie-resajjza.html)

Makkssimka 12.10.2014 09:35

Событие ресайза
 
Суть вот в чем в CSS3 есть такая фишка как высота элемента в vh, при значении 100 растягивает блок на высоту окна. К сожалению не все браузеры его поддерживают. Пытаюсь реализовать данную функцию через jQuery, таким образом
$(document).ready(function(){
	
	h = $('#menu').css('height'); // узнаем высоту блока (проверяем работает ли vh)
	if(h == '0px'){ //если не работает, делаем симуляцию
			h_doc = $(document).height();
			$('.vh').css('height', h_doc);
			vh = false;	
		}
		
	$(window).resize(function(){  //изменяем значение при ресайзе окна
		if(vh == false){
 			h_doc = $(document).height();
			console.log(h_doc);
			$('.vh').css('height', h_doc);
		}
	});
});


Но при изменение размера окна, переменная h_doc суммируется. То есть консоль выдает следующее:
8176
16352
32704
65408
130816
261632
523264
1046528

В чем может быть дело?

danik.js 12.10.2014 12:56

Высота документа != Высота окна, ты вкурсе?
Ты когда увеличиваешь высоту .vh, то также наращивается высота документа, то есть из-за обратной связи высота постоянно растет.
И где потерял ключевое слов "var" перед объявлением переменных?
Цитата:

Сообщение от Makkssimka
if(h == '0px')

Это неправильное условие. Если браузер не поддерживает vh, то он проигнорирует просто это правило. То есть height будет auto либо может быть пустая строка, я тут не разбираюсь, но уж точно не 0, тем более не 0px

Также непонятно, зачем ты вешаешь обработчик window@resize даже если браузер поддерживает vh? Ну и код дублировать - это не есть гуд.

danik.js 12.10.2014 13:04

Был неправ насчет 0px. Оно может быть, но только если див пустой. Вобще я был бы тут поосторожнее с условием.


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