
© Copyright 2004 Andy Budd, аll rights reserved
Превод: Боби Димитров | Последна промяна: 18.05.2004
През последните години се появиха множество страхотни статии, възхваляващи CSS-базирания дизайн и оплюващи дизайна, базиран на таблици. Има много малко статии, обаче, които разглеждат въпроса от обратната му страна. Това вероятно се дължи на фактът, че за да критикуваш CSS, трябва да го разбираш наистина добре. И все пак, веднъж щом усвоят новите методи, малко хора (ако въобще има такива) се връщат към таблиците и старите похвати.
За да внеса баланс в ситуацията, а и за да се позабавлявам като "защитник на злото", реших да обясня в една статия защо, в някои конкретни случаи, традиционният табличен дизайн може да бъде също толкова добър колкото (ако не и по-добър от) CSS-базираните стандартно-съвместими решения.
Преди да се появят таблиците, интернет страниците бяха доста скучни. Употребата на таблици за изграждане на лейаута откри реалната възможност за "дизайн" на уеб страницата. Може дори да се каже, че точно таблиците и табличният лейаут са отговорни за популярността на мрежата и професията "уеб дизайн". Точно така, без таблици вероятно всички ние - уеб дизайнерите - сега щяхме да сме без работа.
И въпреки това, през последните няколко години табличният лейаут бива "демонизиран". Уеб пуристите обясняват, че таблиците изобщо не са измислени за лейаут, тъй че е грешно да бъдат използвани за тази цел. Историята, обаче, познава много примери за технологии, заченати с една идея, а в последствие приложени по по-практичен начин в съвсем различна сфера. Самият интернет е бил замислен като среда за обмяна на данни от изследвания, а в момента е канал за забавления, маркетинг, информация, образование...
В ролята си на уеб дизайнери, ние сме изграждали страници с помощта на таблици години наред. Това е умение, което повечето уеб дизайнери притежават и повечето се чувстват уверени в него. Употребата на таблици по определени начини води до много предсказуеми резултати. С помощта на няколко много прости хака, като spacer.gif-овете, можем доста уверено да гарантираме, че сайтовете ни ще изглеждат еднакви на широк диапазон от браузъри - от най-старите Netscape 4 версии, чак до модерни браузъри като Safari, например. А това значи сигурност.
Въпреки фактът, че уеб пионерите говорят за уеб стандарти от доста време, повечето от уеб сайтовете все още използват таблици и не-стандартно-съвместим код. (бел. пр.: Авторът умишлено "пропуска" да каже, че в днешни дни повечето редизайни се възползват от уеб стандартите. Факт е, обаче, че мнозинството сайтове няма да бъдат преправени още редица години.) Поради тази причина, браузърите ще бъдат принудени да визуализират табличните лейаути още дълги години. Това автоматично отхвърля една от най-популярните точки в рекламата на уеб стандартите - предварителната съвместимост (forward compatibility). Много малко вероятно е в близкото бъдеще някои от големите производители на браузъри (ъм, това явно е Microsoft) да пусне браузър, който да визуализира повечето сайтове по неизползваем начин.
Ето защо повечето уеб дизайнери не чувстват непреодолимата нужда да започнат да разработват сайтовете си с CSS лейаути и според уеб стандартите.
Една от причините интернет да бъде толкова успешен е неговата достъпност. HTML е не е сложен "език" за научаване, а и браузърите са много толерантни по отношение на неправилно форматираните документи. Това е невероятно улеснение за всеки, желаещ да публикува в мрежата. Дори вашият 12 годишен племенник може да спретне просто сайтче с FrontPage, който идва в комплект с Microsoft Office.
Нека сравним табличния и CSS-базирания дизайн. Да, синтаксисът на CSS е доста лесен. Никой разумен човек не би твърдял, че трябва ви висше, за да научите CSS. И все пак, има редица концепции, които са трудни за усвояване. От една страна "box model"-ът е прост, но мен лично от време на време продължава да ме бърка "margin collapsing"-а. "Float" и "clear", както и позиционирането с CSS са си пословично трудни за усвояване. Моят опит говори, че са нужни поне 6-12 месеца за научаване на CSS от елементарно ниво до ниво, което ще ви позволи да изграждате цели сайтове с CSS.
После идва и проблемът с поддръжката на различните браузъри. След като поработите известно време ще научите кой браузър какво поддържа, както и какви са често срещаните бъгове. Обаче бъговете са толкова много, че дори експертите отделят ненормално много време за отстраняването им. За един начинаещ, това е крайно изнервящо - да не знае дали някой бъг е породен от човешка грешка или е проблем в браузъра. Чудно ли е, че едни и същи въпроси се задават отново и отново по форуми и мейл листове като CSS-Discuss?!
Когато производителите на браузъри почнат най-накрая да координират усилията си, разработката на сайтове с CSS ще стане значително по-лесна. И все пак, мисля, че повечето хора ще се съгласят с мен - в момента летвата на CSS разработката е доста висока, в сравнение с табличния дизайн. Според мен има една много странна причина CSS да стане толкова популярен сред специалистите. CSS им позволява да се разграничат от аматьорите, използващи FrontPage, и да си върнат мрежата обратно. Вероятно това обяснява защо много хора гледат на уеб стандартите като на начин да избягат от реалността; много от поддръжниците на тези стандарти притежават едно чувство на превъзходство над останалите и фанатично отношение към уеб дизайна.
Сигурен съм, че всички сте се оказвали в положение да пишете оплетен CSS за нещо, което би било тривиално за направа с таблици. Да вземем за пример дизайна на HTML форми. Само за няколко минути можете да направите много сложен лейаут на оплетена форма с помощта на таблици. Можете да постигнете подобни резултати и с CSS, като float-нете редица елементи, но това не е толкова просто, колкото изглежда. Ако сте CSS гуру, за вас ще е просто забавно упражнение. Но ако сте обикновен смъртен и шефът ви диша във врата, защото не разбира как така тази "проста форма" отнема толкова време за изработка, това може да е доста неприятно.
Ако имате познанието и търпението, можете да направите с CSS почти всичко, което сте правили с преди таблици. Да, може да отнеме повече време, но в крайна сметка ще се справите (или ще умрете опитвайки се). Ще има редица неща, обаче, които, колкото и да ги мъчите, ще изглеждат нерешими. Едно такова нещо са футърите (footers). Често срещам въпроси от разгневени CSS ползватели, които се опитват да направят футър (footer) на страницата, който да седи най-долу в прозореца, без значение дали има много или малко съдържание. Този ефект е доста лесно постижим с таблици, но я се опитайте да го постигнете с чист CSS. Чудно ли е, че уеб разработчиците обръщат гръб на CSS, при условие, че такива прости неща стават толкова сложни, когато спреш да използваш таблици?!
Има много добри причини да зарежем таблиците и да приемем CSS като основно средство за изграждане на лейаута. Проблемът е, че в желанието си да ускорят приемането на уеб стандартите, много хора преувеличават ползите. Вярно е, че преминаването към CSS за големи сайтове означава спестени пари от таксите за трафик. Само че по-голямата част от сайтовете тези спестявания ще са незначителни (ако въобще ги има).
Хората искат страниците да се зареждат бързо и много поддръжници на CSS твърдят, че CSS намалява времената на зареждане. В традиционните сайтове, "дизайнът" (презентационните данни) е разпределен из целия сайт. При CSS-базираните сайтове, обаче, "дизайнът" се съдържа в един или няколко външни файла, които са общи за целия сайт. Тези файлове могат да бъдат доста сложни и дори при малките сайтове имат тенденцията да нарастват бързо. Наскоро правих дизайн за сайт, който използваше 4 външни CSS файла с обем около 12K (с форматирането и коментарите). Като използвате CSS, вие всъщност зареждате първо дизайна за целия сайт, вместо да го разпределяте сайта. Това означава, че първата страница, която отворите от даден сайт ще се зареди по-бавно от табличния еквивалент. След като се заредят веднъж, CSS файловете се кешират и няма нужда да бъдат сваляни отново. Но точно първата страница от сайта е тази, на която най-малко бихте искали излишно забавяне. (бел. пр.: Авторът има право, но само в един тесен диапазон от случаи - наличие на много и големи CSS файлове, наличие на малко таблици и презентационни елементи в лейаута на страницата, почти никакви изображения.)
Тъжната истина е, че повечето клиенти не се интересуват как е изработен сайтът. Въпреки това, по някаква причина, уеб дизайнерите изпитват нуждата да "продават" уеб стандарти на техните клиенти. Един от начините за постигане на това е методът на моркова и пръчката. Морковът обикновено е по-доброто класиране в резултатите на търсачките, а пръчката - достъпността. (бел. пр.: Авторът визира достъпността като принудителна мярка за изработка на съвместим със стандартите, тъй като в цивилизованите държави има отделен закон, който се занимава с тази материя.)
Вярно е, че търсачките харесват семантичния код. Също така е общоприето, че търсачките харесват чистия код. Изграждането на сайт, съвместим с уеб стандартите, може да му донесе по-добър рейтинг в търсачките, но за това няма рецепта. Има много сайтове, базирани на таблици, които има много високи рейтинги в търсачките. Също толкова възможно е да направите един CSS сайт и да получите ужасен рейтинг. Най-важният фактор за висок рейтинг е съдържанието и входящите линкове (линковете към вашия сайт от други сайтове), а не технологията на изработка - CSS или таблици.
Още по-притеснителен е броят на хората, които се опитват да продават уеб стандарти и по-конкретно CSS-базиран дизайн като плашат клиентите с достъпност. Табличният дизайн не е вродено недостъпен. (бел. пр.: Хората и грешните похвати ги правят такива.) Стига таблицата да запазва смисъла си, когато бъде разгледана по редове, съдържанието й е лесно достъпно. В наши дни екранните четци са доста добри и повечето от тях се справят с табличните сайтове. Вярно е, че е нужно сайтът ви да отговаря на определени изисквания, за да получи рейтинг на достъпност "AA", но дизайнът без таблици не е изискване, а просто препоръка за по-стриктния рейтинг "ААА".
Друга често изтъквана полза е приемствеността на кода. На теория, в свят, в който всеки спазва някакъв стандарт на разработване, би било много по-лесно да подменяте разработчиците по даден проект. Те моментално биха разбирали как е сглобен сайта и нямаше да им се налага да се ровят из чуждата бъркотия от тагове. За съжаление, в момента положението не е такова. Макар и броят на опитните CSS разработчици да се покачва, това си остава едно поле на специалисти. При този недостиг на опитни разработчици е доста рисковано за някоя фирма да разчита на тази приемственост. В практиката ми много често срещам фирми, които имат един-единствен специалист с достатъчно опит за разработка пълна разработка на сайтове с CSS. Така че за много фирми преходът към уеб стандарти е свързан по-скоро с увеличаване на зависимостта от разработчиците, отколкото с намаляването й.
Уеб стандартите и CSS-базираният дизайн определено са правилният път напред. Проблемът е, че в желанието си да изтъкнем тези нови техники може да се окажем в положение да вярваме на собствените си хиперболи. Винаги, когато превъзнасяме нещо, в реалността нещата се оказват по-различни. Ако имаме такъв догматичен подход, много вероятно е да отблъснем точно хората, които се опитаме да убедим.
Табличният дизайн ще съществува още доста време. За да окуражим повече разработчици да преминат към уеб стандартите, нужно е самите ние да послужим за пример, да ги насочваме и да се опитаме да смъкнем летвата, а не да я вдигаме. Трябва да бъдем откровени както за ползите, така и за цената на прехода. Разработката на сайтове с CSS понякога може да бъде трудна и времеемка. В определени ситуации, употребата на таблици за лейаут е по-логичното решение.