Toon posts:

[css/js] dubbele padding in IE bij setten display

Pagina: 1
Acties:

Verwijderd

Topicstarter
ik heb 2 geneste divs, met daarin nog twee divjes die ik dmv document.getElementById().style.display wil kunnen showen en hiden. het vreemde is echter dat de eerste keer dat ik de toggle-functie aanroep, in IE de padding-bottom van de buitenste div verdubbelt, onafhankelijk van welke div ik probeer te showen of hiden. klik hier voor een voorbeeld.
dit is de code:
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
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
    <title>home</title>
    
    <style type="text/css">
        div.outer {
            padding: 20px;
            background: #666;
            /* boxmodel-hack */
            width:240px;
            height: 240px;
            voice-family: "\"}\""; 
            voice-family:inherit;
            width:200px;
            height: 200px;
        }
        div.inner {
            float: left;
            width: 200px;
            height: 200px;
            background: #ccc;
        }
        div#nr1 {
            display: block;
            background: #f00;
        }
        div#nr2 {
            display: none;
            background: #0f0;
        }
    </style>
    
    <script type="text/javascript">
        function toggle() {
            var isHidden = (document.getElementById('nr1').style.display == "none");
            document.getElementById('nr1').style.display = (isHidden ? "block" : "none");
            document.getElementById('nr2').style.display = (isHidden ? "none" : "block");
        }
    </script>
</head>

<body>

    <div class="outer">
        <div class="inner">
            <a href="javascript:toggle();">klik voor toggle</a>
            <div id="nr1">
                nr1
            </div>
            <div id="nr2">
                nr2
            </div>
        </div>
    </div>
    
</body>
</html>

Het probleem treedt niet meer op wanneer ik
1) de float van de div.inner verwijder (maar dat is geen optie omdat ik die float nodig heb voor meerdere kolommen in de niet-uitgeklede versie).
2) de breedte van div.inner een paar pixels kleiner maak (maar dat is niet mooi)
3) de padding van div.outer vervang door een margin op div.inner en div.outer een border geef om de margin-collapsing te voorkomen (dit is wat ik ga doen)
Ik heb dus wel een workaroud gevonden, maar kent iemand dit probleem, of heeft iemand een idee hoe dit komt?

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 22-03 18:12
Probeer eens een <div style="float: none; clear: both;"></div> na inner te zetten. Welicht dat dat helpt.

Edit:

Ik heb het zelf even getest en het werkt. Je moet alleen nog ff de padding van je outer dan nog bijstellen.

[ Voor 44% gewijzigd door Michali op 09-09-2005 10:55 ]

Noushka's Magnificent Dream | Unity


Verwijderd

Topicstarter
Dit is een uitgeklede versie. In de "echte" versie heb ik drie inner divs naast elkaar, en heb ik die float dus nodig. oplossing 3 werkt in principe, alleen heb ik daar voor IE/mac weer een probleem als ik drie kolommen ga gebruiken; dan lijkt de top-margin van de floats te collapsen, m.u.v. de laatste float :(

  • Skaah
  • Registratie: Juni 2001
  • Niet online
Fck IE/Mac. Geen hond die dat nog gebruikt, alle mac mensen zitten op Safari.

Verwijderd

Topicstarter
/me juaron geeft een klein schopje

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 09:12

crisp

Devver

Pixelated

Verwijderd schreef op vrijdag 09 september 2005 @ 09:34:
[...]
Ik heb dus wel een workaroud gevonden, maar kent iemand dit probleem, of heeft iemand een idee hoe dit komt?
Ik ken vele problemen mbt het floatmodel in IE; het is gewoon buggy...

Intentionally left blank


  • Michali
  • Registratie: Juli 2002
  • Laatst online: 22-03 18:12
Die float is toch geen probleem? Probeer mijn oplossing eens uit met die float. Dat was ook de bedoeling.

Noushka's Magnificent Dream | Unity


Verwijderd

Topicstarter
@Michali: ik had je eerste post niet goed gelezen, en dacht dat je bedoelde dat ik de float van de inner div af moest halen. door die extra div toe te voegen verspringt de padding niet meer, maar is hij altijd te hoog in IE. als ik dat aanpas klopt de padding in firefox weer niet meer. Ik denk dat ik het maar bij mijn workaround laat...
Pagina: 1