Tilpasse højden på div

Tags:    html css css3

Hejsa

Jeg er ved at lave et design til en ny side der skal være ret dynamisk og overskuelig. Derfor er det meget vigtigt at alle ting kan tilpasse sig og opsætte sig til at være med lige linier og pæn opstilling.

Der skal være en div, med to seperate divs indeni som hver fylder 50% bredde.
Div 0: Div der ligger udenom dem begge to
Div 1: Div til venstre
Div 2: Div til højre

Div 2 skal indeholde nogle kasser med billeder som man skal kunne fokusere på hvor alle skal kunne ses, og dermed skal vokse jo mere indhold der kommer i.
Div 1 skal fylde det samme som div 2 i højden og lave scroll automatisk (altså hvis det er nødvendigt). Div 1 har en masse rækker som fylder rigtigt meget, men skal ikke vise det hele - da disse to skal danne en "linie" som fylder det samme så indholdet nedenunder står rent og pænt.
Med tiden vil indholdet i div 2 vokse og komme flere kasser således at div 2 skal udvides, så en fastdefineret højde er ikke muligt.

Jeg har overvejet max-height på div 1, men eftersom det skal være div1.max-height: div2.height fungerer det ikke.

Det kan sikkert løses med javascript, men vil gerne være sikker på det altid fungerer så hvis det kan løses i ren html og css ville jeg foretrække det.

Hvad er jeres foreslag?



10 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 8 karma
Sorter efter stemmer Sorter efter dato
Det kan godt løses med ren html og css jo, men det kræver lidt snilde.

Hemmeligheden er at bruge det dobbelte antal divs af hvad du rent faktisk skal ende ud med. Metoden er beskrevet ganske fornuftigt her, og virker cross-browser uden hacks.

Hvis du har problemer med at få det til at virke, så vis din kode og vi tager den derfra.



Indlæg senest redigeret d. 28.02.2013 12:41 af Bruger #12476
Kan du ikke få Div 0 til at vokse sammen med den største af de 2 andre og sætte position:relative, og så sætte height til 100% ved den mindste af de 2 Div's eller noget lignende? :-)



du skal løse det ved hjælp af javascript, du kan ikke få css til, at opfører sig sådan der.



#Kristian
FANTASTISK! LIGE den løsning jeg søgte! Tak!

Edit: Har lige fundet ud af det ikke er det jeg har brug for alligevel :( Tror måske ikke jeg kan uden javascript. Men laver lige en fiddle og smider op så kan i kloge hoveder ligge det i blød og se om i kan løse det puslespil :D

FIDDLE: http://jsfiddle.net/xNb97/

Det er meningen at den gule kasse skal have enormt meget indhold, men altid tilpasse sig i højden til den røde med kasserne.



Indlæg senest redigeret d. 28.02.2013 13:48 af Bruger #17215
så den røde kasse med begrænset indhold skal styre højden på den gule kasse, som har masser af indhold?

Giver det så ikke mening at tildele begge divs en fixed højde, enten som en pixelværdi eller som en procentværdi, hvis du vil have det i relation til brugerens opløsning?

Giv for eksempel begge divs en højde på 80%, og tildel venstre div overflow-y: scroll. Så vil den få en scrollbar hvis indholder bliver for meget, mens begge divs altiv vil være lige høje (i dette tilfælde, 80% af højden på deres container).

Jeg har ændret i din jsfiddle for at vise eksemplet. Containeren er rød, venstre kasse gul og højre kasse grøn.

EDIT: nå, den fik en ny URL :P se her: http://jsfiddle.net/xNb97/11/
hvis den da virker..

Hvis højden af begge divs skal styres dynamisk af indholdet i højre div, så skal du nok ud i noget javascript (med mindre du kan styre containerens højde i absolutte termer)..



Indlæg senest redigeret d. 28.02.2013 14:17 af Bruger #12476
Er der nogen der kan forklare mig hvorfor mit indlæg har fået minus? Det forstod jeg ikke helt.

så den røde kasse med begrænset indhold skal styre højden på den gule kasse, som har masser af indhold?

Giver det så ikke mening at tildele begge divs en fixed højde, enten som en pixelværdi eller som en procentværdi, hvis du vil have det i relation til brugerens opløsning?

Giv for eksempel begge divs en højde på 80%, og tildel venstre div overflow-y: scroll. Så vil den få en scrollbar hvis indholder bliver for meget, mens begge divs altiv vil være lige høje (i dette tilfælde, 80% af højden på deres container).

Jeg har ændret i din jsfiddle for at vise eksemplet. Containeren er rød, venstre kasse gul og højre kasse grøn.

EDIT: nå, den fik en ny URL :P se her: http://jsfiddle.net/xNb97/11/
hvis den da virker..

Hvis højden af begge divs skal styres dynamisk af indholdet i højre div, så skal du nok ud i noget javascript (med mindre du kan styre containerens højde i absolutte termer)..


Desværre nej.
Højden på wholecontainer (røde), skal følge højden på right (grønne). Således at jo flere kasser der kommer i right (grønne), jo højere bliver den og jo højere bliver left samtidigt også (gule).
Fixed height dur ikke fordi med tiden skal der komme flere kasser, og er lidt irriterende at ens design skal rettes jo mere indhold siden får og ikke blot tilpasser sig selv til indholdet.

Designet skal netop være clean i lige linier og kasser således at de to kasser er lige store og der ikke er en laaaaang venstre div (gule) og en lille højre (grønne) der ikke følger med da det ikke ser pænt ud.



Indlæg senest redigeret d. 01.03.2013 11:00 af Bruger #17215

Desværre nej.
Højden på wholecontainer (røde), skal følge højden på right (grønne). Således at jo flere kasser der kommer i right (grønne), jo højere bliver den og jo højere bliver left samtidigt også (gule).
Fixed height dur ikke fordi med tiden skal der komme flere kasser, og er lidt irriterende at ens design skal rettes jo mere indhold siden får og ikke blot tilpasser sig selv til indholdet.

Designet skal netop være clean i lige linier og kasser således at de to kasser er lige store og der ikke er en laaaaang venstre div (gule) og en lille højre (grønne) der ikke følger med da det ikke ser pænt ud.


Well, hvis den dynamiske højde på den mindste af kasserne skal være bestemmende for begge kassers højde (sjældent tilfælde), så er du nød til at gøre det med ECMAScript efter siden er loadet. Bruger du jQuery, kan du f.eks. gøre noget ala denne pseudo-kode (ikke testet):

Fold kodeboks ind/udJScript kode 


Du kan selvfølgelig også droppe .height() metoden og udelukkende bruge .css(), men mange finder det nemmere at læse koden, hvis de genvejsmetoder som findes anvendes (især i chained metodekald).



Indlæg senest redigeret d. 01.03.2013 11:21 af Bruger #12476
du er nødtil, at bruge .outerHeight for, at hente den rigtige højde ind, ellers tages der ikke højde for padding.



Er der slet ingen der kan forklare mig hvorfor mit indlæg skal have minusstemmer?

- Har jeg sagt noget som principielt er forkert?
Mig bekendt har jeg ikke udtalt mig om noget teknisk i mit indlæg som kan være forkert.

Har jeg sagt noget voldsomt negativt til en anden bruger?
Hvis det er tilfældet så forklar det gerne til mig da jeg ikke selv kan se det eller anden grund til hvorfor mit indlæg har fået minus?



@Andreas
Problemet er at den venstre (Div 1) vil altid have langt mere indhold end den højre (div 2), men skal altid have samme højde som den højre (div 2).

Så problemet er at den største skal reducere sin egen størrelse til at passe til den mindste :(
Har rodet ret meget med det, og umiddelbart synes jeg ikke lige jeg kan finde en løsning :(



t