html/css: vertikaal uitlijnen binnen divjes
24 december 2008 - 09:56   
geplaatst door: ettepet
In onderstaande voorbeeld wil ik het rechter blok "Blok D" vertikaal uitlijnen zodat dit aan de onderkant op lijn staat met de onderkant van de linker kolom.

Helaas heb ik de html-tags een beetje moeten slopen om 'm duidelijk zichtbaar te krijgen in het code-block :-(

Hoe krijg ik dit voor elkaar?

En trouwens, waarom zie ik de border van de main_container niet als een groene border rondom de linker en rechter kolom, maar als een lege box bovenaan?

[edit]
Toevoeging: indien de content in de rechter kolom meer is dan in de linker kolom, dan moet het Blok D netjes tegen de onderkant van Blok C komen.
[/edit]

< !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

< html xmlns="http://www.w3.org/1999/xhtml" xml:lang="nl" lang="nl">
< head>
< meta http-equiv="content-type" content="text/html;charset=utf-8" />
< title>test< /title>

< style type="text/css">

#main_container {
width: 310px;
border: 1px solid #0f0;
}
#left {
float: left;
width: 200px;
border: 1px solid #f00;
}
#right {
float: right;
width: 100px;
border: 1px solid #f00;
}
.left {
width: 180px;
border: 1px solid #f0f;
}
.right {
width: 80px;
border: 1px solid #0ff;
}
.bottom {
/* hoe dit item aan tegen de onderkant van de main_container te plakken??? */
}
< /style>
< /head>

< body>
< div id="main_container">
< div id="left">
< div class="left">Blok 1< /div>
< div class="left">Blok 2< /div>
< div class="left">Blok 3< /div>
< div class="left">Blok 4 asdg as dg asg as gads g sadgas dg as g sadg asg as g asdg  asg asdg as dg asdg  ga g as< /div>
< /div>
< div id="right">
< div class="right">Blok A< /div>
< div class="right">Blok B< /div>
< div class="right">Blok C< /div>
< div class="right bottom">Blok D< /div>
< /div>
< /div>
< /body>
< /html>

(Bewerkt door ettepet om 10:29, 24-12-2008)

html/css: vertikaal uitlijnen binnen divjes
24 december 2008 - 11:19    reactie #1
geplaatst door: dengine
Het feit dat je een lege box bovenaan ziet staan komt omdat je de div in je in een float hebt gegeven. Geen de parent ook altijd een float mee zodat deze weer netjes een box eromheen wordt. Je andere issue moet ik even nader bekijken.
html/css: vertikaal uitlijnen binnen divjes
24 december 2008 - 11:44    reactie #2
geplaatst door: denn88
Dit ligt ook aan de DTD die men gebruikt, in XHTML Transitional is het ook niet mogelijk. Maar even Google'en en er zijn legio websites te vinden die een manier gevonden hebben.

http://www.jakpsatweb.cz/css/css-vertical-center-solution.html

De kunst met CSS is dat je het zo maakt dat het wel werkt in de meest gebruikte webbrowsers: Wiin/IE6 en 7, Firefox, Safari, Chrome en Opera.

Atlantisdesign.nl - webDesign en de Mac. Bezig met webdesign / webdevelopment? Je eigen Mac als lokale webserver?
iPhone 4, 16 GB (black) | MacBook Pro 15", 2.44Ghz Intel Core 2 Duo,  4GB Ram | Airport Extreme | MacMini Intel Core 2 Duo, 4GB Ram | PowerMac G4 MMD Dual 1Ghz.
html/css: vertikaal uitlijnen binnen divjes
24 december 2008 - 12:11    reactie #3
geplaatst door: macossie
in plaats van het wiel uitvinden kan je ook even kijken bij code-sucks.com :cool:  :music:
html/css: vertikaal uitlijnen binnen divjes
24 december 2008 - 17:29    reactie #4
geplaatst door: ettepet
@dengine: dank voor de float-tip.

Bij gegeven voorbeelden staat helaas niet de oplossing voor mijn probleem.

Met JavaScript -- uitvragen hoogte linker kolom, toepassen op rechter -- lukt het wel maar dat wil ik niet (drempelsvrij/overheidsrichtlijnen).

Graag zou ik een werkend voorbeeld zien (in css en xhtml strict).
Of is het niet mogelijk, als ik denn88 goed begrijp...?

html/css: vertikaal uitlijnen binnen divjes
24 december 2008 - 18:37    reactie #5
geplaatst door: Spooter
Kan je een plaatje online zetten van wat je precies wilt ?
html/css: vertikaal uitlijnen binnen divjes
24 december 2008 - 23:45    reactie #6
geplaatst door: ettepet
Hier een plaatje met drie mogelijke situaties:

Er zijn een header en een footer, maar het gaat me om het rode blok in de tweede kolom. Mogelijk zijn er in de tweede kolom meerdere elementen; deze moeten allemaal aan de top lijnen, behalve het laatste blok.

Dit rode blok wil ik uitlijnen:
- ALTIJD aan de onderkant van de linker kolom, als deze linker kolom langer is dan de tweede kolom, zelfs als de rechter kolom langer is dan de eerste of tweede kolom
- Als de tweede kolom de langste is, moeten de blokken in de tweede kolom gewoon stapelen.

(Bewerkt door ettepet om 23:47, 24-12-2008)

html/css: vertikaal uitlijnen binnen divjes
4 januari 2009 - 09:48    reactie #7
geplaatst door: ettepet
Geen suggesties meer, na boven toegevoegde illustratie???

:cry:

html/css: vertikaal uitlijnen binnen divjes
4 januari 2009 - 10:41    reactie #8
geplaatst door: Spooter
html/css: vertikaal uitlijnen binnen divjes
4 januari 2009 - 11:30    reactie #9
geplaatst door: Steve07
De code hieronder werkt wel, maar alleen wanneer de container een vaste hoogte heeft en dat heeft jouw site waarschijnlijk niet.....


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="nl" lang="nl">
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
<title>test</title>
<style type="text/css">
html,body {
/*  Maten  */
height: 100%;
width: 100%;
padding: 0px 0px 0px 0px;
margin: 0px 0px 0px 0px;
/*  Opmaak  */
border: 0px solid #FFFFFF;
background-color: #FFFFFF;
text-align: center;
/*  Fonts (verder in styles niet nodig (op a (link) na, want erfelijk)  */
font-size: 14px;
font-family: verdana;
font-weight: normal;
font-style: normal;
text-decoration: none;
line-height: 21px;
color: #333333;
/*  Overig  */
overflow: auto;
}
div#container {
/*  Maten  */
height: 600px;
width: 705px;
padding: 0px 0px 0px 0px;
margin: auto;
/*  Opmaak  */
border: 1px solid #FF0000;
background-color: transparent;
text-align: left;
/*  Display  */
display: block;
/*  Positioneren  */
position: relative;
}
div#left, div#right {
/*  Maten  */
height: auto;
width: 350px;
padding: 0px 0px 0px 0px;
margin: 0px 0px 0px 0px;
/*  Opmaak  */
border: 1px solid #FFFF00;
background-color: transparent;
text-align: left;
/*  Display  */
display: block;
/*  Positioneren  */
float: left;
}
div.left, div.right {
/*  Maten  */
height: auto;
width: 350px;
padding: 0px 0px 0px 0px;
margin: 0px 0px 0px 0px;
/*  Opmaak  */
border: 0px solid #FFFFFF;
background-color: transparent;
text-align: left;
/*  Display  */
display: block;
/*  Positioneren  */
float: left;
}
div.bottom {
/*  Maten  */
height: auto;
width: 350px;
padding: 0px 0px 0px 0px;
margin: 0px 0px 0px 0px;
/*  Opmaak  */
border: 1px solid #FFFF00;
background-color: transparent;
text-align: left;
/*  Display  */
display: block;
/*  Positioneren  */
position: absolute;
bottom: 0px;
}
</style>
</head>
<body>
<div id="container">
<div id="left">
<div class="left">Div 1</div>
<div class="left">Div 2</div>
<div class="left">Div 3</div>
<div class="left">Div 4</div>
<div class="left">Div 5</div>
<div class="left">Div 6</div>
</div>
<div id="right">
<div class="right">Div 1</div>
<div class="right">Div 2</div>
<div class="bottom">Div 3 (class=bottom)</div>
</div>
</div>
</body>
</html>
html/css: vertikaal uitlijnen binnen divjes
4 januari 2009 - 18:00    reactie #10
geplaatst door: ettepet
Dank je, Steve07, maar inderdaad, in mijn situatie kan ik helaas niet uitgaan van een fixed height voor de container  :sad:

De link van Spooter geeft hoop - (aanvinken bottem-aligned item). Al moet ik die nog eens grondig bekijken op allerlei richtlijnen voordat ik te hard ga juichen...

Thanx anyway!
html/css: vertikaal uitlijnen binnen divjes
4 januari 2009 - 21:57    reactie #11
geplaatst door: bertvanderveen
Hoe ingewikkeld kan het zijn?

Je hebt één div voor het bovenste deel over de hele breedte.
Dan een div voor het deel eronder, zonder de rechter kolom.
Vervolgens een div voor die rechter kolom.
En dan een div voor het onderste deel.

Voor de tweede div maak je een onder verdeling, waarbij je het laatste onderdeel (rood in je voorbeeld) een alignment geeft waarmee die onder rechts blijft hangen. Handig lijkt me als je die een vaste hoogte geeft.

Het moet kunnen, imho.

Bert Vanderveen [...]
+++ Applegebruiker sinds 1989 (van System 6 via OSX naar macOS 15)