Goedendag,
Al een aantal uur ben ik aan het puzzelen voor mijn [css] probleem. Wat ik wil hebben:
* een 3-column layout. Deze heb ik nu door links en rechts divs te defineren, absolute gepositioneerd. In het midden staat een div met margins (left en right) gelijk aan de breedte van de anderen kolommen.
* Onder de kolommen moet een footer komen. Deze staat visueel alleen onder midden en rechts (maar mag niet hoger dan de onderkant van links komen, dus ook onder links)
* Iedere kolom kan langer worden dan de andere.
* Indien links of rechts langer is dan het midden (of: langer dan dat de inhoud van het midden aan zou geven), dan moet het midden stretchen, zodat links of rechts altijd volledig tegen het midden blijven
* het midden heeft een eigen achtergrondkleur, links en rechts hebben elementen met een eigen kleur, maar daar tussen hebben ze dezelfde kleur als de achtergrond van de pagina.
Wat ik tot nu toe heb:
Wat het effect is:
* het midden is te lang; het neemt 100% van de hele pagina, terwijl er nog dingen boven staan. Aangezien het onbekend is hoeveel er boven komt te staan, kunnen er geen andere percentages gebruikt worden.
* als de rechterkolom "te" lang is, gaat die alsnog over de footer heen, en wordt het midden niet opgerekt; wat dus eigenlijk de kern van het probleem is.
Het maakt niet veel uit of het midden tot de onderkant van de viewport (als rechts kort genoeg is) loopt, of tot de onderkant van de pagina; zolang hij maar minimaal zo lang is als rechts, en de footer er onder komt te staan.
Wie weet hoe ik dit op kan lossen?
Al een aantal uur ben ik aan het puzzelen voor mijn [css] probleem. Wat ik wil hebben:
* een 3-column layout. Deze heb ik nu door links en rechts divs te defineren, absolute gepositioneerd. In het midden staat een div met margins (left en right) gelijk aan de breedte van de anderen kolommen.
* Onder de kolommen moet een footer komen. Deze staat visueel alleen onder midden en rechts (maar mag niet hoger dan de onderkant van links komen, dus ook onder links)
* Iedere kolom kan langer worden dan de andere.
* Indien links of rechts langer is dan het midden (of: langer dan dat de inhoud van het midden aan zou geven), dan moet het midden stretchen, zodat links of rechts altijd volledig tegen het midden blijven
* het midden heeft een eigen achtergrondkleur, links en rechts hebben elementen met een eigen kleur, maar daar tussen hebben ze dezelfde kleur als de achtergrond van de pagina.
Wat ik tot nu toe heb:
HTML:
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
| <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>Untitled Document</title> <style type="text/css"> html, body { height: 100%; } #left { position: absolute; left:20px; top:20px; width:185px; background:#e8e8f3; } #center { background:#fff; voice-family: "\"}\""; voice-family: inherit; margin-left: 205px; margin-right:205px; margin-top: 20px; background-color: #e8e8f3; height: 100%; } #centerContent { border-width: 0px 9px 0px 9px; border-color: #04378b; border-style: solid; margin-bottom: 6px; background-color: #FFFFFF; height: 100%; } #centerFooter { background-color: #04378b; height: 21px; margin-bottom: 20px; margin-right: -183px; color: white; } #centerFooterLeft { background-image: url('images/e_44.gif'); background-repeat: no-repeat; background-color: #04378b; background-position: left; float: left; height: 21px; } #centerFooterRight { background-image: url('images/e_49.gif'); background-repeat: no-repeat; background-color: #04378b; background-position: right; float: right; height: 21px; margin-top: -16px; } #right { position: absolute; right: 20px; top:20px; width:185px; background:#e8e8f3; height: 100%; } </style> </head> <body> <div id="left"> linkerkolom </div> <div id="center"> [paar andere "straight-on" divs] <div id="centerContent"> <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut leo libero, lobortis pretium, ornare eu, pretium ut, tortor. Cras volutpat justo sit amet eros. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Etiam porta laoreet sapien. Praesent posuere. Cras dui. Phasellus sagittis risus. Aliquam egestas tristique nibh. Nunc ultricies sapien vel augue. Nulla sed ante. Donec aliquam. Suspendisse mauris est, sollicitudin placerat, egestas at, ultrices eget, nibh. Sed eget dui. Donec tempus tempor leo. Nam rhoncus odio viverra nisi. Duis sodales ultricies ipsum. Nam erat. Maecenas adipiscing, pede sit amet aliquet imperdiet, augue pede ullamcorper quam, a congue nisi massa a mi. Proin rutrum. Aliquam mi metus, sagittis non, imperdiet id, ultricies et, lectus.</p> </div> <div id="centerFooter"> <div id="centerFooterLeft"> </div> disclaimer <div id="centerFooterRight"> </div> </div> </div> <div id="right"> rechterkolom </div> </body> </html> |
Wat het effect is:
* het midden is te lang; het neemt 100% van de hele pagina, terwijl er nog dingen boven staan. Aangezien het onbekend is hoeveel er boven komt te staan, kunnen er geen andere percentages gebruikt worden.
* als de rechterkolom "te" lang is, gaat die alsnog over de footer heen, en wordt het midden niet opgerekt; wat dus eigenlijk de kern van het probleem is.
Het maakt niet veel uit of het midden tot de onderkant van de viewport (als rechts kort genoeg is) loopt, of tot de onderkant van de pagina; zolang hij maar minimaal zo lang is als rechts, en de footer er onder komt te staan.
Wie weet hoe ik dit op kan lossen?