Dlaczego 3/4 projektów nie działa jak należy... albo startuje zbyt późno.
Tuesday, September 9, 2008 3:38:40 PM
Wykop ten artykuł, jeśli uważasz, że warto.
Pracuję ostatnio nad pewnymi projektami, o których mogę powiedzieć tylko tyle, że nad nimi pracuję. Niemniej owa tajemnicza tajemniczość w postaci umowy NDA sprawia, że paradoksalnie mogę napisać więcej niż bym mógł, gdybym takiej umowy nie miał.
Tak więc - są to, z reguły, bardzo duże projekty, których ambicją jest (lub będzie) naciągnąć małolatów na kilka smsów miesięcznie a co za tym idzie, coś na tym zarobić. Problem jest taki, że to chyba nie wyjdzie... Dlaczego? Powody są dwa:
- złe podejście do samego procesu projektowania
- graficy rysujący layouty
Jeśli chodzi o pierwsze, to właściwie głównym błędem jest robić, zupełnie bezsensowne założenie, że strona ma wyglądać indentycznie (z naciskiem na "identycznie") w każdej przeglądarce - od IE6 (a nawet 5.x) poprzez wszystkie wersje Firefoska czy Opery. Jest to kompletnie bzdurna decyzja projektowa, która kosztuje wiele nerwów, czasu i pieniędzy, które wyrzucamy w błoto. Graficy zaś doskonale to rozumieją więc co robią? Tworzą proste layouty zawierające zwykły komunikat czy formularz kontaktowy, składające się z kilku zagnieżdżonych, różnokolorowych boksów, z zaokrąglonymi rogami, cieniami i przezroczystością... i robią później kwaśną minę, że my koderzy psujemy ich wizję. Wizję, którą końcowy użytkownik ma jeszcze bardziej w dupie niż my.
Jako, że artykuł ma być dla wszystkich, nie będzie dużo kodowania, objecuję. Podam tylko jeden prosty przykład ilustrujący to, o czym chcę napisać.
Więc tak - przeglądarki mają ograniczenia, jasna sprawa. Mają też pewne zalety, które można wykorzystać. I na przykład - aby zrobić zwykłe pudełko z zaokrąglonymi rogami musimy użyć kilku zagnieżdżonych DIVów, każdemu przypisać klasy i odpowiednie reguły CSS aplikujące odpowiednie obrazki, które to, z kolei, symulują zaokrąglenia. Wygląda to tak:
<div class="box">
<div class="wrapperTop">
{treść}
</div>
<div class="wrapperBottom"></div>
</div>
.box, .box div {
background-repeat: no-repeat;
background-position: 0 0;
position: relative;
}
.wrapperTop {
_height: 100%;
padding: 0 10px;
}
.wrapperBottom {
position: absolute;
width: 100%;
height: 10px;
left: 0;
}
Nie musisz tego rozumieć. Wystarczy byś miał świadomość, ile trzeba aby rozwiązać rzeczony problem. Teraz serwując dwa lub trzy obrazki jako tło jesteśmy w stanie zrobić pudełko o dynamicznej wysokości, z zaokrąglonymi rogami, działające wszędzie i bez problemu. Problem pojawia się gdy takich boksów mamy kilka(naście) - o różnych kolorach (bądź teksturze) czy różnym stopniu zaokrąglenia. W ekstremalnym przypadku (nad którym właśnie pracuję), przez takie właśnie rzeczy pierwsza lepsza podstrona serwisu ładuje kilkadziesiąt obrazków PNG (~800kb), które IE6, dla zachowania przeźroczystości, przepuszcza przez własny filtr (na którym, powyżej 200 obrazków potrafi się powiesić) a całość odświeża 10-12 sekund... przy czym strona jest ładowana z dysku. Dodatkowo, od strony kodu głupi, zwykły boks z komunikatem dla użytkownika wgląda jak niejedna nieźle skomplikowana witryna (!). Serio. Można inaczej? Można:
<div class="box"> {treść} </div>
...a w CSS takie oto dwie, proste reguły:
div.box {-webkit-border-radius: 6px; -moz-border-radius: 6px;}
... i wszystko - bez obrazków, bez zbędnego kodu mamy pudełko o dowolnym kolorze i rozmiarze, z zawsze ładnie zaokrąglonymi rogami, których krągłość możemy sobie dodatkowo korygować zmieniając jedną jedyną wartość w CSS. Gdzie jest haczyk? Ano właśnie. Ładne, zaokrąglone różki będą widoczne jedynie w Firefoskie i Safari/Chrome/Konquerorze. Nie będą zaś w IE i Operze... dopóki owe technologie nie zostaną w nich zaaplikowane. Pytanie tylko - ale właściwie, w czym to przeszkadza? Jaki to problem, skoro i tak 90% użytkowników nawet tego nie zauważy? Dowód? Wymień raz-dwa cztery podstawowe kolory onetu. Informacje prezentowane są tam w białych czy szarych boksach? Boksy mają ramki czy nie? Mają zaokrąglone rogi? Sprawdź teraz i zobacz ile błędów popełniłeś... a przecież to drugi co do popularności serwis w polskim Internecie! Prawda jest taka, że nikt oprócz osoby, która projektuje layout, takich rzeczy nie zauważa a jeśli już zauważy i doceni to ich brak w innej przeglądarce nie wpłynie zasadniczo na czytelność i dostępność całości za to bardzo pozytywnie odbije się na objętości czy przejrzystości projektu pod wględem przyszłych modyfikacji i zaoszczędzi sporo czasu użytkownikowi, którego bardziej interesują krągłości jego żony niźli pudełka w którym otrzymał komunikat o zalogowaniu.
Podobnie ma się sprawa z innymi elementami dostępnymi tylko dla wybranych przeglądarek. Jeśli trzeba dać text-shadow dla zwiększenia czytelności, to daj. Tam, gdzie nie można, ustaw kolory tak, by ten nie był potrzebny a nie bezmyślnie robisz menu obrazkowe. Po co? Pamiętaj, że priorytetm jest szybkość, wygoda użytkownika i dostępność treści (w tej kolejności) a jeśli do tego strona jest przyjemna dla oka, to jest to dodatkowy atut i gratulacje dla Ciebie, że udało ci się to wszystko zgrabnie poskładać. Identyczność, tak często wymagana, w 99% jest niepotrzebna a za to cholernie pracochłonna ...a czasem i tak niemożliwa do wykonania. Tak więc drogi grafiku, jeśli następnym razem usiądziesz do nowego web-dzieła weź pod uwagę to, co właśnie przeczytałeś. Zaoszczędzisz w ten sposób wiele kurw rzuconych przez kodera pod Twoim adresem, czego Tobie i sobie życzę. Do następnego
Wykop ten artykuł, jeśli uważasz, że warto.







Borys # Tuesday, September 9, 2008 10:42:35 PM
Czy to Twoja prywatna reguła, czy może jakieś ogólne przykazanie dla projektantów stron? Bo jeśli o mnie chodzi, to wolę, żeby strona ładowała się trochę wolniej, ale żeby treść była łatwo dostępna, aniżeli żeby ładowała się błyskawicznie, ale żebym później nie wiedział, gdzie czego szukać
Piotrarti040 # Wednesday, September 10, 2008 9:53:29 AM
Hmm, nie rozumiem? ;-) Predkosc ladowania nie ma przeciez wyplywu na czytelnosc (?). Jak ladujesz sobie pdf'a z dysku i dzieje sie to w sekunde, to jest on mniej czytelny niz taki, zaladowany z zewnetrznego sewera, ktory sciagal sie, dajmy na to, 10 sekund?
Teza jest moja, choc z grubsza, kazdy co bardziej doswiadczony projektant sie z nia zgadza.
Borys # Wednesday, September 10, 2008 9:58:53 AM
Piotrarti040 # Wednesday, September 10, 2008 10:11:33 AM
Borys # Wednesday, September 10, 2008 5:27:29 PM
Piotrarti040 # Wednesday, September 10, 2008 5:33:55 PM
A najwiekszy procent "opuszczen" to wlasnie te, z powodu dlugiego badz wadliwego ladowania strony (dalej muzyka na stronie i flashowe reklamy).
Wasacz # Thursday, September 11, 2008 2:44:01 PM
Z zaokrąglonymi narożnikami jest albo tak, że mają kluczowe znaczenie dla wyglądu witryny, albo są drobnym dodatkiem w jakimś nierzucającym się w oczy miejscu. W pierwszym przypadku i tak trzeba doklepać tych kilka elementów, aby działało wszędzie, w drugim – wystarczy chwilka żeby „zaokrąglić” jeden czy dwa pojemniki tak, aby działały też na IE/Operze, więc właściwie: czemu nie?
Poza tym, nie chodzi o to, by użytkownik zapamiętywał każdy piksel layoutu, bo to już w ogóle jakaś śmieszna koncepcja. To nie ma nic do rzeczy. Podejście typu „wrzućmy wszystko pod dywan, i tak nikt nie zauważy” jest amatorskie…
Analogicznie w przypadku cienia. Chociaż tutaj przeglądarki mają odwrotnie, bo wspiera go Opera, a Firefox (na razie) nie. WebKit to trochę inna bajka, bo ma małą częśc rynku i wspiera najwięcej z CSS3. Wracając jednak do cienia — jeśli logo witryny będzie zwykłym tekstem z dodanym efektem cienia, i tak będzie trzeba wykorzystać obrazek. text-shadow to ciągle taki „bajer”, którego brak nie robi aż takiej różnicy jak kanciaste pojemniki, a na silniku, który to wspiera wygląda to fajnie. Nie wyobrażam też sobie, żeby zamieniać każdy nagłówek w tekście na obrazek. Ale to dwa różne zastosowania text-shadow, a ty potraktowałeś cały temat ogólnikowo. Aha, i pisząc o cieniu nie miałem na myśli metody z duplikowaniem tekstu, bo mimo że działa wszędzie, to jest *be* i pewnie wiesz, dlaczego.
Inna sprawa, że grafik powinien znać ograniczenia HTML/CSS, a koder – mimo wszystko – powinien sobie w takich „trudnych” sytuacjach radzić, ale na pewno nie ograniczając w jakiś sposób inne przeglądarki. Ewentualnie IE6, jeśli jest już bardzo ciężko i nie ma czasu.
Priotytetem jest, była i będzie dostępność. Czas ładowania i inne dolegliwości związane z wczytywaniem strony są neutralizowane właśnie przez dostępną stronę – nie na odwrót, jak piszesz.
I wreszcie – identyczność jest potrzebna, bo na tym właśnie polega ta praca
Piotrarti040 # Thursday, September 11, 2008 3:10:25 PM
> Przykład z border-radius to idealny przykład złego przykładu.
> Przede wszystkim, dowiedz się, dlaczego tego jeszcze nie ma w Operze.
> Polecanie komuś korzystania z rozszerzeń przeglądarek (-moz-*, -webkit-* itd.) to kiepski pomysł.
Wiem, dlaczego nie ma ale to nie powod, zeby nie korzystac z tego, co juz jest. Poprawka paru linijek w CSS w chwili gdy samo border-radius zostanie ustandaryzowane bedzie mniej klopotliwe i mniej czasochlonne nizli przeprojektowywanie *wszystkich* szablonow i masowe wyrzucanie setek PNGow oraz zbednych DIVow, nie?
> Inna sprawa, że w Operze także można osiągnąć zaokrąglone narożniki
> bez dodatkowego markupu, a to za sprawą SVG.
Fakt, mozna.
> wystarczy chwilka żeby „zaokrąglić” jeden czy dwa pojemniki tak,
> aby działały też na IE/Operze, więc właściwie: czemu nie?
1-2 owszem ale ja mam w tej chwili na tapecie (strzelam) ok. 15 roznych pojemnikow o zmiennej fakturze/kolorze (do tego dochodzi kolor tla, ktory rowniez jest zmienny), rozmiarze czy wielkosci zaokraglenia. To juz jest jakis problem, o czym pisalem w szostym akapicie.
> To nie ma nic do rzeczy. Podejście typu „wrzućmy wszystko pod dywan,
> i tak nikt nie zauważy” jest amatorskie…
To nie tak. Raczej - wykorzystajmy to, co jest a tam, gdzie nie ma, zastosujmy *rozsadny* substytut.
> Ale to dwa różne zastosowania text-shadow, a ty potraktowałeś cały temat ogólnikowo.
Troche tak. Chodzilo mi glownie o menu nawigacyjne.
> Inna sprawa, że grafik powinien znać ograniczenia HTML/CSS
Problem w tym, ze malo ktory zna...
> a koder – mimo wszystko – powinien sobie w takich „trudnych”
> sytuacjach radzić, ale na pewno nie ograniczając w jakiś sposób inne przeglądarki.
Owszem i radze sobie... tworzac dziesiatki niepotrzebnych DIVow i przepuszczajac ciezkie, 24-bitowe PNGi prze IEFilter tylko po to by zachowac identycznosc, ktora, jak dalej bede sie upieral - nie jest do niczego potrzebna i sprawia wiele problemow.
> Ewentualnie IE6, jeśli jest już bardzo ciężko i nie ma czasu.
Z reguly jest ciezko i nie ma na nic czasu ;-)
> Priotytetem jest, była i będzie dostępność. Czas ładowania i inne dolegliwości
> związane z wczytywaniem strony są neutralizowane właśnie przez dostępną stron
Chocby strona byla nie wiem jak dostepna i wygodna w obsludze, nikt nie bedzie z niej korzystal, jesli odswiezenie dowolnego jej fragmentu bedzie trwalo > 10 sekund.
> I wreszcie – identyczność jest potrzebna, bo na tym właśnie polega ta praca.
Nie, nie i jeszcze raz nie. Identycznosc wcale nie jest potrzebna. Oczywscie glowny zamysl czy kolorystyka powinny byc zachowane, jednak takie rzeczy jak brak cieni, zaokraglonych rogow czy stu innych elementow, o ktorych nie ma sensu teraz pisac a ktore nie maja wplywu na czytelnosc/dostepnosc, moga zostac pominiete lub zastapione w taki sposob, na jaki pozwala dana przegladarka. Takie jest moje zdanie.
Artur „Jurgi” JurgawkaJurgi # Thursday, September 11, 2008 7:16:00 PM
Wasacz # Friday, September 12, 2008 1:05:23 PM
Piotrarti040 # Friday, September 12, 2008 5:49:30 PM
Tez sie dziwilem, ze zes nic nie odpowiedzial :/
Wasacz # Friday, September 12, 2008 5:58:12 PM
.qki # Saturday, September 13, 2008 12:38:53 PM
Mateusz Kaminskimatipl # Tuesday, September 16, 2008 6:28:09 PM
Serwis zrobiony, kasa wzięta...A niech on już się męczy, że mimo kampanii ma 5% powracających użytkowników