Avatar billede skovge Novice
24. september 2007 - 12:58 Der er 12 kommentarer

Problemer med height 100%

Jeg har en side hvor jeg gerne vil have et bestemt baggrundsbillede midt på skærmen (så man kan se baggrundsfarven på begge sider) og så det fylder hele skærmens højde.

Jeg bruger så:
<div style"padding:0px;    width:870px; height:100%; margin-left:-435px; position:absolute; left:50%; top: 0px;        background-image:url(images/background.jpg)>

...ingen problemer, det fungerer fint og jeg har mit billede fra top til bund - når jeg så fylder indhold i og indholdet fylder mere end højden på skærmen, dvs. der skal scrolles ned, så går mit baggrundsbillede ikke helt ned mere.

Er 100% = skærmopløsningen?  - og hvis det er, hvordan løser jeg det så, således at mit billede altid fylder hele skærmens højde?
Avatar billede stenger Nybegynder
24. september 2007 - 13:30 #1
100% er netop 100% af skærmen. Dvs. det er to forskellige værdier ved to forskellige opløsninger. Nu ved jeg ikke hvordan dit billede ser ud, men måske det kan løses ved at indsætte en background-repeat:repeat-y; ?
Avatar billede skovge Novice
24. september 2007 - 13:34 #2
Hmmmm, selv om jeg sætter background-repeat til, så vil selve div'en jo stadig kun være skærmens højde - så det hjælper ikke rigtigt noget.
Avatar billede stenger Nybegynder
24. september 2007 - 13:36 #3
Har du brug for højde på div´en? Nu kender jeg selvfølgelig ikke dit design, men var det ikke mere hensigstmæssigt at den bare udvidede sig alt efter indholdet?
Avatar billede skovge Novice
24. september 2007 - 13:39 #4
Meningen er at den skal fylde hele skærmens højde - også selv om indholdet ikke fylder hele siden ud.
Avatar billede stenger Nybegynder
24. september 2007 - 13:52 #5
Så skal du måske bare køre med dit billede i toppen og når du så løber "tør" for billede (det vil sige, kommer ud over de 100%), gå over til at køre med background-color på selve din body.

Det vil gøre at background-color ikke skinner igennem i toppen (så længe billedet fylder det hele), mens at så snart du kommer ud over de 100%, vil farven tage over. Den skal så matche billedet nogenlunde.
Avatar billede skovge Novice
24. september 2007 - 14:06 #6
Det går vist ikke i det her tilfælde - prøv at se her:
http://www.icube.dk/test/smh/test.htm

Som du kan se, så vil jeg gerne have "papiret" til t fylde hele skærmens højde.

Hvis du så ctrl + indtil teksten bliver så stor at den går nedenud af billedet, så kan du se problemet.
Avatar billede stenger Nybegynder
24. september 2007 - 14:16 #7
Øh... kan ikke rigtig se problemet :) Men sidder også kun med IE7 og FF lige nu... og der ser det da meget fornuftigt ud.
Avatar billede skovge Novice
24. september 2007 - 14:21 #8
Ja, men ikke hvis skærmopløsningen er lav - eller der kommer meget indhold på siden - hvis du f.eks. forstørrer teksten med ctrl + så den går ud over sidehøjden, så fremkommer problemet.

Har lige lagt lidt mere tekst ind - prøv at se igen.
Avatar billede stenger Nybegynder
24. september 2007 - 15:05 #9
Tror det bliver meget svært... jeg ved ihvertfald ikke hvordan :) Problemet er jo at 100% er det hele, men kun af det du kan se... dvs. alt under scrollbaren ikke tæller med.

Ved ikke lige hvordan det skal løses, hvis det er påkrævet at hele siden altid er fyldt ud, lige meget hvor meget indhold der er.
Avatar billede skovge Novice
25. september 2007 - 08:18 #10
Okay - tak for forsøget anyway.  :-)

Btw - opdagede lige at www.krak.dk har den funktion jeg leder efter - der udvider den sig når indholdet bliver større end skærmens højde - kan desværre ikke lige lure i deres kode hvordan det er gjort.
Avatar billede johan.o Nybegynder
25. september 2007 - 23:16 #11
Det du vil have er at en omkrandsende <div> skal udvide sig i forhold til indholdet, men når du placerer alt indholdet med position: absolute, fjerner du netop afhængigheden mellem de forskellige elementer.

<div style="border: 1px solid red;">
<div style="position: absolute; height: 100px; width: 100px; border: 1px solid blue;"></div>
</div>

Du vil (forhåbentlig) :) se ud fra denne kode stump at den omkrandsende <div> ikke udvider sig i forhold til indholdet.

Så du skal have bragt afhængigheden tilbage i dit design. Prøv at lave følgende ændringer og se så om ikke det kan hjælpe dig på vej :)

I test.htm skal indholdet se således ud (brudstykker)....

...
<div id="center">
<div id="menuCon" style="height: 190px;">
<div id="top"></div>
...

...
<div id="headerbox">
<span class="H1">SPECIALISTER I MERCEDES!</span></div>
</div>
<div id="textbox" style="left:60px">
At købe en Mercedes er ikke bare at købe en bil - det er at købe en oplevelse!
...

I stylesheet.css skal følgende ændres...

...
#center {
padding:0px;           
width:870px;
/* height:100%; */
margin-left:-435px;
position:absolute;
left:50%;
top: 0px; /*50%;*/
background-image:url(images/background.jpg);
}
...

...
#textbox {
position: relative; /* absolute; */
top: 0px;
width: 350px;
height: 100%; /* ændret fra 450px; */
z-index:5;
}
...

Lad høre om det hjælper noget :)

Men som sagt er udbredt brug af position: absolute; 'uheldig' :)

Mvh. Johan
Avatar billede skovge Novice
11. oktober 2007 - 08:16 #12
Hmmm yes - I see your point, men det giver mig så nogle andre problemer med positioneringen af mine elementer + det vil ikke fylde siden helt ud, hvis indholdet er mindre end skærmens height.

Tror det ender med en helt anden løsning, med en afsluttet bottom.

Men tak for forsøgene anyway.

Hvis der er nogen der vil have point, så smid et svar.
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