18. maj 2005 - 12:25Der er
33 kommentarer og 2 løsninger
height=100% og scroll
Hej. Jeg vil gerne lave et layout i en tabel, der fylder 100% i både højde og bredde. Der er 2 rækker i tabellen, og den første har fast højde (fx 100px). Den næste (og her kommer problemet) skal fylde resten, og hvis indholdet fylder mere end der er plads til på siden, skal der kun scrolles i den række (altså 2. række)!
Måske er det smartere bare at lave dem med div's og css (altså uden tabeller), men det har jeg ikke så godt styr på, så hvis nogen har et løsningsforslag i den retning er jeg også interesseret.
Det er vigtigt at det både fungerer i Internet Explorer og Moxilla Firefox. Og helst også uden problemer i Safari (mac)
-------------------------------------------- Min kode (som ikke virker efter hensigten!!) -------------------------------------------- <table border=1 height="100%" width="100%"> <tr height="100"><td>1 række</td></tr> <tr><td><div style="overflow: scroll">En masse indhold!!!</div></td></tr> </table> --------------------------------------------
Ja, det kan jeg kune være enig i, men fungerer ikke efter hensigten i min kode!! Problemet er muligvis at den ikke kan finde ud af højden på 100%, og dermed ikke ved hvornår der er overflow!!... hvis du forstår...
jeg ved ikke lige hvordan du skal gøre, men jeg har da forsøgt at lave et fusket tweak, dog er det langt fra perfekt og der må findes en bedre løsning derude.
Ja, det reagerer lidt mærkeligt, og scrollbaren starter i toppen, men rent funktionelt gør den som den skal. Jeg prøver lige at rode lidt med den.... tak.
dog synes jeg ikk du skal bruge den, da det ikke er en optimal måde at gøre det på, men hvis det kan hjælpe folk til at se hvad det er du mener så er det da en hjælp.
Jeg har observeret at der somme tider er forskel på hvad der vises alt efter om man har placeret sin styling i en CSS og bruger class-atributten, eller om man bruger style-attributten. Måske virker nedenstående bedre (dog stadigvæk kun testet med MSIE 6.0):
plazm: tjaaa... jeg må tilstå at jeg ikke rigtig kan få det til at fungere optimalt. Jeg tillader mig lige at vente og se om der kommer andre forslag...
Prøv at lægge et link til siden, for der er flere ting, der gør, løsningen afhænger af resten af koden.
Generelt kan man dog sige, du selv 'bestiller' en lodret scrollbar. Hvis du sætter en tabel til at være 100% høj - og body'en er f.eks. er 600px høj - vil tabellen blive 600px høj. Sætter du så yderligere en border på tabellen på 1px, vil den naturligvis blive 602px - og introducere en scrollbar ;o)
Uden en fuld DTD, kan man ikke få CSS til at virke i IE. Den _skal_ indeholde en definitions-URL og kan f.eks. se sådan ud: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
nielle >> Dine observationer omkring forskelle mellem CSS-rules, sat i inline-styles og stylesheet, må det bero på fejl og/eller uhensigtsmæssigheder i din kode. Det er der ingen forskel på, hvis koden ellers er korrekt.
Nu har jeg prøvet en snes forskellige varianter. Desværre, uden det store held. :^(
I MSIE går det som en leg - i Firefox synes det nærmest at være en umulighed. Ikke et ondt ord om Firefox i den anledning, men selve problemstillingen synes da at være ret fundamental og burde derfor have en ganske simpel løsning.
olebole> Det er muligt at jeg har gjort noget galt dengang. Det er nu over to år siden, så jeg kan ikke huske de nærmere detaljer. Jeg blev godt nok også selv overrasket, for jeg forventede bestemt da at det forholdte sig som du siger. Imidlertid er der jo stor forskel på "burde gøre" og "gør", og jeg er rimeligt sikker på at jeg observerede noget "meget mystisk". Det kan meget vel være at tingene er meget bedre nu, men mon der ikke stadig er en browser eller to, som ikke gør tingene som den "burde gøre"? Jeg synes at jeg kan huske noget med at det involverede en Mozilla-browser i det aktuelle tilfælde.
nielle >> Jeg bygger ikke min argumentation på, hvad der "burde" ske, men hvad jeg ved om CSS og de forskellige browseres håndtering af det. Jeg har kodet siden NS2.0 og jeg er aldrig stødt ind i problemet ... eller har hørt om andre, der er. Selv ikke i NS4.X - som ikke havde CSS implementeret - var der forskel på properties, sat i inline-styles og stylesheet.
Ofte ligger der dog små uopdagede fejl og/eller uhensigtsmæssigheder og gemmer sig i koden. De kan være skyld i mange former for uforventet opførsel, som så tolkes som en browser-bug :)
Det aktuelle problem opstår, fordi der ikke explicit kan angives en højde i den nederste tabelrække (eller dens celler). Derfor kan højden på denne rækkes child-elementer heller ikke sættes med en relativ højde - f.eks med: 'height:100%'.
CSS stipulerer desuden, at et element explicit skal have sat en højde, hvis overflow skal give mening på elementet.
Hej alle 3. Beklager jeg har været væk fra spørgsmålet i lang tid.... meget travlt :o). Jeg endte med at lave designet om, så hele siden scroller. Ærgerligt at der ikke findes en løsning, der er ligetil på så fundamental en ting! Man kan selvfølgelig lave det ved at måle vinduets højde med javascript, og så skrive fast højde på række nr. 2. Jeg har prøvet det nogle gange, men jeg synes bare aldrig det bliver helt godt...
Jeg synes I skal dele pointene. Tak for indsatsen og kommentarerne.
roenving, den har vi været forbi i et tidligere forsøg fra mig, men det var ikke optimalt, når scroll ryger bag ved toppen, og jeg ved godt man så kan gøre toppen en scrollbar mindre, men så kommer man alligevel forbi javascript.
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.