Avatar billede snigeren Nybegynder
04. januar 2010 - 17:23 Der er 12 kommentarer og
2 løsninger

div problem i css

Mit problem er med følgende layout i css med div tags:

sitet so far: http://www.3dz.dk/misc/template.html
div layout: http://www.3dz.dk/misc/images/layout.jpg

#wrapper div: er 500px i højden for at få baggrundsbilledet med (togskinner)
  #navwrapper div: er 100% i højden
    #nav div: har ikke nogen højde diffineret
    #verticalline div: er sat til 100% i højden (for at den lodrette streg er gennemgående som man kan se i template.html)
  #content div: er sat til 100% i højden

Hvordan kan jeg få indholdet (bla bla tekst der er sat ind) til at gøre afstanden ned til footeren større så den ikke gør som man kan se?
Samtidig skal den lodrette streg hele tiden fylde afstanden mellem toppen og footer.

Har også prøvet at fjerne alle højde angivelser.

Hvis man kan lave det med en scrollbar i #content div kan det måske løse problemet. Men ved ikke om det er smart.

Her kan i se hele css:
#bg
{
    position: absolute;
    top: 0px;
    left: 0px;
    background: #fff url('images/bg.gif') repeat-x;
    width: 100%;
    height: 818px;
    z-index: 1;
}

#container
{
    margin-left: auto ;
    margin-right: auto ;
    width: 900px;
    font-family: Verdana, Arial, Helvetica, sans-serif;
    font-size: 12px;
    border-style: solid;
    border-color: #beb099;
    border-width: 1px;
    background-color: #f9f9f7;
}

#top
{
    width: 900px;
    height: 112px;
    background: url('images/topbg.jpg') no-repeat;
}

#topnav
{
    width: 900px;
    height: 31px;
    background: url('images/topnav.jpg') no-repeat;
}

#topnavleft
{
    float: left;
    width: 340px;
    height: 31px;
}

#topnavright
{
    float: right;
    width: 560px;
    height: 31px;
}

#wrapper
{
    width: 900px;
    height: 500px;
    background: url('images/mainbg.jpg') no-repeat;
}

#navwrapper
{
    float: left;
    width: 246px;
    height: 100%;
}

#nav
{
    float: left;
    width: 245px;

/*    border-right-style: solid;
    border-right-color: #beb099;
    border-right-width: 1px;*/
}

#verticalline
{
    float: right;
    width: 1px;
    height: 100%;
    background: url('images/dot.gif') repeat-y;
}

#content
{
    float: right;
    width: 654px;
    height: 100%;
}

#footer
{
    width: 900px;
    height: 65px;
    border-top-style: solid;
    border-top-color: #beb099;
    border-top-width: 1px;
    text-align: right;
}

Håber det giver mening og at I kan hjælpe mig. =)

/Snig
Avatar billede Slettet bruger
04. januar 2010 - 17:40 #1
100% i højden er noget lort (eller rettere CSS-paverne kan ikke li' det)
- masser af problemer med forskelle i browsernes rendering (sur erfaring!)

Et (elegant?) alternativ er at benytte:
position:absolute;top:0px;bottom:0px;

Det fortæller at den skal starte øverst og slutte nederst i containeren.
Og ikke nok med det: Evt. top/bottom-border/margin/padding medfører IKKE at div'en vokser ud af containeren (som ved height:100%)

Prøv det, det løste ALLE mine problemer med CSS  : )
Avatar billede snigeren Nybegynder
05. januar 2010 - 02:41 #2
uhm jeg går udfra at du mener jeg skal lave position: absolute; på mit #wrapper div ikke sandt?

Men hvis jeg gør det og bare skrive top: 0px; og bottom: 0px; er det som om den ryger helt væk fra sin plads og op i toppen af skærmen og lægger sig oveni mit #container div.

kan jo så rykke den ned med top: 143px; men så ligger den jo stadig ovenpå det hele og bliver ikke påvirket af tekst eller noget.

se mit layout: http://www.3dz.dk/misc/images/layout.jpg
Avatar billede Slettet bruger
05. januar 2010 - 14:53 #3
Det var nu mere en generel betragtning...
Du kan benytte denne metode istedet for height:100% alle steder.
- gør det MEGET lettere at regne med, og man slipper for "hardcodet" positionering - de indre div'er tilpasser sig automatisk til de ydre.

F.eks er det let at sørge for at både header og footer altid er synlige, og at footeren faktisk "står på" bunden af vinduet.
- og content div'en giver du bare en overflow:auto, så får den scroll-barer hvis nødvendigt og body's scroll kan så helt undværes (body {overflow:hidden})

Det virker selvfølgelig også i bredden: drop width og brug i stedet left og right.
Inden du får set dig om, er det kun containerDiv's bredde der skal specificeres (som et hårdt tal) - resten følger bare med automatisk og passer hvergang.

Start helt forfra på dit css-layout med dette "trick" in mente : )
- er også MEGET lettere at modificere senere hen...
Avatar billede snigeren Nybegynder
05. januar 2010 - 15:38 #4
hehe ok

Well jeg har imidlertid fundet ud af hvordan clear:both; kan bruges =)

så i slutningen af mit wrapper div med nav float left og content float right får den lige en clear:both; så floater den ikke over fooderen. og får at lave min gennemgående lodrette streg har jeg givet mit content div border-left på for content er nok altid størst alligevel.

Hvordan med at bruge min-height på content er det også skidt? jeg har slettet alle andre height og width mål. Bare i tilfælde af at content ikke er højere end menuen...

Lige i det her tilfælde er det lykkedes at lave layout uden brug af position, andet end på bg div.
Avatar billede snigeren Nybegynder
05. januar 2010 - 16:34 #5
hmm har lige et enkelt spørgsmål som du måske også kan svare på =)

I mit wrapper div vil jeg gerne have tre baggrundsbilleder, kan dette lade sig gøre?

- det ene skal bare være et billede der ligger i toppen uden repeat
- det næste er nogle skrå streger i bunden af wrapperen ovenpå ovenstående billede, repeat-x
- det sidste er en gennemgående streg fra top til bund med repeat-y

Jeg så noget med layered images men det var fra 2005 og tænker det er for gammelt?

sådan som jeg har lavet det nu og det virker i explorer og firefox, (hold på hat og briller!) istedet for et wrapper div har jeg lavet tre uden om hinanden med hver sit bg image... er det fuldstændig sindsygt at gøre det sådan? =)
Avatar billede Slettet bruger
05. januar 2010 - 17:50 #6
Nej da. Hvis det virker så virker det : )

Kan man se det et sted ?
Avatar billede snigeren Nybegynder
06. januar 2010 - 01:37 #7
yep yep
http://www.3dz.dk/misc/templateny.html

der er jernbaneskinner,den lodrette streg og de skrå streger i bunden der fader ud =)

smider du ikke lige et svar så dele vi i porten ;)
Avatar billede Slettet bruger
06. januar 2010 - 10:25 #8
Smukt.

Men ville du ikke putte scroll-baren i contentDiv'en i stedet for "den store" ?
Avatar billede snigeren Nybegynder
06. januar 2010 - 13:44 #9
Jo, hvis jeg vælger at bruge scroll,.. kan man gøre så der kommer scroll hvis den bliver højere end browseren? ellers har jeg kun kunnet sætte scroll på hvis jeg fastsatte en højde.

Lige nu er der ingen højde på bg, container, nav eller content. Og så kan jeg ikke finde ud af at få scroll på content... Men hvis jeg fastsætter en højde på nav og content og overflow:auto; får jeg scrollbar på begge.
Avatar billede Slettet bruger
06. januar 2010 - 18:47 #10
Tja.. nu ER det jo også mest normalt med "den store" scrollbar.
- Mit forslag var bare for det tilfælde at footeren SKULLE være synlig uanset content's størrelse.

Lad os kalde det løst, og dele i porten :)
Avatar billede snigeren Nybegynder
06. januar 2010 - 19:56 #11
Vær´sgo =)

Men bare lige for at være på det rene kan man egentlig sætte overflow til og få scrollbar uden at sætte en højde?

Og hvordan kan man sørge for at footeren står fast på browserbunden?
Avatar billede Slettet bruger
07. januar 2010 - 00:20 #12
Jo det skal være en grænse for hvor meget blokken kan vokse, f.eks. at den har en fast (eller maximal) højde, eller at dens parent har det...

Footeren:
Du ku. f.eks. give at "bg" {position:absolute; top:0;right:0;bottom:0;left:0;}
- så fylder den præcis hele vinduet - også selvom brugeren trækker i det.
Og derefter placere "footeren" med: {position:absolute; right:0;bottom:0;left:0;right:0;height:30px;}

(og 'content' ovenover med: bottom:30px; ikk' så er dens højde begrænset)
Avatar billede Slettet bruger
07. januar 2010 - 00:22 #13
hov, footeren fik 2 gange right, én er nok, pointen er at den ikke har nogen top - den "beregner" browseren selv dynamisk (bottom - height)
Avatar billede snigeren Nybegynder
07. januar 2010 - 01:14 #14
haha ja flot jeg kender min-height mon ikke der så også er noget der hedder max-height :P

men igen tak for hjælpen, jeg har ikke lige testet det gider ikke lige nu hopper i seng men det lyder ganske fornuftigt det du siger ;)

Nogle gange skal man vist bare tage sig sammen og tænke sig om en ekstra gang... =)
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