Правильный Html
Пожалуй, ничего не вызывает столько споров у веб-дизайнеров, как html-код. Спор, чей код более правильный, можно отнести к разряду таких извечных споров, как-то: что первично: разум или материя, что было раньше — курица или яйцо (aka размножаются ли куры путем откладывания яиц, либо это яйца размножаются путем вылупа куриц), кто бреет цирюльника (цирюльник бреет всех мужчин в городе, которые не бреются сами. Кто бреет цирюльника?), и так далее.Вообще, «нелегкая ему досталась доля». Я говорю про HTML. Это «нечто» начиналось, как язык разметки, то есть тэги несли смысловую нагрузку. Были такие замечательные тэги: EM и STRONG. Впрочем, почему «были»? Они и сейчас есть. Только никому не нужны. EM обозначал «выделение», а STRONG — «более сильное выделение». И написав к коде что-то типа: «вот это <strong>выделение</strong>», вы получали выделение. При этом КАК выделять — болдовым шрифтом, цветом, и.т.д. — решал браузер. Вы лишь обозначали СМЫСЛ — мол, это выделение.
Но, как обычно, победила тяга к красивостям. Вместо STRONG ввели B, вместо «просто выделения», «обязательное болдовое выделение». Вы не поверите, но даже таблицы в html’е были предназначены вовсе не для верстки! Да-да. Не для верстки, а для организации таблиц. Верней, для организации информации в таблицы. Верней, для организации информации, которая уже была организована в таблицу ;) То есть расписания, счета, и все то, что мы в нормальной, обычной, оффлайновой жизни называем «таблицей».
Поначалу HTML не имел инструментов для вертки ВООБЩЕ. Это уже потом таблицы стали использовать для верстки, появились чисто «украшательные» тэги, и пошло-поехало. В общем, вы и сами должны знать эту грустную историю... А потом вылез Microsoft со своим браузером, и стал придумывать для него тэги, потом Netscape тоже стал придумывать всякие красивости, потом IE-шники придумали страшную вещь и назвали ее DHTML :) И так далее...
В результате мы имеем кучу РЕКОМЕНДАЦИЙ, называемых гордо «спецификацией» и нескончаемые споры о том, как правильно писать HTML. Да, спецификации HTML’я в основном тянут только на рекомендации. Как, впрочем, и все остальное. К примеру, я не пишу кавычки в значениях атрибутах у тэгов. На что мне мой противник говорит, мол, смотри, че написано: «В определенных случаях авторы могут указывать значение атрибута без кавычек. Значение атрибута может включать только буквы (a-z и A-Z), цифры (0-9), знаки переноса (десятичный код ASCII 45) и точки (десятичный код ASCII 46). Рекомендуется всегда использовать кавычки.». Видишь? «Рекомендуется всегда использовать кавычки»!
«Хе-хе», — говорю я. А в этой же спецификации написано, что атрибут alt для тэга img ОБЯЗАТЕЛЕН! И даже не рекомендуется, а обязателен! А ты, собака такая, его не указываешь ;) Самое интересное, что я на этом уже накалывался. На alt’е. Чудо-браузер «Опера» при отключенной загрузке картинок «рвал» дизайн в том месте, где стояли распорки и маленькие картинки, выводя на их месте страшный прямоугольник с надписью «Image». Я сначала ругался. Потом понял, что сам виноват — не указал ОБЯЗАТЕЛЬНЫЙ атрибут alt. Когда я всем «мелким» картинкам прописал alt=’’, все стало на свои места. Вот как.
Вообще, «так написано в спецификации» — один из самых сильных и самых недоказуемых доводов в споре, как писать HTML. Во-первых, кто из вас помнит все, что написано в спецификации? Во-вторых — самое главное: не говорите, в какой именно версии спецификации это написано. И тогда вы будете правы — хоть в какой-нибудь версии, но будет написано по-вашему ;)
Например, вы знаете, что атрибут bgcolor уже является не рекомендованным? Да-да. Писать <table bgcolor=...> уже нехорошо. Так написано в спецификации. (HTML 4.0) Вместо этого следует использовать CSS.
Или, к примеру, многие ругаются, что тэги надо закрывать. Вовсе нет. Верней, не все надо. Например, тэг </td> не является обязательным. То есть вместо </td></tr></table> можно писать просто </table>. Да, разумеется, тэг </table> является обязательным. Да, вы будете смеяться, но даже тэг <font>теперь признан нежелательным ;) Цитирую: «Почти все атрибуты, определяющие представление документа HTML (цвета, выравнивание, шрифты, графика и т.д.) являются нежелательными, взамен рекомендуется использовать таблицы стилей.»
Самая забавная фраза в спецификации: «Некоторые люди считают пропуск уровней заголовков дурным тоном.» Мол, делайте, что хотите, некоторые считают, что это дурной тон, но мы ничего конкретного об этом не скажем ;)
В целом же, спор «как писать html» можно отнести к риторическим спорам. Если человек не нарушает спецификацию ЯВНО, то есть закрывает тэги table и a rel=nofollow href=http://spectator.ru/... — то он прав, что бы ни делал. Все дело в том, почему он пишет html именно так. Я, например, могу понять, почему люди пишут html «лесенкой», то есть:
<table>
<tr>
<td>
что-то внутри таблицы
</td>
</tr>
</table>
Эти люди программисты ;) И им так проще. Нет, я не хотел сказать ничего плохого ;) Так действительно проще. Однако, когда я представлю, что буду качать эти пробелы в коде на скорости 50b/s, мне сразу становится плохо. А если мой любимый редактор не делает код «лесенкой» автоматически. Мне что, пробелы от руки впечатывать? ;)
То же самое и с ковычками. Мне их проще не писать — движений меньше, да и код становится легче. Зачем они вообще нужны — мне не понять...