Jesteś tutaj: webmade.org >> kursy online >> kurs css >> Lekcja 8
autor: Patryk 'yarpo' Jar, ostatnia modyfikacja: 2007-10-16
Jak z pewnością spostrzegłeś podczas kursu wielokrotnie pisałem, że tego nie obsługuje jedna przeglądarka, a tego inna. Najczęściej jednak problemy stwarza MSIE, dlatego głównie na nim skupimy się podczas tej lekcji. Hacki najczęściej wykorzystują dziurę w jakiejś przeglądarce. Zobacz przykłady:
/* w pliku css */ table { width: 100px; voice-family: "\"}\""; // 1 voice-family: inherit; // 2 width: 200px; } // 3
Opis:
/* tak to czyta MSIE: */ table { width: 100px; voice-family: "\"}\""; // i już kończy, dalej nie będzie sprawdzał tej reguły - skoczy do następnej voice-family: inherit; width: 200px; } /* a nowoczesne przeglądarki: */ table { width: 100px; voice-family: "}"; // nieprawidłowa wartośc, ale czyta dalej, bo to przecież nie koniec świata:-) voice-family: inherit; width: 200px; }
Chyba wszystko jasne. Efekt jest bardzo ciekawy. Choć w przykładzie może się wydawać, że daje niewiele możliwości, to można dzięki niemu czasem rozwiązać pewne problemy. Ja osobiście rzadko używam tego hacka, gdyż częściej zdarza mi się sytuacja, kiedy to MSIE wymaga więcej kodu niż nowoczesne przeglądarki. A teraz kolejny ciekawy efekt:
table { właściwości: wartości czytane przez wszystkie przeglądarki; } /* Komentarz wieloliniowy, jednak przez dodanie '\' na końcu MSIE przeoczy koniec i będzie uważał cały pozostały kod za komentarz \*/ table { właściwości: czytane tylko przez nowsze przeglądarki; } /* Komentarz wieloliniowy zamknięty normalnie MSIE będzie uważał zamknięcie tego komentarza jako zamknięcie poprzedniego, a otwierające '\*' zignoruje */
Oczywiście można - używając hacków - tworzyć reguły dla innych selektorów niż 'table'. Zasada działania tego hacku jest podobna, gdyż ukrywa się fragmenty kodu dla MSIE. Z tą różnicą, że poprzedniego używa się do ukrywania pojedynczych właściwości, a tego do całych reguł.
No już probowałeś wszystkiego - prośbą, groźbą - a on nic! To "jak nie młotem, to pałą" i daj mu osobny plik CSS
... <head> <link rel="stylesheet" href="style-normal.css" type="text/css" /> <!-- [if IE]> // 1 <style type="text/css"> // 2 table { width: 100px; } // 2 </style> // 2 <![endif] --> // 3 </head> ...
Ten sposób jest używany przez mnie najczęściej, ponieważ daje mi to, czego ja najbardziej chcę - opis właściwości tylko dla MSIE. Teraz wróć do lekcji "Pozycjonowanie - gotowa strona" i dodaj tam odpowiednie linie kodu [HTML i CSS], aby sprawić, by strona w Operze/FF była "elastyczna", a w MSIE prezentowała się nieźle.
... <head> <script type="text/javaScript"> // 1 if (-1 != navigator.userAgent.indexOf("MSIE")) { // 2 document.write(''); } // 3 </script> // 1 </head> ...
Opis:
Można oczywiście dopisać tym sposobem tylko fragment kodu - jedną regułę, a można wstawić cały plik. Zasada jest taka sama jak w przykładzie powyżej - i efekt tez identyczny. Uwaga! Niektórzy mają wyłączoną obsługę JS, przez co ten sposób wydaje się być gorszy. Jednak jeśli ktoś używa MSIE, to raczej nie wyłącza obsługi JS [to domena bardziej doświadczonych internautów, kórzy używają lepszych programów niż MSIE].
Patryk 'yarpo' Jar
Zagadnienia poruszane w tej części kursu:
© 2004-2008 copyright by webmade.org