05.10.2010

CSS супраць табліц: тое, што ты робіш – няправільна

Original on www.foohack.com

Спачатку вызначэнні.

Табліца

Зададзенае мноства радкоў і слупкоў з клеткамі, якія аўтаматычна і даволі бойка дазволяюць змяніць іх змесціва; клеткі могуць дзяліць яго на радкі і стаўбцы; табліцу ў цэлым можна разглядаць як адзін блок, у якім  клеткі могуць утрымоўваць табліцы. Табліца – метафара для пракладак 2-мернага змесціва.

CSS

каскадныя табліцы стыляў, а не плывучыя DIV-ы, не якая-небудзь пэўная разметка, а толькі канцэпцыя візуальнага адлюстравання разметкі, якая паказвае шэраг кірункаў, якія захоўваюцца асобна ад разметкі; яны працуюць, як правіла, у вонкавым злучанні файла ці стылі тэгі ў загалоўку дакумента.

Размаўляць адзін праз аднаго

CSS складае (па розных чынніках цытуецца ў іншых месцах) у большасці выпадкаў больш аптымальны тэхналагічны падыход. Гэта не азначае, што існае становішча мовы CSS з’яўляецца дасканалым. Сапраўды, нават самыя заўзятыя прыхільнікі CSS рэгулярна сцвярджаць, што існуюць сур’ёзныя праблемы з існай спецыфікацыяй і падтрымкай браўзара.

Табліцы (па розных чынніках, паказаныя у іншых месцах)- у большасці выпадкаў больш аптымальная метафара, чым любыя з іх канкурэнтаў. Сапраўды, нават самыя заўзятыя прыхільнікі табліц рэгулярна сцвярджаць, што гэта надбаўка будзе брыдкай.

У гэтым і складаецца сутнасць праблемы. CSS з’яўляецца вялікім тэхналагічным падыходам, а табліца – гэта вялікая метафара. Тады ўзнікае пытанне, якое звычайна ставіцца так: Ці трэба мне пазначаць утрыманне з дапамогай <div> тэгі ці<table> тэгі?, што ў рэчаіснасці азначае гэта аддзяленне стылю ад утрымання больш ці меней важнымі, чым пры выкарыстанні аптымальнай метафары? Абмеркаванне ідзе наступным чынам.

Табліцы

Падобная кампаноўка метафар лепш, так што вы павінны выкарыстоўваць гэтыя тэгі. Усё, што вы ідэалісты называеце нерэальным! (Акрамя таго, калі вы думаеце пра пытанні, якія тычацца разметкі, вы верыце ў фей. Гэта не так!)

CSS

Метафара! Вы не клапоціцеся пра недатыкальнасць дадзеных і якасць кода. Падумайце пра абслугоўванне! (Акрамя таго, калі вы не можаце зрабіць гэта з DIV-амі, вы можа зрабіць вельмі вялікую ппамылку. Бо гэта так проста!)

Правільны адказ, відаць, складаецца ў выкарыстанні табліцы метафар з тэхналогіяй CSS. У ідэальным свеце вы заўсёды пазначаеце утрыманне з дапамогай тэгаў, што б паведаміць сваю ідэю найболей выразна абранай групе карыстачоў. Тады вы скажаце карыстачам, як візуальна ставіцца да гэтых тэгаў. Для апісання гэтага дысплея, вы павінны ўмець карыстацца табліцай метафар, ці паплаўком метафар, ці абсалютным і адносным пазіцыянаваннем ці чым -небудзь яшчэ, але гэта не павінна быць зроблена шляхам разметкі.

Атрымліваючы рэальнасць!

У рэальным свеце гэта выглядае не так хораша. Спецыфікацыя CSS мае мноства значэнняў, прызначаных для імітацыі табліц тэгаў, але яны не вельмі добра падтрымліваюцца, ды і наогул, гэту недасканалую імітацыю легка ўзламаць, што насамрэч не прызначана для выкарыстання.

Іншымі словамі, CSS не з’яўляецца ідэальным прыкладам таго, што CSS ставіць сваёй задачай, а табліцы / TR / TD-тэгі не ідэальнай рэалізацыі табліцы / сеткі метафар. CSS табліцы працуюць усе горш і горш, хоць у некаторых выпадках яны вельмі карысныя.

Сучасныя CSS не ў кропцы, дзе можна рэальна разлічваць на якія-небудзь істотныя стылістычныя змены на вашай старонцы без разметкі. Калі вам трэба перамясціць панэль навігацыі справа налева, ці паўторна на старонку з dropshadows замест закругленымі кутамі, ці канверсаваць вашы градыенты ад 2 тон да 3 тон, ці зрабіць скрынкі ў вертыкальнай плоскасці, а не па верхнім краі, вам, верагодна, прыйдзецца змяніць разметку.

У тэорыі, гэта магчыма. Я ведаю, што некалькі маіх калегаў катэгарычна не згодны з гэтым і паказваюць шматлікія падыходы, якія дазволяць практычна любое распакаванне, выкарыстоўваючы толькі CSS змены. (Я выкарыстоўваў тэхніку Sommer CSS Лэслі Mаха, якая мела  вялікі поспех у мінулым, мы яе выкарыстоўвалі амаль для усяго, на Yahoo! Buzz.) Але дазвольце мне вам сказаць, за гады досведаў будаўніцтва вытворчых аб’ектаў з CSS, вялікую частку часу, яна насамрэч, проста не працуе.

А навошта гэта? Які вар’ят запісвае усё HTML уручную ў тэкставых файлах? Відавочна, у вас ёсць нейкія фонавыя рухавікі, якія выдаюць яго шаблоны, так што вы проста змяняеце шаблон і вуаля!, разметка змянілася на ўсім участку.

Вельмі блакітны ровар Shed

Працуючы ў кампаніі Yahoo, я сустрэў webdevs з сапраўды неверагоднай здольнасцю CSS, які ўзламваў жывыя коды пад рэальныя тэрміны ў адпаведнасці са строгімі стандартамі. Яны выкарыстоўваюць CSS, а не табліцы, пагэтаму яны атрымліваюць Shit "Гатова". Іх вельмі шмат, больш, чым я магу пералічыць тут, але

Найт Качлей, Мэтт Суіні, Хэджар Ван і Лэслі Самэр заслугоўваюць адмысловага згадвання. Я прыйшоў да Yahoo ведаючы, што CSS вельмі добрая, але я стаў экспертам галоўным чынам у выніку працы ў такой высокакваліфікаванай супольнасці распрацоўнікаў.

Акрамя таго, з-за майго часу ў Yahoo, я бачыў нейкія зусім вар’яцкія дэбаты з нагоды разметкі і стандартаў кадавання на франтальных спісах рассылання Devel. Мне здаецца, вы думаеце, што гэта проста маленькія выбліскі ў блогасферы? Тады вы не ўяўляеце сабе маштабаў гэтай працы. Сур’ёзна. І вось калегі, якія (па большай частцы) сапраўды любяць і паважаць адзін аднаго.

Вы жадаеце ведаць сакрэт? Няма ніякай розніцы.

Мова як мова. Калі кожны выкарыстоўвае <table> тэгі дляч разметкі, адгадайце, што адбудзецца: <table> зараз семантычна бессэнсоўны (ці прынамсі, семантычна расплывісты) пазнаку, і любому карыстачу, які мог б клапаціцца пра навігацыю таблічных дадзеных, даводзіцца мець справа з гэтым фактам. Гэта становіцца яшчэ адным <div> для ўсіх намераў і мэт, але трохі меней гнуткім, а змаўчанне стылю робіць яго больш зручным для разметкі.

Запал да дэкламацыі складаецца у тым, што яна не мае сэнсу! Вядома, гэта трывалая апора для гэтай канцэнцыі.

Дакладнасць: Гэта не мае значэння.

Выкарыстоўвайце тое, што тэгі працуюць для вас. Мне ўсё адно. Вы па-ранейшаму добрыя людзі.

Я магу вам сказаць са свайго персанальнага досведу, што глыбокія веды CSS маюць важнае значэнне для сур’ёзнага развіцця шрыфта. (Большасць так званых DHTML –насамрэч, проста маніпуляцыі з CSS Javascript і Javascript.) CSS можа рабіць некаторыя рэчы, якія табліца тэгаў не можа рабіць, таму вы павінны вучыцца. Дакладна і зваротна вы павінны ведаць, як таксама выкарыстоўваць табліцы.

Напішыце код, які можна захаваць, гэта значыць, што ен павінен быць досыць гнуткім, каб дазволіць вам змяніць яго без шкоды для стабільнасці вашага прадукта. Праверце яго сярод карыстачоў, ад якіх вы чакаеце падтрымкі. Спыніць абмяркоўванне выбару колеру для гэтага bikeshed.

Калі ёсць усе падставы, каб вярнуцца і змяніць табліцы DIV-ваў, ці наадварот, вы можаце гэта зрабіць. Каб іх чорт узяў, але вы павінны ведаць, выкарыстоўваеце вы CSS для вёрсткі ці не, але ж вы будзеце часам мець патрэбу ў працы з разметкай. Значна цяжэй стварыць прадукт, які людзі жадаюць мець, чым стварыць прадукт, які працуе ў браўзары X.

Comments are closed.