Toon posts:

[HTML] Design verschil IE <--> FF

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hallo iedereen!

Ik ben een beetje aan het klooien geweest om een design op te zetten voor een site die ik probeer te bouwen. Nu zit ik alleen met een subtiel verschil in weergave tussen Firefox en Internet Explorer. Firefox geeft alles weer zoals ik graag zou zien.

Mijn code binnen de <body> tags is als volgt:

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
<!-- Container with header, menu, page and footer -->
    <div id="container">
        
        <!-- Header -->
        <div id="header">
        
            [ Header ]
        
        </div>
        
        <!-- Menu-items -->
        <div id="menu">
        
            [ Menu ]
        
        </div>
        
        
        <!-- Content -->
        <div id="content">
        
            [ Content ]
        
        </div>
        
        
        <!-- Footer -->
        <div id="footer">
        
            [ Footer ]
        
        </div>      
    
    </div>


Bij deze code hoort de volgende stylesheet:

Cascading Stylesheet:
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
body {
    font-family: Verdana, Geneva, Arial, helvetica, sans-serif;
    font-size: 13px;
    color: #aaaaaa;
    margin: 0px;
}


#container {
    width: 800px;
    height: 600px;
    border: 2px #000000 solid;
}


#header {
    width: 100%;
    height: 78px;
    background: #FFFF66;
    margin: 0px;
    padding: 0px;
    text-align: left;
}


#menu {
    width: 100%;
    height: 18px;
    background: #FFFF66;
    margin: 0px;
    padding: 0px;
    text-align: center;
    border-bottom: 1px #000000 solid;
    border-top: 1px #000000 solid;
}


#content {
    width: 100%;
    height: 414px;
    background: #FFFFCC;
    margin: 0px;
    padding: 5px;
    text-align: left;
}


#footer {
    width: 100%;
    height: 78px;
    background: #FFFF66;
    margin: 0px;
    padding: 0px;
    border-top: 1px #000000 solid;
}


Zoals ik al eerder aangaf geeft Firefox de site weer zoals ik graag wil. De maten zijn strak en alles sluit goed op elkaar aan. Internet Explorer heeft alleen het probleem dat de rechter-border van mijn #container niet goed aansluit op de elementen in deze container. Met andere woorden lijkt de 'width' van de container groter dan dan 'width' van de elementen (header, menu, content en footer) in deze container. Er zit dus een soort van wit stukje tussen de rechterborder van de container en de andere horizontale borders van de elementen in de container.

Vraag 1: Weet iemand waardoor dit verschil in weergave tussen FF en IE wordt veroorzaakt, en bestaan hiervoor ook oplossingen?

Mijn container heeft nu een absolute hoogte van 600 pixels. Ik zou graag een relatieve hoogte van 100% willen hebben zodat de hoogte van het scherm altijd gevuld is met mijn 'content' gedeelte van de site. De header, het menu en de footer hebben alleen een absolute hoogte, zoals te zien is in mijn CSS. De content zou zich dus aan moeten passen aan de grootte van het scherm.

Vraag 2: Weet iemand een oplossing om de container een hoogte van 100% te geven, en dan de hoogte van het content-gedeelte variabel (aangepast aan de grootte van het scherm) te maken?

Ik kan me voorstellen dat dit zeer simpele vragen lijken voor sommige mensen. Ik heb echter goed gezocht op google en misschien omdat ik nog niet zo heel erg sterk ben met dit soort onderwerpen heb ik geen resultaten gevonden die mij verder op weg kunnen helpen. Hopelijk heeft iemand van jullie antwoorden op mijn vragen.

Alvast ontzettend bedankt voor de moeite!!

  • Fuzzillogic
  • Registratie: November 2001
  • Laatst online: 01-07-2025
Vraag 1: Volgens de W3C-specs is de breedte van een block *exclusief* de paddings en borders. Voor IE is de breedte *inclusief*. Aan dat laatste kun je weinig doen, maar moderne browsers kun je met:
code:
1
2
box-sizing: border-box;
-moz-box-sizing: border-box;

het gedrag van IE laten nadoen. (de laatste regel is uiteraard alleen voor de Gecko engine, want die lust de normale box-sizing nog niet)

Vraag 2: Dat kan, dan moet je alle parent nodes ook een height: 100% meegeven. Ook de HTML en BODY node.

Het blijft echter tricky en vervelend. Met CSS2 zijn dingen vaak makkelijker op te lossen. Dat werkt uiteraard niet in IE6, maar de vraag is dan hoeveel waarde je daar nog aan hecht, voor een hobby-site.

  • Boelie-Boelie
  • Registratie: November 2004
  • Laatst online: 26-09-2020
Verwijderd schreef op zaterdag 18 maart 2006 @ 20:46:
Vraag 1: Weet iemand waardoor dit verschil in weergave tussen FF en IE wordt veroorzaakt, en bestaan hiervoor ook oplossingen?
Het verschil wordt zoals Nexxennium correct aangeeft veroorzaakt door het verschil van interpretatie van het box-model. Helaas komt Nexxennium vervolgens met een oplossing die slechts een vorm van symptoombestrijding is. IE6 is namelijk wel degelijk in staat het box-model goed te interpreteren wanneer je ervoor zorgt dat de browser in Standards mode rendert. Dit doe je door een volledig doctype te gebruiken.
- Sivonen: Activating the Right Layout Mode Using the Doctype Declaration
- W3C: Recommended DTDs to use in your Web document

Enige probleem is dan IE5.x. Die kun je via conditional comments een aangepast stylesheet voorleggen (waar je dus de verkeerde box-modelinterpretatiewaarden in vermeldt).
Verwijderd schreef op zaterdag 18 maart 2006 @ 20:46:
Vraag 2: Weet iemand een oplossing om de container een hoogte van 100% te geven, en dan de hoogte van het content-gedeelte variabel (aangepast aan de grootte van het scherm) te maken?
Zoiets? Zie uitleg op The Man in Blue.

Cogito ergo dubito


  • Fuzzillogic
  • Registratie: November 2001
  • Laatst online: 01-07-2025
Boelie-Boelie schreef op zondag 19 maart 2006 @ 14:04:
[...]
IE6 is namelijk wel degelijk in staat het box-model goed te interpreteren wanneer je ervoor zorgt dat de browser in Standards mode rendert.
Ik was aan het slapen. :z Waar ik die box-sizing voor gebruikt heb is omdat je soms juist wel de afmetingen inclusief borders en paddings wilt kunnen bepalen. In moderne browsers doe je dat netjes en eenvoudig middels de box-sizing property.

IE kun je het dus ook laten doen, door IE terug te gooien naar quirksmode. Dat kan op een 'nette' manier door de XML-proloog boven je (XHTML) documenten te gooien. Je zit dan wel met het nadeel dat *alle* blocks dus met border-box werken. En ik hoop van harte dat IE7 ook box-sizing gaat ondersteunen, anders hebben sommige sites een probleem :/

Evengoed sluit dit verhaal prima aan bij je tweede vraag: door border-box te gebruiken kun je sites 100% hoogte geven en daarbij toch nog ruimte reserveren voor een header en footer! Ik heb deze truuk al vaker toegepast op sites van designers die nog in het frame-idee zijn blijven hangen ;(

Maar met CSS2 is e.e.a. *veel* eenvoudiger en netter te realiseren. Mocht je een privé/hobby-site aan het bouwen zijn, overweeg dan om IE6-support op een lager pitje te zetten (a la: de site is bruikbaar, maar ziet niet geheel uit zoals bedoeld), gebruik CSS2 en maak wat reclame voor moderne browsers ;)