05. maj 2003 - 19:43Der er
25 kommentarer og 3 løsninger
resize window afhængig af sktiftstørrelse
På min hjemmeside har jeg et link, der bevirker, at et andet vindue popper op når det aktiveres:
<head> <script> function NytVindue(url,navn) { var options="toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=no,copyhistory=no,width=350,height=480,top=100,left=100"; msgwindow=window.open(url,navn,options); } </script> </head> <body> <a href="java script:NytVindue('NySide.asp','Nyside');">Kilk her</a> </body>
Siden er stylet med css, og derfor betyder det intet for layoutet om brugeren fra sin browser vælger større/mindre skriftstørrelse. MEN er PC'en indstillet (via kontrolpanel -> Skærm -> Indstillinger -> Avanceret) til STORE skrifttyper, er der ikke plads i vinduet til al tekstes.
SOm det fremgår af min javascriptfunction, vil jeg gerne undgå scrollbars. Så - hvad er løsningen - jeg vil gerne have vinduets størrelse til at passe uanset indstillingerne på den PC der viser hjemmesiden. Kan man fra javascript læse om der er valgt store/små skrifttyper, og så lave en funktion der resizer derefter.
Eller hvad kan jeg gøre? Størrelsen på vinduet er præcis som den skal være, hvis brugeren anvender små skriftstørrelser på
Prøv dette: Det ene sidste afsnit skifter størrelse, hvis der vælges stor skrift: <div style="font-size:18px;"> Halløj med dig! </div> Halløj med dig også
Jeg har jo stylet al tekst på hjemmesiden med at linke til et CSS (ikke vist i min kode). Derfor er al tekst defineret med en absolut størrelse, fx. 11px.
Men tekstens størrelse ændrer sig, hvis brugeren har valgt at have sin PC indstillet med stor skrifttyper fremfor små skrifttyper. Og jeg kan ikke se hvad din kode skulle hjælpe på det problem?
Vinduet måler 350x480, og der er ikke plads til al teksten hvis brugeren har valgt store skrifttyper. Hvad gør den kloge tiger så?
Når jeg indstiller computeren til store skrifttyper, vokser den skrift, som IKKE er sat med css som vist i mit eksempel. Med små skrifttyper er andet eksempel lidt mindre, men med store skrifttyper fylder andet eksempel ca. 50 % mere end det med css.
En anden ting er, at i dit eksempel er vinduet ikke altid lige stort. Hvis bredden af vinduet er 350 i en 800 skærm, så skal den være ca. 450 i en 1024 skærm for at have samme bredde i forhold til skærmen.
Ja ja - alt det med skærmopløsning ved jeg godt. Spørgsmålet er, hvad jeg gør for at løse problemet.
Jeg har i mellemtiden fået en ide: Hvis jeg smider hele teksten ind i en tabel - kan jeg så smide en funktion ind, der resizer vinduet afhængig af tabellens størrelse? Tabellen vil jo skifte størrelse alt efter om der anvendes store/små skrifttyper:
<head> <script> function ResizeWin () { strWidth = document.Mintabel.width strHeight = document.Mintabel.height window.resizeTo(strWidth,strHeight) } </script> </head> <body OnLoad="ResizeWin();"> <table name="Mintabel"><tr><td> bla bla - indhold af siden </td></tr></table>
Ovenstående er skrevet frit efter fantasi - vil det virke (den PC jeg sidder ved lige nu kan jeg ikke skifte skrifttype på, så jeg kan ikke teste - men kan man aflæse tabellens bredde på den måde jeg forsøger?
Boris: Det du prøver at fortælle mig er, at hvis jeg styler med css påvirkes tekststørrelsen ikke af om brugeren har store/små skrifttyper? Hvis det er rigtigt forstået, lyder det meget mærkeligt, for jeg oplever det modsatte...
For enkelthedens skyld vil jeg koge mit problem ned til følgende:
Et link på side1.html åbner side2.asp i et nyt vindue. Hvordan sikrer jeg mig, at side2.asp ikke har scrollbars, adresselinie osv og at det har en størrelse, så indholdet af side2.asp netop lige præcis kan være i vinduet det vises í - UANSET hvilke indstillinger brugeren måtte have på sin PC?
Jamen jeg synes også det er mærkeligt at jeg oplever det modsatte af det du oplever, og jeg er mægtig nysgerrig m.h.t. hvorfor. Har du prøvet mit lille eksempel med div afsnit? Du kan godt sætte tabelbredden med document.getElementById("mintabel").style.width = "55" (<table id="mintabel"...... og derefter kan du også læse bredden med javascript, men kun når du har sat den med javascript, og så er bredden jo fast!
Du kan på side 1 måle skærmstørrelsen ved hjælp af javascript screen.width og videresende dette tal til side 2, som starter med at gemme det som en variabel og derefter sætter absolut skriftstørrelse v.h.a. CSS samt størrelse af vinduet på baggrund af denne variabel. Jeg plejer at sige at alle tallene for en 1024 skærm ganges med 1,3 i forhold til en 800 skærm.
Ja - men problemet er jo, at min tekst fylder mere/mindre afhængigt om der er store/små skrifttyper på PC'en, uanset at jeg styler med CSS. Det problem kan jeg ikke få løst...
Jeg ved ærligt talt ikke hvorfor. Men prøv at gøre som jeg har gjort med <div style="font-size:14px;"> Et tekstafsnit</div> <div style="font-size:14px;"> Et andet tekstafsnit</div> Hvis det ikke hjælper, så prøv en anden font.
Fejl: 'document.Mintabel.style' er null eller er ikke et objekt :o(
Måske er løsningen bare at smide scrollbars på, og så acceptere, at folk må scrolle lidt hvis de har valgt at bruge store skrifttyper. Lidt uelegang, meeeeen...
Prøv med currentStyle i stedet for, biblen nævner, at der kan være problemer med properties, som ikke er explicit sat inden for scopen, så M$ har lavet et hack ...
Husker det store bogstag samt det ; du har glemt hvor du beregner højden ;o) Og runtimeStyle giver samme fejl - tror ikke den vil acceptere en tabel som et objekt...
Altså hente scrollwidth og scrollheight (der jo må angive størrelsen på "indholdet" af vinduet), og sætte vinduets størrelse efter disse. Nu er jeg ikke den helt store javascript koder, så lidt hjlæp kunne være lækkert :o)
Og hvordan sikrer jeg mig, at det virker i både IE og NS?
Se problemet fra fugleperspektiv - måske er der helt andre veje at gå? Ja, det var der så ;o)
Synes godt om
Ny brugerNybegynder
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.