Strona używa cookies (ciasteczek). Dowiedz się więcej o celu ich używania i zmianach ustawień. Korzystając ze strony wyrażasz zgodę na używanie cookies, zgodnie z aktualnymi ustawieniami przeglądarki.    X

Standardy, przeglądarki, obrane banany i kot o imieniu Jan

...Czyli Historia lubi zataczać koła.

Kiedyś dawno temu, gdy po ziemi chodziło dinozaury Internetu toczyła się legendarna już wojna przeglądarek. To co mamy teraz to Pan Pikuś w porównaniu do tego co było. Po lewej stronie ringu, zasłużony w bojach, znienawidzony i bezsprzecznie mający za swymi plecami najpotężniejszego z najpotężniejszych Internet Explorer. Po drugiej stronie, Netscape. Phi. Wojna wydawała by się z aktualnego punktu widzenia z góry ustawiona – bo jak mógłby MS przegrać. A jednak było ciężko dla firmy Gatesa – do tego stopnia z IE podszywał się pod Mozille – bo tak nazywała się teoretycznie przeglądarka od Netscape’a – Netscape Navigator.

Relikwiami tego okresu – dla wielu niezrozumiałymi – jest sposób w jaki działa IE6 oraz IE7. Niestety, tylko dzięki oryginalności, oraz wprowadzeniu swoich tylko funkcji, które wyglądały superekstraśnie Microsoftowi udało się wygrać. I zapanowały mroczne dni w Internecie. Tyrania Marque, Tabel, oraz AcitveXów o filtrach nie wspominając.

Lecz oto pojawiły się małe promyki nadziei.

Mozilla Firefox oraz Opera – te dwie przeglądarki zmieniły świat na tyci lepszy.
Ale hola – zatrzymajmy się tu aby skorygować parę faktów. Po pierwsze protoplasta Opery powstał przed Firefoxem i IE. Po drugie Mozilla/Netscape Navigator powstał długo przed IE i była fundamentem dla Firefoxa. Dobra, korygacja z głowy, przejdźmy do sedna.

Gdy popularne stały się nowe, alternatywne przeglądarki, zaczął się równie nowy front w interncie – standaryzacja. I o dziwo, przeglądarka która wspierała najwięcej standardów w dawnych czasach, czyli IE, nie wspierała żadnych. No prawie.

Szok.

Ot, i szybko zaczęła się wojna przeglądarkowo-standardowa. Zyskujący Firefox (oraz kilka innych) bardzo restrykcyjnie podchodziły do renderowania kodu HTML i CSS, czego znowu twór Panów z Redmond nie potrafił. Generowało to masę problemów, gdy ten sam kod wyświetlał się całkiem inaczej pod każdą przeglądarką – a najgorzej pod Eksploratorem Internetowym.

Zaczęto bojkotować, palić ludzi na stosie i dokonywać zamachów na koty pracowników Microsoftu - a IE6 w najlepsze sobie był i nie zamierzał się zmieniać. Przypominało to trochę sytuacje sprzed kilku lat (90s) gdy Netscape przegrał wojnę bo nie zmieniał przeglądarki swej praktycznie od momentu wydania a tymczasem IE co chwile wydawał nową… zaraz, czy wam się to z czymś nie kojarzy? No ale nieważne.

Wracając do sedna. Sytuacja na dziś? Firefox ma spory udział w rynku, tak sam jak Opera, Safari i Chrome. A także grono innych przeglądarek. Pojawiło się też IE7, IE8 a niedługo i IE9 i co? Czy żyjemy w lepszych czasach, czy nareszcie doszło do sytuacji gdy wszystko wyświetla się wszędzie dobrze?

G*** prawda!

Niestety/Stety pojawił się CSS3 – Coś na co szczerze mówiąc czekałem długo. Coś co jednak wkurza mnie bardziej niż sierść mego kota na czarnych ubraniach.

Przedrostki.

Nie każdy pewnie je kojarzy, więc przedstawię w skrócie problem. Większość przeglądarek internetowych nowej ery, a właściwie to silników renderujących, wprowadziło swoje własne przedrostki przed nieoficjalnymi implementacjami właściwości CSS3. Wyglądają one mniej więcej tak:

-moz-border-radius -webkit-box-shadow -o-transform

Generalnie nie byłbym taki zły gdyby nie fakt, że wróciliśmy do sytuacji sprzed kilku lat, gdy dana strona wyświetla się poprawnie jedynie na jednej słusznej przeglądarce i nie dlatego, że jest źle napisana, lub dlatego, że moja przeglądarka nie obsługuje danego znacznika. Tylko dlatego, że ktoś uznał, że jedyną słuszną przeglądarką jest Mozilla Firefox i przed wszystkie właściwości specyficzne dla CSS3 wstawił –moz- lejąc kompletnie na pozostałe. I nie wkurz się tu.

Najgorsze jest jednak to, że wśród poważnych webdeveloperów trend ten nabiera w siłę. Wraz z pojawianiem się w nowszych wersjach FF’a i Chroma coraz to nowszych implementacji kolejnych właściwości kaskadowych arkuszy stylów coraz bardziej rozmijamy się ze standaryzacją.

Ale wytłumaczmy sobie parę rzeczy.

Nie mam nic przeciwko przedrostkom, wbrew pozorom to dobra rzecz. Możemy dzięki nim zniwelować parę niedogodności i wyświetlić nowszym przeglądarkom ładniejszą stronę (starszym zostawiając kanciaste divy ;) ). Daje nam to też możliwość naprawienia specyficznych dla innych przeglądarek błędów.

Co jest więc problemem? Jak zawsze, ten element między klawiatura a krzesłem – ludź!

Buszując po necie oglądam, czytam, testuje nowe technologie i liczne pomysły. To jak niektórzy wykorzystują CSS3 oraz HTML5 jest naprawdę niesamowite… dopóki robią to poprawnie. Często zdarza się, iż twórcy tak pomysłowych stronek i tutoriali zapominają, że inne przeglądarki korzystają póki co z innego przedrostka i w praktyce przykład działa (np. border-radius) to użytkownik Opery go nie zobaczy, bo „twórca” wpisał tylko –moz-border-radius. I jak tu takiego domorosłego samozwańczego web developera nie zamordować, no jak, się pytam?
Pozostaje czekać aż wszystkie przeglądarki oficjalnie zaimplementują nowego, „trzeciego styla” ale i wtedy trzeba będzie poczekać aż niektórzy się opamiętaj i pousuwają przedrostki ze swoich plików.

A póki co morał na koniec jest prosty: Jeśli stosujesz przedrostki, to na litość boską stosuj wszystkie! Będziesz miał trochę więcej pisania, ale usłyszysz na pewno mniej obelg skierowanych w swoim kierunku. ;D Czego każdemu życzę.

Zdjęcia wykorzystalem bezprawnie, bla bla bla, tylko w celach ilustracyjnych, nie do nich praw, bla bla bla. Komiksowa grafika nalęzy do O'Maleya. Dziekuje.  

Komentarze

0 nowych
Kintoki   6 #1 28.03.2011 12:41

No to jest fakt niezaprzeczalny. Nawet taki vbulletin niby płatny porządny skrypt ale domyślną skórę ma zj**ną(pełną błędów) po całości.
Pociesza mnie fakt że w ff4 pozbyto się prefiksów dla niektórych właściwości(w tym border-radius) i za kilka wydań(ff4) ma zniknąć całkowicie wsparcie dla np -moz-border-radius i pseudo webmasterzy będą musieli poprawiać swoje strony dla jedynej słusznej przeglądarki ;D

  #2 28.03.2011 13:43

No cóż :) Ja na takie rzeczy polecam np. Turbine CSS - przedstawiciela gatunku skryptów, które ratują skórę leniwcom ;) Dodatkowo oferuje kilka ciekawych rozwiązań, jak generowanie filtrów dla starszych wersji MSIE, pozwalających również stworzyć zaokrąglone rogi :)

Jaahquubel_   12 #3 28.03.2011 14:10

Twoje wpisy czytałoby się nawet przyjemnie, gdyby nie różnorakie błędy...
"nowszym przeglądarką" - powinno być "nowszym przeglądarkom".
A na końcach tytułów nie stawia się kropek.
no jak tu takiego blogera nie zamordować, no jak, się pytam? ;)

Do rzeczy.
Jak ja nie lubię odwalania fuszerki! A pisanie pod jedyną aktualnie słuszną przeglądarkę, albo załatwianie wszystkich problemów ze stroną gradientami, jest fuszerką.

  #4 28.03.2011 14:52

"Pozostaje czekać aż wszystkie przeglądarki oficjalnie zaimplementują nowego, „trzeciego styla” ale i wtedy trzeba będzie poczekać aż niektórzy się opamiętaj i pousuwają przedrostki ze swoich plików. "

Na to długo poczekamy. Załóżmy, że w statsach będzie tylko/aż 5% np. Firefoxa 3. Co wtedy? Mam usuwać im zaokrąglenia tylko dla czytelniejszego CSSa?
Możemy robić strony na 3 sposoby:
- pod walidator: niekoniecznie ładnie wyglądające u każdego
- pod użytkownika z uwzględnieniem walidatora: będą błędy, ale będzie kompromis, dzięki czemu będzie wygląda najlepiej jak się da
- pod użytkownika - marquee, budowa na tabelkach itp., wiadomo o co chodzi :)

Kintoki   6 #5 28.03.2011 16:54

@tomick "Turbine CSS" podobać mi się :)
Musze się tym trochę pobawić może wykorzystam w przyszłości.

webnull   9 #6 28.03.2011 19:41

"G*** prawda!" i ten obrazek kota..

Brak słów - koleś utrzymuj jakiś normalny poziom, a jak masz tak pisać to nie pisz albo żeby to na główną przynajmniej nie trafiało..

MaXDemage   17 #7 28.03.2011 20:27

@webnull
Dzięki za opinię :)

@tomick
Ja w takich sytuacjach preferuje LESS css. Choć rzadko kiedy go używam, większość rzeczy wole machnąć od ręki.

@Jaahquubel_
Za błędy naprawdę przepraszam - osoba, która czyta sprawdza moje blogi przed wstawieniem zrobiła sobie ostatnio leniwy tydzień a akurat miałem wenę ;p

@ lukasamd
Niestety i dlatego kocham tę robotę ;)

  #8 28.03.2011 20:33

Swoją drogą to nie przeglądarka decyduje o tym jak strona wygląda tylko jej silnik: Gecko(Firefox),Trident(IE),Presto(Opera),Webkit(Safari,Chrome) i to cała śmietanka. Czyli inaczej Mozilla, Norwegowie, MS i Apple ( Google tylko żeruje na resztkach tego czym mogło by być Safari jakby apple się za niego wzięło )

Kintoki   6 #9 28.03.2011 20:45

@Sławekn to nie silnik decyduje o tym jak strona wygląda tylko jej autor(strony) ;D

  #10 28.03.2011 21:08

Gadanie, ale chodzi o to że nawet jak przeglądarki wspierają standardy i strona też jest wg, nich napisana, to pomiędzy silnikami są różnice, drobne ale są,

budda86   9 #11 29.03.2011 01:35

Ciekawy wpis i bardzo na czasie, ale niestety w wielu kwestiach nie masz racji.

"ktoś uznał, że jedyną słuszną przeglądarką jest Mozilla Firefox i przed wszystkie właściwości specyficzne dla CSS3 wstawił –moz- lejąc kompletnie na pozostałe"

"Wraz z pojawianiem się w nowszych wersjach FF’a i Chroma coraz to nowszych implementacji kolejnych właściwości kaskadowych arkuszy stylów coraz bardziej rozmijamy się ze standaryzacją."

Nie mogę się zgodzić z tym, co napisałeś. Wiesz z pewnością, że CSS3 standardem jeszcze nie jest. Zresztą tak samo, jak HTML5.

Wszyscy wiemy, że standardy to dobra rzecz; ale zanim coś stanie się standardem, musi być odpowiednio przetestowane. Dlatego W3C nie wrzuca nowych pomysłów do jednego worka ze starymi standardami. Nowa właściwość, taka jak "border-radius", pojawia się w dokumencie ze statusem "working draft". Oznacza to (w skrócie), że jest w fazie testowej, i może cały czas się zmieniać.

Dlaczego twórcy przeglądarek takie właściwości implementują z prefiksami?

Ponieważ to nie jest standard, i implementacje w różnych przeglądarkach (a właściwie silnikach) mogą się różnić. A dlaczego?
Ponieważ dokument oznaczony jako "working draft" cały czas się zmienia, i po wydaniu przeglądarki mogą się tam znaleźć zupełnie nowe elementy.

Przykład:
w styczniu implementuję "border-radius" w silniku i wydaję kolejną wersję przeglądarki z uaktualnionym silnikiem. W lutym W3C zmienia specyfikację tego stylu. W marcu wydaję uaktualnioną przeglądarkę. Ale wersja ze stycznia jest niezgodna ze standardami! I to samo może spotkać wersję z marca, i kilka następnych... Niezłe zamieszanie, prawda?

Tak więc obsługa standardów, które standardami nie są i stale się zmieniają, spowodowałaby dużo większy chaos. Lepiej jest więc nie obsługiwać czegoś, co jeszcze nie jest standardem, a do celów testowych udostępnić własną, testową implementację - z przedrostkiem.

To coś jak wersja beta - możesz jej używać, ale nie skarż się, że działa niestabilnie lub niezgodnie z oczekiwaniami.