[css]div breekt uit parent div

Pagina: 1
Acties:

  • mmedia
  • Registratie: Januari 2002
  • Laatst online: 17-12-2021
in het kort:
HTML:
1
2
3
4
5
6
7
<div>
  <div>
    <div id="table">
      <table>...</table>
    </div>
  </div>
</div>


De <div> met id="table" bevat een float:right;.
Probleem is dat deze div uit zijn parent breekt, klik!
de volledige code:
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
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> voorbeeldje </TITLE>
<META NAME="Generator" CONTENT="">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
<style type="text/css">
html, body {
    height:100%;
    margin:0px;
    padding: 0px;
}
body {
    font-family: "Trebuchet MS", verdana, helvetica, arial, sans-serif; 
}
p {
    margin:0px;
    padding:0px;
}
#content {
    border-left:1px solid #666;
    border-right:1px solid #666;
    border-bottom:1px solid #666;
    background-color:#fff;
    padding:35px 80px 35px 35px;
    margin:0px;
    color:#333;
    font-size:12px;
    clear:both;
}
#contactInfoBox{
    border:1px solid #cc6600;
    float:right;
    margin-right:50px;
    padding-left:5px;
    padding-right:20px;
}
</style>
</HEAD>
<BODY>
<div id="content">
    <div style="padding-top:20px;">
        <div id="contactInfoBox">
            <table>
            <tr><td colspan="2">Blaat blaat </td></tr>
            <tr><td colspan="2">Blaat blaat </td></tr>
            <tr><td>Blaat blaat </td><td colspan="2">Blaat blaat </td></tr>
            <tr><td >Blaat blaat </td><td >Blaat blaat </td></tr>
            </table>
        </div>
    </div>
</div>
</BODY>
</HTML>


Ik vermoed dat het iets te maken heeft met de float:right;. Is er een mogelijkheid om child-div's altijd binnen parents te houden?

[ Voor 26% gewijzigd door mmedia op 31-03-2005 12:16 ]


  • Eskimootje
  • Registratie: Maart 2002
  • Laatst online: 09-05 19:02
ja hoor de parent element meegeven : overflow: hidden; dan valt alles wat er overheen valt weg.

  • Rowanov
  • Registratie: Februari 2004
  • Niet online

Rowanov

Kop eens wat anders...

edit:
Hier stonds wat doms :X

[ Voor 83% gewijzigd door Rowanov op 31-03-2005 12:21 ]


Verwijderd

da's idd een eigenschap van float, het element wordt dan uit de flow gehaald

de manier om dit op te lossen is je div om die table display: inline-block te geven en de breedte die je wenst en de div daar omheen text-align: right; te geven

dit werkt echter nergens, dus een andere oplossing is om na je float een <br style="clear: both"> op te nemen

Verwijderd

Verwijderd schreef op donderdag 31 maart 2005 @ 12:27:
da's idd een eigenschap van float, het element wordt dan uit de flow gehaald

de manier om dit op te lossen is je div om die table display: inline-block te geven en de breedte die je wenst en de div daar omheen text-align: right; te geven

dit werkt echter nergens, dus een andere oplossing is om na je float een <br style="clear: both"> op te nemen
Om even TS op gang te helpen: Eric Meyer legt in onderstaande link goed uit wat het gedrag van float is.

http://www.complexspiral.com/publications/containing-floats/

  • JHS
  • Registratie: Augustus 2003
  • Laatst online: 04-01 15:49

JHS

Splitting the thaum.

Een andere oplossing:
Cascading Stylesheet:
1
#content { overflow: auto; }
Zie hier.

DM!


Verwijderd

w3c doet dat toch ook prima? waarom lezen mensen dat nooit?
Omdat specificaties vooral bedoelt zijn voor diegene die ze implementeren in software, niet voor de gebruiker van de betreffende specificatie. Alhoewel het uiteraard wel het meest complete naslagwerk betreft van hetgeen geimplementeerd zou moeten zijn.

  • mmedia
  • Registratie: Januari 2002
  • Laatst online: 17-12-2021
Verwijderd schreef op donderdag 31 maart 2005 @ 12:27:
dit werkt echter nergens, dus een andere oplossing is om na je float een <br style="clear: both"> op te nemen
Die br truuk werkt niet lekker in IE, met hr gaat het al beter. Nog netter is om het volgende toe te passen (als je pixel perfect probeert te ontwerpen):
Cascading Stylesheet:
1
2
3
4
5
6
7
8
div.clearer {
  clear:both;
  line-height: 0;
  height:0;
  padding:0;
  margin:0;
  visibility:hidden;
}

En een div toevoegen met deze klasse als laatste child.

  • Rowanov
  • Registratie: Februari 2004
  • Niet online

Rowanov

Kop eens wat anders...

mmedia schreef op donderdag 31 maart 2005 @ 19:29:
[...]


Die br truuk werkt niet lekker in IE, met hr gaat het al beter. Nog netter is om het volgende toe te passen (als je pixel perfect probeert te ontwerpen):
Cascading Stylesheet:
1
2
3
4
5
6
7
8
div.clearer {
  clear:both;
  line-height: 0;
  height:0;
  padding:0;
  margin:0;
  visibility:hidden;
}

En een div toevoegen met deze klasse als laatste child.
In wat verschilt dit van alle bovengenoemde oplossingen en wat stelt die laatste div semantisch voor? Ik vind dit dus niet netter aangezien je een element gaat toevoegen, puur om je layout goed te krijgen. Als je die oplossing van Eric Meyer beter had gelezen had je gezien dat display: block; dit allemaal oplost.
Ik raad de TS aan de oplossing van Anne (dus uit de post van JHS) te gebruiken, aangezien die oplossing puur css is en er aan het eigenlijke document niets veranderd wordt.

[ Voor 3% gewijzigd door Rowanov op 31-03-2005 19:38 ]


  • mmedia
  • Registratie: Januari 2002
  • Laatst online: 17-12-2021
Rowanov schreef op donderdag 31 maart 2005 @ 19:37:
[...]
Ik raad de TS aan de oplossing van Anne (dus uit de post van JHS) te gebruiken, aangezien die oplossing puur css is en er aan het eigenlijke document niets veranderd wordt.
Alleen moet je bij deze oplossing om het in IE te laten werken weer:

Cascading Stylesheet:
1
_height:1%;


toevoegen. Lijkt me ook een hack.

Verwijderd

So?
Pagina: 1