Een div tot bodem van andere div

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • devhouse
  • Registratie: Juli 2008
  • Laatst online: 01-12-2021
Hallo mede-tweakers!

Ik ben bezig met een website voor een site, en ik wil dat een div, met een dynamische achtergrond kleur, altijd tot de bodem komt van zijn parent div. Ik heb al op verschillende dingen geprobeerd, maar helaas is nog weinig gelukt. Een ding die ik geprobeerd hebt is als laatste regel <div style="position: absolute;bottom:9;"</div> toevoegen(in de div met de dynamische achtergrond.)

Ik heb natuurlijk ook gezocht, maar ik heb helaas niks gevonden.

De code is nu als volgt:
HTML:
1
2
3
4
5
6
7
8
<div class="container" > <!-- Parent DIV -->
    <div class="middle-shadow"></div>
    <div class="content-container" style="background-color: <?php echo $colors[$pageColor]['color']; ?>"> <!-- Dynamiche Kleur DIV -->
        <div class="content"><jdoc:include type="component" /></div>
    </div>
    <div class="sidebar-container"></div>
    </div>
</div>


Cascading Stylesheet:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
.container {
    width: 1074px;
    min-height: 100%; 
    height : auto !important;
    height : 100%;
    position: relative;
    margin: 0 auto;
    display: block;
    background: url('../images/shadow.png') repeat-y;
}
.content-container {
    width: 794px;
    min-height: 100%;
    float: left;
    margin-left: 25px;
}


Weet iemand hoe ik dit kan oplossen?

Tom

Acties:
  • 0 Henk 'm!

  • MueR
  • Registratie: Januari 2004
  • Laatst online: 10:22

MueR

Admin Tweakers Discord

is niet lief

Het zoekwoord van de dag is faux columns

Anyone who gets in between me and my morning coffee should be insecure.


Acties:
  • 0 Henk 'm!

  • devhouse
  • Registratie: Juli 2008
  • Laatst online: 01-12-2021
ok, bedankt, het is een soort van gelukt, het enigste probleem is dat ik nu scrollbars krijg in de 100% div's. dit is niet de bedoeling, is er een manier om dit weg te halen. Dit is nu de code:

Cascading Stylesheet:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
.container {
    width: 1074px;
    min-height: 100%; 
    height : auto !important;
    height : 100%;
    position: relative;
    margin: 0 auto;
    display: block;
    background: url('../images/shadow.png') repeat-y;
}
.content-container {
    width: 794px;
    min-height: 100%;
    float: left;
    margin-left: 25px;
 top:0;
    left:0;
    bottom: 0; 
    overflow: auto;
}

Acties:
  • 0 Henk 'm!

  • Herko_ter_Horst
  • Registratie: November 2002
  • Niet online
De juiste manier om het weg te halen is het box-model snappen en daarmee weten wat height: 100% betekent. De snelle manier is overflow: hidden.

"Any sufficiently advanced technology is indistinguishable from magic."


Acties:
  • 0 Henk 'm!

  • devhouse
  • Registratie: Juli 2008
  • Laatst online: 01-12-2021
height: 100% betekent een hoogte van 100%:S

overflow op hidden zetten, is ind. niet de juiste manier, want dan is het niet meer mogelijk om te scollen :-(

Acties:
  • 0 Henk 'm!

  • Sebazzz
  • Registratie: September 2006
  • Laatst online: 16-09 15:42

Sebazzz

3dp

Geript van Wikipedia:
Afbeeldingslocatie: http://upload.wikimedia.org/wikipedia/commons/thumb/6/64/W3C_and_Internet_Explorer_box_models.svg/299px-W3C_and_Internet_Explorer_box_models.svg.png
Als je de content dus 100% hoogte geeft, betekent dit dat de margin, padding, en de borders daar nog bij opgeteld worden.

[ Voor 13% gewijzigd door Sebazzz op 27-10-2009 19:16 ]

[Te koop: 3D printers] [Website] Agile tools: [Return: retrospectives] [Pokertime: planning poker]


Acties:
  • 0 Henk 'm!

  • devhouse
  • Registratie: Juli 2008
  • Laatst online: 01-12-2021
Sebazzz schreef op dinsdag 27 oktober 2009 @ 19:15:
Geript van Wikipedia:
[afbeelding]
Als je de content dus 100% hoogte geeft, betekent dit dat de margin, padding, en de borders daar nog bij opgeteld worden.
dat wist ik natuurlijk al:)

De scrollbar zit er bij overflow:auto niet altijd, maar wanneer de hoogte van een tekst artikel, groter is dan de ruimte, kumt er een scrollbar in het de content-container, en niet aan de zijkant van de pagina.

Acties:
  • 0 Henk 'm!

  • Pixeltje
  • Registratie: November 2005
  • Laatst online: 17-09 15:09

Pixeltje

Woo-woohoo!

tom.keim schreef op dinsdag 27 oktober 2009 @ 19:20:
[...]

dat wist ik natuurlijk al:)

De scrollbar zit er bij overflow:auto niet altijd, maar wanneer de hoogte van een tekst artikel, groter is dan de ruimte, kumt er een scrollbar in het de content-container, en niet aan de zijkant van de pagina.
Dat is ook logisch, aangezien je de content van je DIV groter is dan de DIV. Je kan dus scrollen om je content te lezen. Als je dat niet wilt zul je moeten aangeven dat je DIV meegroeit met je content, en dat dus ook de parent meegroeit. Als je text/content dat groter is dan je div, kun je scrollen op de hele pagina ipv. in alleen je div-met-content.

And I begged Angel of the Lord what are these tortured screams? And the angel said unto me; These are the cries of the carrots, the cries of the carrots! You see, Reverend Maynard, Tomorrow is harvest day and to them it is the holocaust


Acties:
  • 0 Henk 'm!

  • devhouse
  • Registratie: Juli 2008
  • Laatst online: 01-12-2021
Pixeltje schreef op dinsdag 27 oktober 2009 @ 19:26:
[...]


Dat is ook logisch, aangezien je de content van je DIV groter is dan de DIV. Je kan dus scrollen om je content te lezen. Als je dat niet wilt zul je moeten aangeven dat je DIV meegroeit met je content, en dat dus ook de parent meegroeit. Als je text/content dat groter is dan je div, kun je scrollen op de hele pagina ipv. in alleen je div-met-content.
dat is ook de bedoeling, nou weet ik gewoon de basis van css, maar met dit soort dingen kom ik echt niet ver, hoe kan ik aangeven dat het child evengroot is als de parent?


edit, ik heb een andere optie gevonden, helaas geeft dit ook niet het optimale resultaat :(

Wat al in .container staat was position: relative;. Dit betekend, als ik het me goed heb herinnert dat position: absolute, hierbinnen blijft. Dus ik dacht, als ik .content-container position: absolute meegeef, met top: 0px; en bottom: 0px; misschien werkt dat, maar helaas, .content(code van dit object geef ik zo) gaat verder dan .content-container :(

De code is nu als volgt(html is niet veranderdt):
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
.container {
    width: 1074px;
    min-height:  100%;
    height : auto !important; /* voor moderne browsers */
    height : 100%; /* voor IE */
    position: relative;
    margin: 0 auto;
    display: block;
    background: url('../images/shadow.png') repeat-y;

}
.content-container {
    width: 794px;
    float: left;
    margin-left: 25px;
    position: absolute;
    bottom: 0px;
    top: 0px;
}
.content {
    position: relative;
    padding-top: 170px;
    width: 794px;
    height: auto;
}

[ Voor 43% gewijzigd door devhouse op 27-10-2009 20:06 ]


Acties:
  • 0 Henk 'm!

  • Kiphaas7
  • Registratie: Februari 2005
  • Laatst online: 17-09 21:21
Kort antwoord:
Check de volgende template van bosmonster: http://www.bosmonster.nl/html/centered_with_footer.html

Lang antwoord:
Het hele idee van faux columns is dat de container de kolommenachtergrond simuleert, terwijl de child items niet werkelijk de volledige hoogte krijgen. Height met een getal waarde fixeert je hoogte, terwijl jij een combinatie height:auto !important zoekt, icm een min-height die een minimale hoogte aanhoudt (en dus meegroeit.

Dit verhaaltje gaat niet op in IE6, maar gelukkig ziet IE6 height als min-height. Dus nogmaals height defineren als 100% en IE6 vind het ook leuk. Alle andere browsers lezen height:auto omdat er !important achterstaat, behalve IE6 niet, want die snapt !important niet, negeert het, en overschijft height:auto met height:100%.


Cascading Stylesheet:
1
2
3
4
5
6
7
8
9
10
11
12
div#site {
    position: relative;

    width: 980px;
    margin: 0 auto;

    background-color: #eee;
    background-image: url(../images/example_faux_columns.gif);

    height: auto !important;
    height: 100%; /* IE6 treats this as min-height */
    min-height: 100%;



Bovenstaande is schaamteloos geript van bosmonster's site, maar legt wel bovenstaand verhaal uit.

Overigens is je css ook niet helemaal netjes (zorgt niet voor fouten, maar wel onzinnig):
  • je defineert een top en bottom (wtf?) voor je .content-container, terwijl deze helemaal niet relatief of absoluut is gepositioneerd, dus top left en bottom doen helemaal niks!
  • een div is van nature een block-item, dus is het zinloos om nog eens display:block te defineren.
EDIT:
Mocht je dingen dynamisch willen maken, dan moet je met php de background image gaan maken, of toch een image-loze layout willen, dan kan je eventueel hier kijken:
http://www.cssplay.co.uk/layouts/three-column-layouts.html

Alhoewel bosmonster z'n oplossing een stuk robuuster is (eigen ervaring).

[ Voor 49% gewijzigd door Kiphaas7 op 27-10-2009 20:17 ]


Acties:
  • 0 Henk 'm!

  • devhouse
  • Registratie: Juli 2008
  • Laatst online: 01-12-2021
Kiphaas7 schreef op dinsdag 27 oktober 2009 @ 20:07:
Kort antwoord:
Check de volgende template van bosmonster: http://www.bosmonster.nl/html/centered_with_footer.html

Lang antwoord:
Het hele idee van faux columns is dat de container de kolommenachtergrond simuleert, terwijl de child items niet werkelijk de volledige hoogte krijgen. Height met een getal waarde fixeert je hoogte, terwijl jij een combinatie height:auto !important zoekt, icm een min-height die een minimale hoogte aanhoudt (en dus meegroeit.

Dit verhaaltje gaat niet op in IE6, maar gelukkig ziet IE6 height als min-height. Dus nogmaals height defineren als 100% en IE6 vind het ook leuk. Alle andere browsers lezen height:auto omdat er !important achterstaat, behalve IE6 niet, want die snapt !important niet, negeert het, en overschijft height:auto met height:100%.


Cascading Stylesheet:
1
2
3
4
5
6
7
8
9
10
11
12
div#site {
    position: relative;

    width: 980px;
    margin: 0 auto;

    background-color: #eee;
    background-image: url(../images/example_faux_columns.gif);

    height: auto !important;
    height: 100%; /* IE6 treats this as min-height */
    min-height: 100%;



Bovenstaande is schaamteloos geript van bosmonster's site, maar legt wel bovenstaand verhaal uit.

Overigens is je css ook niet helemaal netjes (zorgt niet voor fouten, maar wel onzinnig):
  • je defineert een top en bottom (wtf?) voor je .content-container, terwijl deze helemaal niet relatief of absoluut is gepositioneerd, dus top left en bottom doen helemaal niks!
  • een div is van nature een block-item, dus is het zinloos om nog eens display:block te defineren.
EDIT:
Mocht je dingen dynamisch willen maken, dan moet je met php de background image gaan maken, of toch een image-loze layout willen, dan kan je eventueel hier kijken:
http://www.cssplay.co.uk/layouts/three-column-layouts.html

Alhoewel bosmonster z'n oplossing een stuk robuuster is (eigen ervaring).
bedankt voor de link, volgens mij zorgt de footer ervoor dat de pagina naar beneden wordt getrokken, ik zal dan ook even kijken hoe ik dat kan toepassen. :)

Acties:
  • 0 Henk 'm!

  • devhouse
  • Registratie: Juli 2008
  • Laatst online: 01-12-2021
En ja hoor: het is gelukt, bedankt voor alle hulp!!

Acties:
  • 0 Henk 'm!

  • Kiphaas7
  • Registratie: Februari 2005
  • Laatst online: 17-09 21:21
tom.keim schreef op dinsdag 27 oktober 2009 @ 20:19:
[...]


bedankt voor de link, volgens mij zorgt de footer ervoor dat de pagina naar beneden wordt getrokken, ik zal dan ook even kijken hoe ik dat kan toepassen. :)
Nee hoor, lees mijn verhaal maar door.... En anders open je de site even en haal je met firebug de footer weg, zul je zien dat deze nog steeds werkt. :)
Pagina: 1