Wykrywanie nie wyczyszczonych CSS::float

Wczoraj na Ajaxianie pojawiła się krótka notka o sposobie na szybkie sprawdzenie który z elementów nie jest odpowiednio “wyclearowany”. Feature wydaje się być o tyle fajny, że pod IE6 czasem ciężko stwierdzić dlaczego layout się rozjeżdża, a Developer Toolbar przy zainstalowanym Multiple Ie działa tylko w IE7…

Jako że w naszej pracy głównie używamy biblioteki mootools, postanowiłem nieco zmienić przedstawioną wersję tak by z współpracowała z nią a nie z jQuery. A oto rezultat:

checkClear = function(){
  function checkNext(element, floating) {
    if(element.getStyle('clear') != 'none') {
      var clearing = true;
    } else {
      if(element.getNext()) {
        var clearing = false;
        checkNext(element.getNext(), floating);
      } else {
        element.setStyles({border:'2px solid', 'border-color':'#000'});
      }
    }
  }
  $ES('', document.body).each(function(pEl){
    var element = pEl;
    if(element.getStyle('float') !== 'none' && element.getNext()) {
        checkNext(element.getNext(), element.getStyle('float'));
    }
  });
};
checkClear();

Bookmarklet – wystarczy wejść na stronę i wkleić tę linie do pasku adresu po czym kliknąć enter, lub jak sama nazwa wskazuje dodać do zakładek :)

javascript:eval('checkClear=function(){function A(B,D){if(B.getStyle("clear")!="none"){var C=true}else{if(B.getNext()){var C=false;A(B.getNext(),D)}else{B.setStyles({border:"2px solid","border-color":"#000"})}}}$ES("",document.body).each(function(C){var B=C;if(B.getStyle("float")!=="none"&&B.getNext()){A(B.getNext(),B.getStyle("float"))}})};checkClear()');
Ten wpis umieszczono w kategorii JavaScript. Możesz dodać go do zakładek permalink. Dodaj komentarz lub dodaj odpowiedź (trackback): Trackback URL.

2 Komentarze

  1. dooshek
    Opublikowano 2 April, 2008 at 08:42 | Permalink

    Dodam tylko, że to nie będzie działało jeśli na stronie nie będzie załadowanej biblioteki mootools – bo nie wszyscy mogą to skumać :)

    Na naszej stronie (www.desmart.com) coś działa aczkolwiek nie jestem w stanie powiedzieć (skowron – może jakaś podpowiedź?) co to oznacza :)

  2. Opublikowano 3 April, 2008 at 07:22 | Permalink

    No tak tego nie przedstawiłem… Zaznaczone elementy to te które posiadają wartość float (left lub right) i które nie są później wyczyszczone przy pomocy clear (left, right, czy both), co prowadzi do rozpadania się layoutu. Jeżeli widzisz że coś się zawija nieprawidłowo to ten bookmarklet Ci pomoże :)

Skomentuj

Twój adres email nie zostanie opublikowany i nie będzie rozpowszechniany. Wymagane pola są oznaczone *

*
*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>