Layout met nested divs en 100% height incl scrolling
Door
Ken PHP
op 21-05-2014 14:47
gewijzigd op 21-05-2014 14:56
2.536 views
Beste HTML'ers,
Ik heb een vervelende layout waar ik op vast loop. Ik snap niet waar het op mis gaat en hoop dat iemand mij hier op weg kan helpen. Ik heb een hoop varianten geprobeerd maar krijg het niet voor elkaar. Ook niet met hulp van Stackoverflow.
Ik heb een layout met een
- top div (horizontaal 100%)
- container div (centered 980px)
----- left div (100% height)
----- right div (100% height)
- footer div (horizontaal 100%)
Nu gaat de 100% height mis op het moment dat er meer content in staat dan de hoogte van de body, zie voorbeeld: http://test.dev.artform.org/layout (even scrollen)
En als je een wat meer afgepaste hoogte wilt, is hier een code met een simpel vanille Javascript, ook bruikbaar als je andere hoogtes voor de Header en/of Footer gaat instellen:
Het resultaat ziet er op zich goed uit, maar je javascript is veel ingewikkelder dan nodig. En ook je CSS-code kan nog wat 'leaner'. Zo heb je de overflow-bepaling niet nodig in deze omstandigheden, en ook de coördinaten van de div#Header heb je niet nodig.
Mocht je mijn code, aangepast aan het schaduweffect en de veranderde breedtes, nog een keer willen zien, dan moet je dat even aangeven. Dan post ik hem nog een keer.
Ik heb de code op Codepen gezet: http://codepen.io/anon/pen/msFLI?editors=100. Je moet de balk halverwege de pagina even omhoog schuiven en de CSS- en JS-paneeltjes minimaliseren om e.e.a. goed te kunnen zien.
Hij verschilt niet veel van de andere code die ik eerder postte, maar dit is de meest universele en 'lean' code. Van jQuery heb ik niet veel verstand omdat ik alles wat ik wil met basis-JS kan doen, maar ik vraag me af waarom je hiervoor jQuery zou willen gebruiken? Voor de lay-out is het bepaald niet nodig. En zelfs als je jQuery om andere redenen toch zou willen gebruiken, lijkt me de on-page jQuery-code die je hebt veel ingewikkelder dan nodig. Maar je zou anderen moeten vragen hoe dat simpeler kan.
Sorry dat ik zo laat reageer, maar nog bedankt voor je reactie!
Ziet er op zich goed en duidelijk uit. Het verschil alleen is dat mijn code een event heeft op het vergroten en verkleinen van de window, dus $(window).on('resize',functie). Mijn JS berekend dan opnieuw de dimensies. Verder maakt mijn code eerste de linker en rechter column gelijk en bekijkt dan of er nog hoogte mist t.o.v. de parent div.
Voor wat betreft jQuery, dit is vereist om bepaalde HTML5 en JS features eenvoudig op oudere browsers en devices werkend te krijgen.