[CSS] DIV probleem in FF 3

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • Lithium_Grim
  • Registratie: Mei 2006
  • Laatst online: 21-09 18:13
Ik wil een site maken met 3 hoofd divs, nl header, container en footer.
In de header komt nog een div voor de logingegevens.
In de container komt links een div met een infobalk en rechts een div met de daadwerkelijke content met nog meer divs daarin (nu bv menubalk en content).
In de footer komt wat copyright tekst met wat absolute divs.

Ik zit nu met het probleem dat de footer in FF3 een eigen leven gaat leiden en bij een hogere resolutie omhoog springt tot onder de div met content (denk ik tenminste). Kan iemand mij verder helpen om ervoor te zorgen dat de footer gewoon netjes onderaan blijft? Thanx!!

De CSS:
code:
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
#header {
    color            : #FFFFFF;
    display          : block;
    position         : relative;
    margin           : 0px auto;
    text-align       : left;
    width            : 1202px;
    height           : 125px;
    background       : url("../../images/navigate/header.jpg");
}

    #login{
        position         : absolute;
        right            : 18px;
        top              : 98px;
        text-align       : right;
    }

#container {
    position         : relative;
    display          : block;
    margin           : 0px auto;
    text-align       : left;
    width            : 1202px;
    height           : 100%;
    overflow         : visible;
}

    #infobar {
        position         : relative;
        float            : left;
        font-size        : 10px;
        height           : 800px;
        width            : 202px;
        overflow         : visible;
        color            : #FFFFFF;
        padding-top      : 40px;
        padding-bottom   : 5px;
        padding-right    : 5px;
        background       : url("../../images/navigate/navigate.jpg");
        background-repeat: repeat-y;
    }
    
    #content {
        position         : relative;
        float            : right;
        width            : 995px;
        overflow         : visible;
    }
    
        #menu {
            position         : relative;
            width            : 975px;
            padding-left     : 10px;
            padding-right    : 10px;
            height           : 40px;
            overflow         : hidden;
            background       : url("../../images/navigate/menu.jpg");
        }

        #default{
            position         : relative;
            padding-top      : 10px;
            padding-left     : 10px;
            overflow         : visible;
        }

#footer {
    position         : relative;
    margin           : 0px auto;
    display          : block;
    text-align       : left;
    font-size        : 9px;
    width            : 1192px;
    height           : 42px;
    overflow         : hidden;
    color            : #FFFFFF;
    padding-top      : 5px;
    padding-bottom   : 5px;
    padding-left     : 5px;
    padding-right    : 5px;
    background       : url("../../images/navigate/footer.jpg");
}


De HTML:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<body onLoad="Showit('Client');">
        <div id="header">
        <?php require("./lib/security.inc.php"); ?>
        </div>
        <div id="container">
            <div id="infobar">
                <?php require("./pages/framework/navigate.php");?>
            </div>
            <div id="content">
                <?php
                require("./pages/framework/menu.php");
                echo "              <div id=\"default\">\n";
                require ($pagepath);
                echo "              </div>\n";?>
            </div>
        </div>
        <div id="footer">
            <?php require("./pages/framework/footer.php");?>
        </div>
    </body>

Acties:
  • 0 Henk 'm!

  • disjfa
  • Registratie: April 2001
  • Laatst online: 03-07 14:47

disjfa

be

Maak het gewoon zonder absoluut gepositioneerde elementen. Dan komt het er wat beter uit :)

disjfa - disj·fa (meneer)
disjfa.nl


Acties:
  • 0 Henk 'm!

  • Lithium_Grim
  • Registratie: Mei 2006
  • Laatst online: 21-09 18:13
Hoe bedoel je precies? Bedoel je daarmee dat ik overal waar position:absolute staat moet veranderen in relative? Zo niet, zou je dan aan kunnen geven wat ik moet veranderen?

Dank voor de reactie! :)

Acties:
  • 0 Henk 'm!

  • Pkunk
  • Registratie: December 2003
  • Laatst online: 11-09 17:52
Kan je misschien een voorbeeldje online zetten? Dat kijkt wat makkelijker :)

Hallo met Tim


Acties:
  • 0 Henk 'm!

  • Da Weef
  • Registratie: Januari 2004
  • Laatst online: 15-09 09:16
Wil je niet gewoon een sticky footer?

.


Acties:
  • 0 Henk 'm!

  • harrald
  • Registratie: September 2005
  • Laatst online: 16-09 08:44
Lithium_Grim schreef op donderdag 08 januari 2009 @ 14:38:
Hoe bedoel je precies? Bedoel je daarmee dat ik overal waar position:absolute staat moet veranderen in relative? Zo niet, zou je dan aan kunnen geven wat ik moet veranderen?

Dank voor de reactie! :)
je kan dingen ook op hun plek zetten zonder gebruik te maken van "position: " ;)

Eigenlijk moet je pas iets gaan positioneren als je echt niet anders kan.
de afstand tussen element kan je regelen met margin.
elementen naast elkaar plaatsen kan met bijv float.
iets centreren kan bijvoorbeeld door: een breedte vast te stellen en vervolgens margin:0 auto;

Acties:
  • 0 Henk 'm!

  • Lithium_Grim
  • Registratie: Mei 2006
  • Laatst online: 21-09 18:13
Met Sticky footer krijg ik het niet niet voor elkaar.

Bekijk het volgende scherm maar eens in IE en dan in FF3 op een resolutie van bv 1650x1050 oid (in ieder geval groter dan 1440 breed).

In de css zit ook het sticky gedeelte zoals ik het interpreteer.

Dank overigens voor de reacties!

Acties:
  • 0 Henk 'm!

  • Spinal
  • Registratie: Februari 2001
  • Laatst online: 11:14
Misschien dat je hier wat aan hebt? http://www.bosmonster.nl/html/centered_with_footer.html
Komt regelmatig voorbij hier op GoT :P

Full-stack webdeveloper in Groningen


Acties:
  • 0 Henk 'm!

  • mcDavid
  • Registratie: April 2008
  • Laatst online: 22-09 20:16
clear:both; op je footer.

Acties:
  • 0 Henk 'm!

  • Da Weef
  • Registratie: Januari 2004
  • Laatst online: 15-09 09:16
Je moet de container om al je divs heengooien behalve de footer, en dus niet alleen om de content. Door de (min-)hoogte op 100% te zetten wordt de hoogte van de container div (minimaal) gelijk aan de viewport. Dit betekent ook geen marges op de body, anders valt er alsnog een deel buiten de viewport.

[ Voor 7% gewijzigd door Da Weef op 09-01-2009 13:24 ]

.


Acties:
  • 0 Henk 'm!

Verwijderd

Mental note: 100% height is niet W3C valid en min-height werkt (toch?) alleen in IE.

Acties:
  • 0 Henk 'm!

  • Da Weef
  • Registratie: Januari 2004
  • Laatst online: 15-09 09:16
min-height wordt enkel niet ondersteund door IE6 en lager, daarvoor is de height hack toegevoegd...

.


Acties:
  • 0 Henk 'm!

Verwijderd

harrald schreef op donderdag 08 januari 2009 @ 17:58:
Eigenlijk moet je pas iets gaan positioneren als je echt niet anders kan.
de afstand tussen element kan je regelen met margin.
elementen naast elkaar plaatsen kan met bijv float.
iets centreren kan bijvoorbeeld door: een breedte vast te stellen en vervolgens margin:0 auto;
Ik lees dit wel vaker en ik snap het gewoon niet. position:absolute is een van de meest consistent ondersteunde CSS eigenschappen die er is. Je kunt positioneren op basis van pixels, ems, ens, procenten, etc op een manier die in vrijwel alle browsers, inclusief IE5.5 en 6 hetzelfde resultaat oplevert. Ik zal niet zeggen dat het superieur is aan het gebruik van floats en margins (al vind ik het wel een stuk makkelijker) maar het is zeker niet inferieur zoals ik zo vaak lees.

Acties:
  • 0 Henk 'm!

  • mcDavid
  • Registratie: April 2008
  • Laatst online: 22-09 20:16
Verwijderd schreef op vrijdag 09 januari 2009 @ 13:59:
[...]

Ik lees dit wel vaker en ik snap het gewoon niet. position:absolute is een van de meest consistent ondersteunde CSS eigenschappen die er is. Je kunt positioneren op basis van pixels, ems, ens, procenten, etc op een manier die in vrijwel alle browsers, inclusief IE5.5 en 6 hetzelfde resultaat oplevert. Ik zal niet zeggen dat het superieur is aan het gebruik van floats en margins (al vind ik het wel een stuk makkelijker) maar het is zeker niet inferieur zoals ik zo vaak lees.
Het is niet inferieur nee. Maar in 99% van de gevallen levert het meer ellende dan gemak op om alles met position:absolute te plaatsen. Gewoon semantisch werken en margins en floats gebruiken is veel makkelijker.

-edit-
zo'n footer bijvoorbeeld, dat gaat nooit meer (op een normale manier) lukken als de content absolute gepositioneerd is.

[ Voor 7% gewijzigd door mcDavid op 09-01-2009 14:59 ]


Acties:
  • 0 Henk 'm!

  • Lithium_Grim
  • Registratie: Mei 2006
  • Laatst online: 21-09 18:13
Interessant! Met clear: both is het verholpen overigens. Fundamenteler vind ik het om te kijken wat de oorzaak is van het probleem. Weet iemand dat? De footer is nl echt buiten alle overige div's gedefinieerd, maar verspringt naar een positie in een andere div.

Dank overigens voor de oplossingen!

Acties:
  • 0 Henk 'm!

  • Herko_ter_Horst
  • Registratie: November 2002
  • Niet online
Lithium_Grim schreef op vrijdag 09 januari 2009 @ 15:43:
Interessant! Met clear: both is het verholpen overigens. Fundamenteler vind ik het om te kijken wat de oorzaak is van het probleem. Weet iemand dat? De footer is nl echt buiten alle overige div's gedefinieerd, maar verspringt naar een positie in een andere div.
Hoe kom je erbij dat de footer in een andere div terecht komt? Divs werken NIET als table-cellen o.i.d. Een div naast een andere div is niet zomaar even hoog als die andere div. Je footer komt "gewoon" onder de content div omdat daar plek is en dat de normale flow is van elementen.

Door een clear:both forceer je dat de div niet meer normaal flowt, maar links en rechts vrije ruimte "opzoekt".

"Any sufficiently advanced technology is indistinguishable from magic."


Acties:
  • 0 Henk 'm!

Verwijderd

mcDavid schreef op vrijdag 09 januari 2009 @ 14:53:
Het is niet inferieur nee. Maar in 99% van de gevallen levert het meer ellende op [...]
Hoe kun je dit met elkaar rijmen?

Acties:
  • 0 Henk 'm!

  • Da Weef
  • Registratie: Januari 2004
  • Laatst online: 15-09 09:16
Lithium_Grim schreef op vrijdag 09 januari 2009 @ 15:43:
Interessant! Met clear: both is het verholpen overigens. Fundamenteler vind ik het om te kijken wat de oorzaak is van het probleem. Weet iemand dat? De footer is nl echt buiten alle overige div's gedefinieerd, maar verspringt naar een positie in een andere div.

Dank overigens voor de oplossingen!
Niet ín een andere div, maar ermee overlappend... Je zet de hoogte van de container op minimaal 100%, dwz als door gebrek aan content de hoogte van de container minder dan 100% is dat deze wordt uitgerekt tot 100%. Als je hieronder de footer zou plaatsen, dan valt deze precies buiten beeld, dus met een negatieve marge aan de onderzijde zorg je ervoor dat de footer over de container heen valt. Omdat je daarbij niet wilt dat er ook content met de footer overlapt voeg je onderaande de container een lege div (push) toe met dezelfde hoogte als de footer....

.


Acties:
  • 0 Henk 'm!

  • disjfa
  • Registratie: April 2001
  • Laatst online: 03-07 14:47

disjfa

be

Verwijderd schreef op vrijdag 09 januari 2009 @ 16:30:
[...]
Hoe kun je dit met elkaar rijmen?
Omdat het waar is.

Als je 1 design hebt zonder dat er ook maar iemand anders dan jouw aan zal komen kan je de hele wereld met alles absoluut gepositioneert precies wat je zou willen. ga je andere ermee laten klussen of komt er in een hokje net wat meer dan uiterlijk bedoelt was kan je alles gaan ombouwen.

disjfa - disj·fa (meneer)
disjfa.nl


Acties:
  • 0 Henk 'm!

  • Walance
  • Registratie: September 2005
  • Laatst online: 23-09 19:13

Walance

Hm.. wat zal ik hier schrijven

mcDavid schreef op vrijdag 09 januari 2009 @ 14:53:
zo'n footer bijvoorbeeld, dat gaat nooit meer (op een normale manier) lukken als de content absolute gepositioneerd is.
Waarom niet? Je kunt een footer gewoon bottom: 0 geven en geen top, dan blijft hij altijd onderaan staan. Of begrijp ik het nu verkeerd?

Acties:
  • 0 Henk 'm!

  • mcDavid
  • Registratie: April 2008
  • Laatst online: 22-09 20:16
Conquerer schreef op vrijdag 09 januari 2009 @ 18:16:
[...]

Waarom niet? Je kunt een footer gewoon bottom: 0 geven en geen top, dan blijft hij altijd onderaan staan. Of begrijp ik het nu verkeerd?
Onderaan wat? onderaan de browser-viewport? Dan staat de boel door elkaar als je content hoger is dan de vieuwport. Onderaan de container? Die geen hoogte meer heeft aangezien alles absolute gepostioneerd is? werkt ook niet. Javascript dan maar om de client-height te achterhalen?

Simpel een keertje float:left en clear:both geeft je geen van die ellende.

Acties:
  • 0 Henk 'm!

  • wackmaniac
  • Registratie: Februari 2004
  • Laatst online: 11:04
disjfa schreef op vrijdag 09 januari 2009 @ 17:14:
[...]

Omdat het waar is.

Als je 1 design hebt zonder dat er ook maar iemand anders dan jouw aan zal komen kan je de hele wereld met alles absoluut gepositioneert precies wat je zou willen. ga je andere ermee laten klussen of komt er in een hokje net wat meer dan uiterlijk bedoelt was kan je alles gaan ombouwen.
Absoluut positioneren gaat snel problemen geven als je niet weet hoeveel content er in een element gaat zitten. Neem nu een blog met een footer; jij weet niet hoeveel tekst een blogpost bevat en als je de footer absoluut hebt gepositioneerd weet je niet op welke hoogte je deze moet plaatsen. Dat is, tenzij je graag div's hebt met scrollbalken.

Ander voorbeeld; stel je hebt een prachtig ontwerp gemaakt en geïmplementeerd en opeens wil de klant toch een kleine verandering. Als je de code op een redelijk semantische en flexibele wijze hebt opgebouwd is er een goede kans dat je er snel bijvoorbeeld blokje in een zijbalk kan plaatsen, zonder de overige elementen qua absolute positionering te veranderen.

Het is niet per definitie slecht, maar met een goede semantiek en logisch nadenken wordt je layout net iets flexibeler. En dat is in veel gevallen in een later stadium weer fijn als er weer een draaikont als klant is :)

Read the code, write the code, be the code!

Pagina: 1