[css] Position/Rekken van Div

Pagina: 1
Acties:

  • phYzar
  • Registratie: November 2001
  • Laatst online: 16:26
Ik ben bezig met een website. Deze website moet simpel onderhouden kunnen worden. Ik heb daarom een functie in php gemaakt die een Box maakt. Van die box kun je dan de titel, inhoud, hoogte,breedte en top- en left-margins opgeven.
Zo ziet een Box er bijvoorbeeld uit: (Waarbij de variabelen uit de functieoproep komen)
HTML:
1
2
3
4
5
6
7
8
9
10
<div class="box" style="left: <?=$marginleft?>px;
     top: <?=$margintop?>px; width: <?=$width?>px;">
     <div class="boxHead">
     </div>
     <div class="boxBody" style="height: <?=$height-44?>px">
     <?=$text?>
     </div>
     <div class="boxFoot">
     </div>
</div>


Mijn pagina heeft natuurlijk een stylesheet. Daarin heeft een box de volgende eigenschappen:
code:
1
2
3
4
.box            {
            position: absolute;
            padding: 0px 0px 0px 0px;
            }


De verschillende boxen in een pagina komen in een div in de hoofdpagina.
Dit is de opzet van mijn hoofdpagina:
HTML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<body id="mainBody">
    <div id="mainParent">
        <div id="header">
            <!-- header hier -->
        </div>
        <div id="subHeader">
            <!-- subheader hier -->
        </div>
        <div id="mainMenu">
            <!-- mainmenu hier -->
        </div>
        <div id="subMenu">
            <!-- submenu hier -->
        </div>
        <div id="mainContent">
            <!-- de content (met daarin boxes) hier -->
        </div>
        <div id="footer">
            <!-- footer hier -->
        </div>
</div>
</body>

ook deze pagina maakt gebruik van de stylesheet.
De voor mijn probleem relevante code (neem ik aan):
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
#mainBody {
margin:  0px 0px 0px 0px;
padding: 0px 0px 0px 0px;
background-color: #ffffff;
}

#mainParent {
border-collapse: collapse;
border-spacing:    0px;
width:    754px;
padding: 0px 0px 0px 0px;
margin: auto;
}

#mainContent {
position: relative;
width:    754px;
}

#footer {
height:       26px;
background-image: url('<?=$basepath?>/images/footer.png');
background-repeat: no-repeat;
}


Mijn probleem:
Ik gebruik voor de boxes dus een absolute positionering. Dit werkt goed. Alle boxes komen op de opgegeven positie etc.

De footer van de pagina komt echter direct onder het submenu. Met andere woorden: De mainContent heeft geen "inhoud" en daardoor rekt hij niet mee.

Wanneer ik de position van .box verander in relative rekt de mainContent mooi mee en staat de footer netjes onderaan. De margin-top van elke box klopt dan echter niet, aangezien hij die dan berekend vanaf zijn voorganger ipv de parent. Alle boxes staan dus min of meer onder elkaar.

Ik heb van zowel de footer, de mainContent, de mainParent als de mainBody zo'n beetje alle verschillende combinaties geprobeerd als het gaat om Position: relative/absolute. Het mocht niet baten.

De reden waarom ik concludeer dat de mainContent geen inhoud heeft is dat wanneer ik hem een hoogte meegeef hij wel meerekt. Ook als ik er geen box inzet maar "losse" tekst schuift de footer ook goed mee.

Mijn vraag:
Ik wil de positionering van de boxes kunnen opgeven én ik wil een footer die onderaan mijn pagina staat.

Is het op te lossen met css (en doe ik dus iets fout)
óf is het alleen "smerig" op te lossen (met javascript of met php hoogte berekenen en meegeven)?

Een linkje naar de pagina zal ivm de spam-regels hier niet erg op prijs gesteld worden denk ik, dus ik hoop dat ik genoeg duidelijk heb gemaakt.

[ Voor 9% gewijzigd door phYzar op 09-12-2003 11:48 ]


  • Justice
  • Registratie: Maart 2001
  • Laatst online: 07-08-2025
maak een inhoudsbox en zet ie op position: relative;
daaronder komt de footer.
Door position relative referen alle divs daarbinnen niet langer naar de viewport, maar naar die content div. left:0; top:0; is dan dus linksboven in de content div.

http://www.stopdesign.com/also/articles/absolute/

Human Bobby


  • phYzar
  • Registratie: November 2001
  • Laatst online: 16:26
Justice schreef op 09 december 2003 @ 11:58:
maak een inhoudsbox en zet ie op position: relative;
daaronder komt de footer.
Door position relative referen alle divs daarbinnen niet langer naar de viewport, maar naar die content div. left:0; top:0; is dan dus linksboven in de content div.

http://www.stopdesign.com/also/articles/absolute/
Momenteel refereren alle boxes naar mainContent (die op relative staat). left:0; top:0; is dus precies onder het submenu en niet in de bovenhoek van het browservenster. Ik heb tevens al geprobeerd om de div mainContent in een extra div te zetten of er een div in te zetten (geprobeerd met relative en absolute). De plaatsing van de boxes blijft hetzelfde (en zoals ik het wil). Echter de footer blijft staan waar hij staat (direct onder het submenu dus)
(of begrijp ik je verkeerd?)

  • Justice
  • Registratie: Maart 2001
  • Laatst online: 07-08-2025
http://css-discuss.incutio.com/?page=FooterInfo

Voor al je footer problemen.
Mja je begrijpt mij niet verkeerd maar ik dacht door de methode in dat artikel het probleem wel op te kunnen lossen, blijkbaar niet. hmmz.

Probleem is met position != static dat je de box uit de documentflow haalt, zoals het werkt (de footer onder het menu) is dus goed, alleen niet wat je wil. Ik weet niet hoeveel boxes je naast elkaar wil zetten? Je zou er eentje binnen de flow kunnen specificeren en dan de anderen met float properties ernaast kunnen zetten..

Ik weet niet 123 hoe je dit probleem oplost, maar misschien kan je wat met mijn suggesties.

Human Bobby


  • phYzar
  • Registratie: November 2001
  • Laatst online: 16:26
Justice schreef op 09 december 2003 @ 12:12:
http://css-discuss.incutio.com/?page=FooterInfo

Voor al je footer problemen.
Mja je begrijpt mij niet verkeerd maar ik dacht door de methode in dat artikel het probleem wel op te kunnen lossen, blijkbaar niet. hmmz. Kun je begrijpen dat ik gek wordt :P

Probleem is met position != static dat je de box uit de documentflow haalt, zoals het werkt (de footer onder het menu) is dus goed, alleen niet wat je wil. Ik weet niet hoeveel boxes je naast elkaar wil zetten? Je zou er eentje binnen de flow kunnen specificeren en dan de anderen met float properties ernaast kunnen zetten..Het is aan de gebruiker om per pagina een willekeurig aantal boxes op te geven. Elke box wordt op de zelfde manier aangemaakt (met een functie) en ze "weten niet van elkaars bestaan af" (met een float zou ik het probleem doorschuiven naar de gebruiker, die dan moet gaan passen en meten)

Ik weet niet 123 hoe je dit probleem oplost, maar misschien kan je wat met mijn suggesties.

  • Daniel304
  • Registratie: December 2000
  • Laatst online: 23-05 23:17
Om even te laten zien waar hij het over heeft.. hier een eigen voorbeeld
http://home.planet.nl/~oord0244/test.html

Ik heb hetzelfde probleem
Wij werken samen aan hetzelfde project....

[ Voor 22% gewijzigd door Daniel304 op 09-12-2003 13:32 ]


  • phYzar
  • Registratie: November 2001
  • Laatst online: 16:26
Daniel304 schreef op 09 december 2003 @ 13:28:
Om even te laten zien waar hij het over heeft.. hier een eigen voorbeeld
http://home.planet.nl/~oord0244/test.html

Ik heb hetzelfde probleem
Wij werken samen aan hetzelfde project....
Scheer je weg! Mijn topique! :P

ff wat screenshots van het probleem:
Absolute: (Boxes goed, footer fout)
Relative: (Boxes fout, footer goed(naja, bijna))

  • Morrar
  • Registratie: Juni 2002
  • Laatst online: 27-05 10:42
Tsja wat je wilt kan niet: absoluut positioneren en tegelijkertijd relatief om de document-flow te krijgen voor de footer. Er is ook niet zoiets als een relative-to directief zodat je relativiteit t.o.v. de omvattende box kunt opgeven.

Kortom, niet mogelijk zonder scripting/hacks. Ik vind het ook geen slimme methode aangezien je nu bij het aanmaken van iedere nieuwe box eerst een gaatje moet gaan zoeken op de pagina, en daarna kun je pas positie, hoogte en breedte invullen.

Ik zou relatieve boxes gebruiken dan ben je daar van af. Ik heb het zelf hier toegepast.

Suc6

  • phYzar
  • Registratie: November 2001
  • Laatst online: 16:26
Morrar schreef op 09 december 2003 @ 14:44:
Tsja wat je wilt kan niet: absoluut positioneren en tegelijkertijd relatief om de document-flow te krijgen voor de footer. Er is ook niet zoiets als een relative-to directief zodat je relativiteit t.o.v. de omvattende box kunt opgeven.
Jammer. Ik had gehoopt op een nette mogelijkheid.
Morrar schreef op 09 december 2003 @ 14:44:Ik vind het ook geen slimme methode aangezien je nu bij het aanmaken van iedere nieuwe box eerst een gaatje moet gaan zoeken op de pagina, en daarna kun je pas positie, hoogte en breedte invullen.
It's not a bug, it's a feature :P
Morrar schreef op 09 december 2003 @ 14:44:Ik zou relatieve boxes gebruiken dan ben je daar van af. Ik heb het zelf hier toegepast.

Suc6
Dan zit je weer vast aan een bepaald stramien/grid. En dan krijgt de site meer een "gallery"-achtige opmaak. Aangezien ik een menu heb en de meeste pagina's maar 1 of 2 boxes hebben is dit niet het meest handige. Het is puur voor opmaak van de content.
Pagina: 1