theHacker

sieht vor lauter Ads den Content nicht mehr
Teammitglied
ID: 69505
L
20 April 2006
22.682
1.316
Moin.

Ich kämpfe gerade mal wieder mit Billy's Browsern. Eigentlich wollte ich im Thread der Lösung fragen, doch die hab ich mittlerweile gefunden - jetzt ist nur noch die Frage nach dem "Warum?".

Ziel war es, eine Kachel-ähnliche Ansicht wie im Windows Explorer ab XP zu schaffen (links ein Bild, rechts Text)

Hier mein Testcode:
HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="https://www.w3.org/1999/xhtml" lang="de">
  <head>
    <title>Test</title>
    <style type="text/css">
      a img {
        border: none;
      }
      ul li {
        list-style: none;
        width: 300px;
      }
      ul li div.a {
        float: left;
        width: 70px;
      }
      ul li div.b {
        width: 150px;
        margin-left: 80px;
      }
    </style>
  </head>
  
  <body>
    <div>
      <div>
        <div>
          <div>
            <h2>u ghiuh iuh iuh iu</h2>
            <div>
            
              <!-- test -->
              <ul>
                <li>
                  <div class="a">
                    <a href="#"><img src="../?=PHPE9568F34-D428-11d2-A769-00AA001ACF42" style="width: 60px; height: 40px;" alt="foo" /></a>
                  </div>
                  <div class="b">
                    <p>jio joi io io jj iosdfj iosdafj iosafj iosdfj iosdfj iosdfj iosdfj iosdfj iosdfhaiosdafh isudfh sudagf sdaofh isudafoh sdafu hsdof sudafh iosudfh iosudfh iosudafh iudsafh isudh fuisdh fiuhsda fiuio</p>
                  </div>
                  <div style="clear: left;"></div>
                </li>
                
                <li>
                  <div class="a">
                    <a href="#"><img src="../?=PHPE9568F34-D428-11d2-A769-00AA001ACF42" style="width: 60px; height: 40px;" alt="foo" /></a>
                  </div>
                  <div class="b">
                    <p>jio joi io io jj iosdfj iosdafj iosafj iosdfj iosdfj iosdfj iosdfj iosdfj iosdfhaiosdafh isudfh sudagf sdaofh isudafoh sdafu hsdof sudafh iosudfh iosudfh iosudafh iudsafh isudh fuisdh fiuhsda fiuio</p>
                  </div>
                  <div style="clear: left;"></div>
                </li>
                
                <li>
                  <div class="a">
                    <a href="#"><img src="../?=PHPE9568F34-D428-11d2-A769-00AA001ACF42" style="width: 60px; height: 40px;" alt="foo" /></a>
                  </div>
                  <div class="b">
                    <p>jio joi io io jj iosdfj iosdafj iosafj iosdfj iosdfj iosdfj iosdfj iosdfj iosdfhaiosdafh isudfh sudagf sdaofh isudafoh sdafu hsdof sudafh iosudfh iosudfh iosudafh iudsafh isudh fuisdh fiuhsda fiuio</p>
                  </div>
                  <div style="clear: left;"></div>
                </li>
              </ul>
              <!-- /test -->
              
            </div>
          </div>
        </div>
        
        <div style="clear: both;"></div>
      </div>
    </div>
    
  </body>
</html>
Im Firefox natürlich kein Problem, aber die IEs 6 und 7 spinnen natürlich wieder rum und rutschen den rechten Teil ein Stück nach unten. IE8 ist außen vor, der arbeitet korrekt.

Da IEs<8 keine Hilfsmittel mitbringen, um Layoutfehler zu debuggen, hab ich dann Rahmen eingesetzt, um mir das anzusehen, wo der Abstand herkommt.
HTML:
<style type="text/css">
      a img {
        border: none;
      }
      ul li {
        list-style: none;
        border: 1px solid yellow; /* NEW*/
      }
      ul li div.a {
        border: 1px solid red;  /* NEW*/
        float: left;
        width: 70px;
      }
      ul li div.b {
        border: 1px solid green;  /* NEW*/
        width: 150px;
        margin-left: 80px;
      }
    </style>
Plötzlich war alles korrekt! 8O

Das war das ursprüngliche Problem. Mit Rahmen geht es, aber ohne Rahmen geht es nicht. Auch so Tricks à la "border: 0px solid red" funktionierten nicht.

Hier nochmal zum Anschauen:


Lösung: Dem <li>-Tag eine Breite geben; dann funktioniert es auch ohne Rahmen in IE6,7.
HTML:
<style type="text/css">
      a img {
        border: none;
      }
      ul li {
        list-style: none;
        width: 300px; /* THAT'S IT */
      }
      ul li div.a {
        float: left;
        width: 70px;
      }
      ul li div.b {
        width: 150px;
        margin-left: 80px;
      }
    </style>
Die Frage: Wieso?
 
Hi,

habe es net gelesen, weil mir grad die Zeit fehlt, aber ich meine es hat was mit dem Peekaboo Bug zu tun.

Und nur mal so als Idee in den Raum werf, wieso nicht
HTML:
border: 1px solid transparent/#FFF;
Bin mir nicht sicher ob transparent angenommen wird, oder so wie ich es in letzter Zeit mache, für solche Sachen nutze ich mittlerweile Blueprint, schon einfach und es geht in jedem Browser.
 
Schlaumeier... IE scheißt dir was :ugly: transparent wird zwar angenommen, Verhalten is dann aber wieder wie bei ganz ohne Rahmen.

Ok, das wußte ich nicht, hab ich auch wieder was gelernt :)

*edit
Halt mich auf dem laufenden, ob es wirklich dieser Bug war, kann die nächsten Tage wahrscheinlich den Thread net verfolgen.
 
habe es net gelesen, weil mir grad die Zeit fehlt, aber ich meine es hat was mit dem Peekaboo Bug zu tun.
Hehe. Nein, das ist nicht dieser Bug. Aber den hatte ich vorher, da ich da noch keine Aufzählung, sondern alles mit Divs gebaut hatte.

Hatte damals n Video für ice-breaker gemacht:
https://dummy.thehacker.ws/ie6_ice.avi (ersten zwei Drittel lädt der IE nur :biggrin:)

Meine Lösung war zu diesem Zeitpunkt auch, dass ich gesagt habe, IE-Benutzer kriegen halt keinen Box-Hintergrund. Allerdings habe ich diesen Bug auf IE6 und IE7 - wie das Problem aus diesem Thread hier - feststellen können.
Sogar der Firefox hatte mal kurz rumgesponnen. Er hat zwar keinen Content verschwinden lassen, aber es gab eine "unsichtbare horizontale Linie", wo der Cursor von Text- auf Pfeilform gewechselt ist 8O

Fragt mich ned, was da damals anders war. Den Code hab ich jetzt auch gar nimmer.

Mit der Liste funktioniert alles und ist auch noch semantisch korrekter, als die anfängliche Div-Lösung.
[...] für solche Sachen nutze ich mittlerweile Blueprint, schon einfach und es geht in jedem Browser.
Ich vermeide Fremdcode, wo es geht. Ziel is ja nicht, ein fixes Gridlayout von einem Dritten zu verwenden, sondern das umzusetzen, was ich im Kopf hab ;)