webForumDet fria alternativet

absolut > relative eller annat sätt?

JavaScript

1 svar · 224 visningar · startad av roady

Medlem sedan jan. 2002473 inlägg
Frågan#1

Jag blir inte klok på det här, om vanligt är det Netscape 4 som krånglar...

Här bestämmer jag inställningarna:

<style type="text/css">
#divCont {position:absolute; z-index:1; left:50px; top:70px; height:400px; width:170px; visibility:hidden;}
</style>

Eftersom jag har min sida centrerad så måste jag flytta mina DIV på sidan så de hamnar rätt. Detta kan man väll komma undan om man lägger det i en tabell, med position:relative...
Men om jag uppfattat det rätt så går inte det i Netscape 4 :(

Annars kan jag kolla browserna storlek:

<SCRIPT>
function getClientWidth(){
	if(document.all){
		return document.body.clientWidth;
	} else {
		return window.innerWidth;
	}
}
</SCRIPT>

och sedan räkna ut och ange var DIV:en skall ligga:

<SCRIPT>
document.getElementById("divCont").style.left = (getClientWidth()/2 - 370) + "px";
</SCRIPT>

Men detta funkar inte heller i Netscape! någon som har en bra lösning :q

Medlem sedan juni 20004 308 inlägg
#2

Netscape 4.x använder inte den objektmodellen (den fanns inte när 4:an skrevs. Använd denna funktion för att flytta lager;

function moveLayerAbs(Id,x,y){
	if (document.all){
		if (x) document.all[Id].style.left = x;
		if (y) document.all[Id].style.top = y;
	} else if (document.layers){
		if (x) document.layers[Id].left = x;
		if (y) document.layers[Id].top = y;
	} else if (document.getElementById){
		if (x) document.getElementById(Id).style.left = x+'px';
		if (y) document.getElementById(Id).style.top = y+'px';
	}
}

Den fungerar med både Netscapes och IEs gamla objektmodell och den nyare DOM. Annars kan du använda layerlib.js som båda dessa funktioner och fler därtill härstammar från.

254 ms totalt · 4 externa anrop · v20260731065814-full.e96017d9
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)
121 ms — ändringar (db)