Projektowanie i inne takie...

by Piotr

Dlaczego 3/4 projektów nie działa jak należy... albo startuje zbyt późno.

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 zip Wykop ten artykuł, jeśli uważasz, że warto.

I po warsztatach.Ten Pan strzelił sobie w stopę...

Comments

Borys Tuesday, September 9, 2008 10:42:35 PM

Po co? Pamiętaj, że priorytetm jest szybkość, wygoda użytkownika i dostępność treści (w tej kolejności)


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

@Borys
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

Napisałeś, że "priorytetem jest szybkość, wygoda użytkownika i dostępność treści (w tej kolejności)". Innymi słowy, gdy trzeba (z jakiegoś powodu) zrezygnować albo z maksymalnej szybkości, albo z maksymalnej dostępności treści, to rezygnuje się z tej drugiej na rzecz tej pierwszej, tak? A ja bym to raczej (z punktu widzenia użytkownika) widział odwrotnie.

Piotrarti040 Wednesday, September 10, 2008 10:11:33 AM

Dalej nie rozumiem czemu mam rezygnowac z szybkosci ladowania? Nie ma ona zadnego wyplywu ani na czytelnosc ani na dostepnosc a jedynie jej brak jest irutyjacy (wiekszosc ludzi szukajac informacji w sieci nie czeka nawet 8 sekund jesli strona laduje sie wolno).

Borys Wednesday, September 10, 2008 5:27:29 PM

LOL, nie rozumiemy się. smile To inaczej: Dlaczego szybkość jest ważniejsza niż wygoda użytkownika i dostępność treści?

Piotrarti040 Wednesday, September 10, 2008 5:33:55 PM

Bo zanim uzytkownik cos przeczyta, strona musi sie zaladowac? wink
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

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ł. Inna sprawa, że w Operze także można osiągnąć zaokrąglone narożniki bez dodatkowego markupu, a to za sprawą SVG.

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 wink

Piotrarti040 Thursday, September 11, 2008 3:10:25 PM

@Wasacz
> 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

Niektórzy rozwiązują problem identyczności, robiąc strony we Flashu… które potem i tak nie chcą działać np. na za słabym sprzęcie. scared

Wasacz Friday, September 12, 2008 1:05:23 PM

Gdzie się podział mój drugi komentarz? Jestem pewny, że go dodałem ;<

Piotrarti040 Friday, September 12, 2008 5:49:30 PM

@Wasacz
Tez sie dziwilem, ze zes nic nie odpowiedzial :/

Wasacz Friday, September 12, 2008 5:58:12 PM

Życie banana

.qki Saturday, September 13, 2008 12:38:53 PM

jako user dorzuce swoje 3 grosze. usability swoja droga, ale predkosc wczytywania contentu jest priorytetem. wiadomo ze inaczej bedzie ze strona firmowa warzywniaka pani haliny, ale inaczej z rozbudowanym portalem (vide np orange.pl ktorego predkosc dzialania wola o pomste do nieba z miliardem dupereli ).


Mateusz Kaminskimatipl Tuesday, September 16, 2008 6:28:09 PM

Cóż: klient nasz pan sad
Serwis zrobiony, kasa wzięta...A niech on już się męczy, że mimo kampanii ma 5% powracających użytkowników

Write a comment

New comments have been disabled for this post.