Centrowanie pop-upa

0

Cześć. Mam następujący kod (znaleziony gdzieś, kiedyś w internecie). Ma on za zadanie z DIV-a zrobić popupa po kliknięciu. Wszystko pięknie działa jednak problem jest z pozycją. Jeśli strona jest długa i znajduje się na dole po wywołaniu jego umieszcza się on na samej górze, mimo iż kod DIV jest na samym dole. Chciałbym aby cały czas znajdował się na środku, nawet jak przewijam scrollem strony.

//loading popup with jQuery magic!
function loadPopup(){
	//loads popup only if it is disabled
	if(popupStatus==0){
		$("#backgroundPopup").css({
			"opacity": "0.7"
		});
		$("#backgroundPopup").fadeIn("slow");
		$("#popupContact").fadeIn("slow");
		popupStatus = 1;
	}
}

//disabling popup with jQuery magic!
function disablePopup(){
	//disables popup only if it is enabled
	if(popupStatus==1){
		$("#backgroundPopup").fadeOut("slow");
		$("#popupContact").fadeOut("slow");
		popupStatus = 0;
	}
}

//centering popup
function centerPopup(){
	//request data for centering
	var windowWidth = document.documentElement.clientWidth;
	var windowHeight = document.documentElement.clientHeight;
	var popupHeight = $("#popupContact").height();
	var popupWidth = $("#popupContact").width();
	//centering
	$("#popupContact").css({
		"position": "absolute",
		"top": windowHeight/2-popupHeight/2,
		"left": windowWidth/2-popupWidth/2
	});
	//only need force for IE6
	
	$("#backgroundPopup").css({
		"height": windowHeight
	});
	
}
1

Jeśli tylko na podstawie document.documentElement.clientWidth/clientHeight ustalasz pozycję to właśnie masz takie efekty jak opisałeś.
Powinieneś brać rozmiar obszaru w którym wyświetlana jest strona - window.innerHeight/Width oraz musisz pamiętać o tym że podczas wyświetlania może być ona przeiwnięta (document.body.scrollTop).
Ładnie masz opisane to tutaj http://www.howtocreate.co.uk/tutorials/javascript/browserwindow z uwzględnieniem obsługi dla starszych IE.
Żeby reagować na przewijanie strony podepnij obsługę window.onscroll. Żeby było idealnie powinieneś też reagować na zmianę wielkości okna window.onresize.

Linki do pomocnych stron:
https://developer.mozilla.org/pl/Dokumentacja_Gecko_DOM
https://developer.mozilla.org/pl/DOM/element#Uchwyty_zdarze.C5.84
http://www.w3schools.com/jsref/dom_obj_event.asp
http://api.jquery.com/scroll/
http://api.jquery.com/resize
https://developer.mozilla.org/pl/DOM/window.scrollBy

2

position:fixed powinno załatwić sprawę.

1 użytkowników online, w tym zalogowanych: 0, gości: 1