webForumDet fria alternativet

layers-problem

6 svar · 184 visningar · startad av i-or

i-orMedlem sedan nov. 2001308 inlägg
#1
<script type="text/javascript" language="JavaScript">
function pos(){
if(document.layers){document.layers["lagret"].left=(window.innerWidth/2)-150;}
else if(document.all){document.all("lagret").style.left=(document.body.offsetWidth/2)-150;}
else
if(document.getElementById){document.getElementById("lagret").style.left=(window.innerWidth/2)-250;}
}
onload=pos;
</script>

Har sett denna kod här på WF-forum, men på grund av brist på kunskaper i Javascript har jag inte fattat hur jag får fram värdet som jag får av skriptet ovan.

Jag ska använda skriptet för att få ett lager att hamna ett visst antal pixlar från sidans mitt. Hur ska jag skriva denna rad för att left-värdet ska vara det som java-scriptet genererat.

<div style="position:absolute; left:27px; top:20px; width:730px">

Tack på förhand

JojoxxMedlem sedan juni 20004 306 inlägg
#2

Du ser i scriptet att du subtraherar (drar ifrån) 150 på ett ställe (250 är antagligen ett skrivfel och bör vara 150 det med). Detta för att du först räknar du mitten på sidan. Sedan substraherar du ett värde som är hälften av storleken på det later som du skall placera (eftersom lagret placerat utifrån vänster-topp hörn). Vi kan alltså anta att lagret är 300 pixlar brett i exemplet. I alla fall, för att flytta lagret till höger om mitten ökar du värdet (istället för att ta -150 kanske du bara tar -100). Sedan kan det vara smart att använda Math.floor så du inte försöker placera lagret på en halv pixel. Ett exempel där vi flyttat lagret 50 pixlar åt höger;

function pos(){
if(document.layers){document.layers["lagret"].left=Math.floor((window.innerWidth/2)-315);}
else if(document.all){document.all("lagret").style.left=Math.floor((document.body.offsetWidth/2)-315);}
else if(document.getElementById){document.getElementById("lagret").style.left=Math.floor((window.innerWidth/2)-315);}
}

Tillägg:
I exemplet har jag alltså utgått från ditt lagers bredd 730/2=365-50=315

------------------
/ J

[Redigerat av Jojoxx den 16 jan 2002]

i-orMedlem sedan nov. 2001308 inlägg
#3

Tack så mycket.

Men hur jag för att kombinera javascriptet med html-koden?

För jag kan ju inte skriva:

<div style="position:absolute; left:

<script type="text/javascript" language="JavaScript">
<!--
document.write(lagret);
// -->
</script>

px; top:20px; width:730px">

Hur ska jag kombinera <div>-taggen med javascriptet och vad ska jag skriva istället för "lagret"?

Som du förstår är jag totalt handikapp när det gäller javascript.

JojoxxMedlem sedan juni 20004 306 inlägg
#4

Börja med att skapa lagret och lägga det utanför den synliga delen av dokumentet. T.ex. 1000 pixlar ovanför till vänster om sidans topp;

<div style="position:absolute;left:-1000px;left:-1000px;width:730px;" id="lagret">...</div>

Som du ser har vi även gett lagret ett id för att kunna referea till det senare. Sedan använder vi scriptet för att lägga lagret rätt;

<script language="JavaScript" type="text/javascript">
function pos(){
if(document.layers){document.layers["lagret"].left=Math.floor((window.innerWidth/2)-315);}
else if(document.all){document.all("lagret").style.left=Math.floor((document.body.offsetWidth/2)-315);}
else if(document.getElementById){document.getElementById("lagret").style.left=Math.floor((window.innerWidth/2)-315);}
}
</script>

------------------
/ J

i-orMedlem sedan nov. 2001308 inlägg
#5

Texten flyttar sig inte även om jag ändrar värdet i javaskriptet utan den är i mitten hela tiden.

<div style="position:absolute;left:-1000px;width:730px;" id="lagret">...</div>

<script language="JavaScript" type="text/javascript">
function pos(){
if(document.layers){document.layers["lagret"].left=Math.floor((window.innerWidth/2)-315);}
else if(document.all){document.all("lagret").style.left=Math.floor((document.body.offsetWidth/2)-315);}
else if(document.getElementById){document.getElementById("lagret").style.left=Math.floor((window.innerWidth/2)-315);}
}
</script>

Vet inte vad jag gjorde förut. Nu placerar sig lagret -1000px eller vad jag nu sätter det värdet till.

Ska jag ha nåt i headen??

[Redigerat av i-or den 17 jan 2002]

JojoxxMedlem sedan juni 20004 306 inlägg
#6

Heh, glömde att säga att funktionen måste anropas också. Lägg i onLoad="pos();" i body-taggen;

<body onLoad="pos();">

------------------
/ J

i-orMedlem sedan nov. 2001308 inlägg
#7

Ja, nu funkade det.

Tack så jättemycket för hjälpen, jojoxx....

Genererad på 359 ms · cache AV · v20260730165559-full.f96bc7eb