Ik heb hier een layout bestaande uit 4 "rijen": header, intro, main en footer. Allemaal met een op vaste breedte gecentreerde content. Daarnaast moet er op sommige pagina's aan de rechterkant van de intro en main een floating box komen. Zo gezegd, zo gedaan.
Werkt perfect in IE8, FF3, FF2, Safari3, Chrome1 en Opera9. In IE6 en IE7 duwt de box echter de intro en main omlaag, ondanks dat de box floating is.
Verwijderen van de content-div rondom de box-div geeft wel de gewenste gedrag mbt de float, maar daarmee komt de box helemaal rechts te zitten. Resultaat is identiek in alle genoemde browsers, behalve dat in IE6 en IE7 de content van de intro en main div's naar links wordt gedrukt (margin bug neem ik aan).
Toevoegen van display:inline aan .content geeft wel de gewenste gedrag mbt de float, maar daarmee verlies ik wel de vaste en gecentreerde content door de hele pagina. Resultaat is identiek in alle genoemde browsers.
De box-div verplaatsen naar de content van de intro-div als de eerste child geeft ook het gewenste gedrag (dit was ook het initiele ontwerp, maar om het probleem te elimineren had ik de zooi uit elkaar gehaald), maar in IE6 en IE7 duwt de box dan de main-div omlaag ipv om deze te overlappen richting de footer. De overige browsers doen het allemaal uitstekend.
De box absoluut positioneren tov de intro-div lost het euvel wel op, maar dit vormt een probleem wanneer de content van de box hoger is dan intro+main samen, want dan wordt de footer niet omlaag gedrukt. Hiervoor is wel een Javascript oplossing (height van main-div fixen adhv screenheight van box-div en intro-div, kan makkelijk met jQuery), echter dit wil ik het liefst vermijden ivm de unobtrusive-JS eis.
Ondersteuning in Chrome en Opera is overigens niet vereist, maar wel gewenst. Minimumondersteuning is IE6.
Suggesties? Ik ben hier al een hele dag mee bezig geweest
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
108
109
110
111
112
113
114
| <!doctype html> <html> <head> <style> /* General ------------------------------------------------------------------ */ html, body { padding: 0; margin: 0; height: 100% } p { margin-top: 0; /* Fixs Mozilla positioning "bug". */ } /* Elements ----------------------------------------------------------------- */ #container { position: relative; min-height: 100%; background: #ccf; } * html #container { height: 99.9%; /* Fixs IE6 positioning bug. */ } #header { height: 50px; background: #fcc; } #box { float: right; width: 150px; background: #999; } #intro { background: #cfc; } #main { } #pushfooter { clear: both; height: 50px; /* Should be the same as #footer height. */ } #footer { position: absolute; left: 0; bottom: 0; width: 100%; height: 50px; background: #fcf; } * html #footer { margin-bottom: -1px; /* Fixs IE6 positioning bug. */ } /* Content ------------------------------------------------------------------ */ .content { position: relative; width: 700px; margin: 0 auto; } </style> </head> <body> <div id="container"> <div id="header"> <div class="content"> <p>Header</p> </div> </div> <div class="content"> <div id="box"> <p>Box: Nunc eros. Maecenas bibendum, urna in pharetra bibendum, orci tellus convallis sapien, id laoreet lorem eros et sem. Integer aliquam. Curabitur mollis. Ut tortor felis, eleifend non, semper non, eleifend eget, lorem. Sed velit purus, consectetur sed, facilisis imperdiet, lobortis in, metus. Etiam ac libero vitae ante rutrum interdum. Curabitur eleifend. Integer vel eros a sapien luctus rhoncus. Aliquam vestibulum elit.</p> </div> </div> <div id="intro"> <div class="content"> <p>Intro: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus vulputate, libero ut venenatis tempus, mauris lectus consectetur diam, at ornare lectus est id dui. Sed nisl erat, molestie sed, venenatis et, ultricies eget, nisi. Pellentesque lorem. Morbi porta arcu. Sed sit amet nisl. Praesent hendrerit volutpat nisi. Suspendisse nunc nunc, porttitor et, tristique vel, pharetra et, ipsum. Cras laoreet, purus ac pharetra pellentesque, arcu nulla imperdiet lorem, id gravida libero diam sed velit. Nullam dui. Duis at nunc. Vivamus in nisi in lorem semper facilisis. Integer ac felis nec lectus posuere aliquam. Integer lorem erat, accumsan eu, pulvinar ut, iaculis vitae, massa. Etiam venenatis nunc et ligula.</p> </div> </div> <div id="main"> <div class="content"> <p>Main: Aenean pretium tortor. Curabitur pulvinar nulla sit amet turpis vehicula feugiat. Nunc varius imperdiet nisl. Maecenas ante. Fusce lectus dui, tempor adipiscing, posuere quis, adipiscing at, lacus. Integer ac nisl. Fusce sit amet eros. Donec et purus. Morbi quam metus, bibendum eget, mollis nec, commodo sit amet, mauris. Proin at lacus sed nunc iaculis faucibus. Nunc laoreet. Vestibulum ultricies tristique ipsum. Praesent sodales bibendum lectus. Nullam felis. Maecenas sodales. Suspendisse pulvinar, quam quis blandit viverra, massa tellus scelerisque est, a auctor nunc nisi eu felis. Nulla facilisi. Suspendisse potenti. Integer condimentum mattis urna. </p> </div> </div> <div id="pushfooter" /> <div id="footer"> <div class="content"> <p>Footer</p> </div> </div> </div> </body> </html> |
Werkt perfect in IE8, FF3, FF2, Safari3, Chrome1 en Opera9. In IE6 en IE7 duwt de box echter de intro en main omlaag, ondanks dat de box floating is.
Verwijderen van de content-div rondom de box-div geeft wel de gewenste gedrag mbt de float, maar daarmee komt de box helemaal rechts te zitten. Resultaat is identiek in alle genoemde browsers, behalve dat in IE6 en IE7 de content van de intro en main div's naar links wordt gedrukt (margin bug neem ik aan).
Toevoegen van display:inline aan .content geeft wel de gewenste gedrag mbt de float, maar daarmee verlies ik wel de vaste en gecentreerde content door de hele pagina. Resultaat is identiek in alle genoemde browsers.
De box-div verplaatsen naar de content van de intro-div als de eerste child geeft ook het gewenste gedrag (dit was ook het initiele ontwerp, maar om het probleem te elimineren had ik de zooi uit elkaar gehaald), maar in IE6 en IE7 duwt de box dan de main-div omlaag ipv om deze te overlappen richting de footer. De overige browsers doen het allemaal uitstekend.
De box absoluut positioneren tov de intro-div lost het euvel wel op, maar dit vormt een probleem wanneer de content van de box hoger is dan intro+main samen, want dan wordt de footer niet omlaag gedrukt. Hiervoor is wel een Javascript oplossing (height van main-div fixen adhv screenheight van box-div en intro-div, kan makkelijk met jQuery), echter dit wil ik het liefst vermijden ivm de unobtrusive-JS eis.
Ondersteuning in Chrome en Opera is overigens niet vereist, maar wel gewenst. Minimumondersteuning is IE6.
Suggesties? Ik ben hier al een hele dag mee bezig geweest

[ Voor 4% gewijzigd door BalusC op 21-04-2009 03:41 ]