Avatar billede pollas Nybegynder
02. oktober 2000 - 18:15 Der er 5 kommentarer og
2 løsninger

Skærmbredde

Jeg har brug for at kunne aflæse skærmbredden, så jeg kan placere absoultte bokse på siden afhængig af opløsningen. Jeg er klar på, hvordan jeg aflæser bredden, men hvordan får jeg sat det ind i min style?

Jeg har indtil videre denne funktion:

<script language=\"JavaScript\">
function afst {
hojde = screen.width
if (hojde == \"1024\") {
afstand = 210
}
else {
afstand = 112
}
return afstand;}
</script>

,men er den overhovedet ok, og hvordan får jeg smidt afstand ind i en <div style=\"left:[afstand]\"> ?

Anyone?

Avatar billede nixen Nybegynder
02. oktober 2000 - 18:29 #1
For det første er det måske bedre at arbejde med bredden på browservinduet, da mange mennesker med høj opløsning ikke er så vilde med fullscreen...
Værdierne her hedder
document.body.offsetWidth (ell. offsetHeight) til IE og
window.innerWidth/innerHeight til NS.

Når du så har værdierne (uanset hvilke af dem du helst vil bruge) skal du så sætte dem på objekterne, først bygger vi lige et par referencer der virker til begge browsere:
IE = document.all? true:false;
boks1CBR = IE?document.all[\'boks1\']:document.boks1
boks1CSS = IE?boks1CBR.style:boks1CBR;
og ligeså med boks 2.
(Hvis dine bokse er inden i andre lag skal netscape have den fulde reference, f.eks.
document.yderboks.document.boks1)
Derefter kan vi så placere dem:
boks1CSS.left = BreddePåHeleMøget - BreddePåBoks1
, hvor BreddePåBoks1 = IE? boks1CBR.offsetWidth:boks1CBR.document.width.
Det eneste der så mangler er at sætte POSITION property\'en på de bokse der skal positioneres til absolut, enten i en stylesheet eller <div id=boks1 style=\"POSITION:absolute;\">

Hope it helps :)
Avatar billede olebole Juniormester
02. oktober 2000 - 18:53 #2
<ole>
Det er ikke rigtig syntaks...sådan skal det se ud:

boks1CBR = IE?document.all[\'boks1\']:document.layers[\'boks1\'];
boks1CSS = IE?boks1CBR.style:boks1CBR;

...eller:

boks1CBR = IE?document.all[\'boks1\']:document.layers.boks1;
boks1CSS = IE?boks1CBR.style:boks1CBR;

\"...(Hvis dine bokse er inden i andre lag skal netscape have den fulde reference, f.eks.
document.yderboks.document.boks1)\"

Næhhh...også her:

document.layers[\'yderboks\'].document.boks1

...eller:

document.layers.yderboks.document.boks1

\"boks1CSS.left = BreddePåHeleMøget - BreddePåBoks1\"

Næhhh...heller ikke - derimod:

boks1CSS.left = (BreddePåHeleMøget - BreddePåBoks1) / 2;

Så skal du huske at vente til EFTER din <body> er skrevet med at aflæse bredden - af hensyn til IE.

/mvh
</bole>
Avatar billede nixen Nybegynder
02. oktober 2000 - 19:01 #3
>>Ole
Kære Ole - du må ikke være i tvivl om at jeg nærer endog meget stor respekt for din kunnen og udemærket ved at du generelt er en del bedre en mig til stort set det hele, MEN her synes jeg nu nok at du er lidt for (a) hurtig og/eller (b) halv-arrogant.
ifølge developer.netscape er notationen
document.layernavn og document.layers[\'layernavn\'] ligeværdig. Hvis du har en god grund til at anvende den anden må du meget gerne sige til (..jeg vil da også gerne blive klogere), men indtil da har jeg ALDRIG haft problemer med document.layernavn..
Mth. boks1CSS.left= den ene eller anden løsning antog jeg at pollas ville have boksene højrestillet - derfor min ide. Hvis din løsning skal centrere dem burde det vel iøvrigt være BreddePåHeleMøget/2-BreddePåBoks1/2...
Avatar billede nixen Nybegynder
02. oktober 2000 - 19:04 #4
>>ole
<undskylder ydmygt>
Og tag lige og glem den sidste linje - jeg fik da vist ikke ordentligt læst hvad du havde skrevet..
</undskylder ydmygt>
Avatar billede olebole Juniormester
02. oktober 2000 - 20:42 #5
nixen >> Hehe...kender godt den med at fare i tasterne lidt for hurtigt...no sweat!  :o)

Nu er jeg ikke helt klar over, om det kun går på sidste linie, men jeg kan altså ikke tro, du aldrig har haft problemer med \'document.layernavn\' - og jeg kan slet ikke forestille mig, der står nogen steder hos NetScape, at det er ligeværdigt med \'document.layers[\'layernavn\']\'. Det er derimod \'document.layers.layernavn\'. Array- og punktnotation er ligeværdige, men man kan ikke udelade \'layers\'.
/mvh

PS: Det var absolut ikke min mening at være halv-arrogant. Havde jeg ønsket at optræde arrogant, så havde jeg gjort det helt og fuldt! Jeg prøver at bestræbe mig på at gøre tingene ordentligt...ikke noget \'halvt\'!...*LOL*  ;o))
Avatar billede nixen Nybegynder
02. oktober 2000 - 21:02 #6
Ole>>*hæhæ* godt så - jeg kan også bedst lide at gøre tingene ordentligt..!

Nej, jeg fik måske også læst dit svar lidt for hastigt igennem, men det jeg mener er at følgende funktioner for mig fungerer 100% ens:
<html><head><style type=text/css>#lag {POSITION:absolute;}</style>
<script language=\"Javascript\">
IE = document.all? true:false;
function doc_onload1() {
lagreference = IE? document.all[\'lag]:document.layers[\'lag\'];
}
function doc_onload2() {
lagreference = IE? lag:document.lag;
}
</script></head>
<body onload=\"doc_onload1/2\"><div id=lag></div></body></html>
Jeg har i de sidste måneder kæmpet med netscapes dom som, uanset om man mener den er værre eller bedre, under alle omstændigheder adskiller sig noget fra IE\'s dom (som er den jeg har lært dhtml med...) - og er kommet et godt stykke forbi besværligheder med at referere objekter og har aldrig (læs:\"ALDRIG\") oplevet at netscape ikke opførte sig som jeg mente den skulle med denne notation (som iøvrigt er den eneste jeg har brugt..). NS4.x er fuldt ud istand til at forstå den - på samme måde som IE ikke behøver document.all[\'layernavn\']; det er for mig en gammel vane der hænger ved men altid bliver slettet ved kodeoptimering uden probs..
Avatar billede olebole Juniormester
02. oktober 2000 - 21:53 #7
Schhhhhh...hør lyden af Flovmand, der tygger sine ord...!  :o)

Nu har jeg testet og du har jo ret! Det virker i NS uden \'layers\' - men jeg mener nu stadig ikke, jeg nogensinde er stødt ind i det i dokumentationen hos NS - tværtimod..hmmm(?)
Under alle omstændigheder er det da skønt at blive belært, når man tager fejl - så kan man håbe, det ikke sker igen...på DET punkt...Hehe!

Skønne afvæbnende ord i de to første linier i sidste afsnit i din seneste kommentar. Du fortjener næsten at slippe for \'lyrikken\' til min \'kendingsmelodi\' - så jeg vil nøjes med at fløjte den  :o)

/mvh
The NetScape Warrior.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester