Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[CSS] 2 kolommen divs, gelijke (onbekende) height zetten

Pagina: 1
Acties:

  • gizmo9003
  • Registratie: November 2000
  • Laatst online: 19-11 08:29

gizmo9003

Go For It!

Topicstarter
Ik heb een layout met 2 kolommen (floating divs).
De eerste kolom bevat 5 div's, van 600 pixels breed. De middelste is een content div, waarvan de lengte op voorhand niet bekend is.
De 2e kolom moet over de gehele lengte van de pagina meelopen (rightsidebar).
Dit geheel staat in een container div.

Is de tekst in de content div minder dan 1 pagina lengte, dan moeten de kolommen automatisch opgerekt worden tot 100%, dat lukt me. De rechter div op 100% krijgen lukt me ook.
Maar er ontstaat een probleem, als er wat meer (meer dan 1 pagina) tekst in de content div staat. De linkerkolom wordt dat netjes opgerekt, maar de rechterkolom blijft precies "1 pagina" hoog.
Terwijl de omringende div wel netjes mee rekt.

Weet iemand de oplossing?
Op internet vind ik oplossing met "position; absolute", maar dan krijg ik mijn rechterkolom niet meer zo dat deze de gehele 'overige ruimte' in de breedte opvult, wat nu zonder position definitie wel netjes lukt.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#container {
  position: relative;
  overflow: auto;
  border: 3px solid;
}
#header {
  float: left;
  width: 600px;
  border: 1px solid;
}
#rightsidebar {
    min-height: 100%;
  overflow: hidden;
  border: 1px solid;
  background: red;
}
#gradientbar {
  float: left;
  width: 600px;
  border:1px solid;
  clear: left;
}
#menu {
  float: left;
  width: 600px;
  border:1px solid;
  clear: left;
}
#main {
  float: left;
  width: 600px;
  height: auto;
  border:1px solid;
  clear: left;
}
#footer {
  float: left;
  width: 600px;
  border:1px solid;
  clear: left;
}

html, body {
    margin: 0;
    height: 100%;
    }


En vervolgens:
code:
1
2
3
4
5
6
7
8
 <div id="container">
     <div id="header">header dingetje</div>
     <div id="gradientbar">gradientbar</div>
     <div id="menu">menubalkje</div>
         <div id="main">hier dan veel meer tekst plaatsen dan 1 pagina</div>
         <div id="footer">footer balkje</div>
     <div id="rightsidebar">rechterkant</div>
 </div>

tjah..


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 20-11 11:59

NMe

Quia Ego Sic Dico.

Faux columns of display: table-cell.

offtopic:
Als je echt alleen maar divs gebruikt (en niet alleen hier in dit voorbeeldje) wil je misschien eens gaan kijken naar de juiste semantiek voor je pagina. Met name je #header en #menu kunnen beter respectievelijk <header>/<h1> en <nav>/<ul>-tags zijn.

[ Voor 78% gewijzigd door NMe op 06-01-2014 19:20 ]

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • gizmo9003
  • Registratie: November 2000
  • Laatst online: 19-11 08:29

gizmo9003

Go For It!

Topicstarter
NMe schreef op maandag 06 januari 2014 @ 19:18:
Faux columns of display: table-cell.
Table-cells lijken me inderdaad interessant, ben er wat mee aan het puzzelen. Zie alleen dat er niet zoiets bestaat als row-span in de table-cell display. Dus dan krijg je 5 rijen van 2 kolommen, waarbij de rechter kolom dus ook in 5 rijen is opgesplitst. Er zijn wat hack-arounds met inline blocks plaatsen om dat te 'verbergen', maar dat lijkt me ook weer niet de juiste manier. Misschien toch maar naar Faux columns dan... bedankt in ieder geval!

tjah..


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 20-11 11:59

NMe

Quia Ego Sic Dico.

Je kan natuurlijk ook gewoon andere elementen in je table-cell zetten, als wordt dat lastig als je daar iets wil doen met (relative) positioning. Display: table-cell en position: relative op hetzelfde element is vragen om problemen. :P

Faux columns zijn een wat breder geaccepteerd alternatief.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • MoietyMe
  • Registratie: Juli 2003
  • Laatst online: 26-05 08:10

MoietyMe

zij/haar

Dit kan je natuurlijk ook simpel met JavaScript oplossen.

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 20-11 11:59

NMe

Quia Ego Sic Dico.

Good Fella schreef op dinsdag 07 januari 2014 @ 17:09:
Dit kan je natuurlijk ook simpel met JavaScript oplossen.
Dat zal vrijwel nooit mooi uitzien. ;)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • 4WardNL
  • Registratie: Mei 2012
  • Laatst online: 22-11 13:35
Zou je hier niet ook gewoon gebruik kunnen maken van 'min-height: 100%;' op de column div?

Edit: laat maar :+

[ Voor 10% gewijzigd door 4WardNL op 07-01-2014 23:09 ]


  • MoietyMe
  • Registratie: Juli 2003
  • Laatst online: 26-05 08:10

MoietyMe

zij/haar

Nevermind wat ik hiervoor zei.

Flexbox!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 20-11 11:59

NMe

Quia Ego Sic Dico.

Too soon. ;) Het komt in de buurt maar met voorlopig nog even missende support in Firefox en het feit dat veel browsers nog prefixes nodig hebben maakt 't minder handig in het gebruik. :) Maar zeker wel de toekomst. :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • R4gnax
  • Registratie: Maart 2009
  • Laatst online: 06-09 17:51
NMe schreef op woensdag 08 januari 2014 @ 12:01:
Too soon. ;) Het komt in de buurt maar met voorlopig nog even missende support in Firefox en het feit dat veel browsers nog prefixes nodig hebben maakt 't minder handig in het gebruik. :) Maar zeker wel de toekomst. :)
FYI; enige onderdeel van flex box dat Firefox niet ondersteunt is flex-wrap. Dat komt vanaf versie 28.

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 20-11 11:59

NMe

Quia Ego Sic Dico.

Klopt, maar die flex-wrap lijkt me voor de topicstarter voor dit probleem redelijk essentiëel. :P

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • MoietyMe
  • Registratie: Juli 2003
  • Laatst online: 26-05 08:10

MoietyMe

zij/haar

Zoiets zou toch overal wel moeten werken (IE10+): CodePen

Voor IE9 en lager zul je dan al een fallback moeten maken. Zolang de website niet responsive is, of in ieder geval het linker gedeelte de zelfde breedte houd zou ik, zoals NMe al aangeeft, gewoon faux-columns gebruiken.
Pagina: 1