Ознакомьтесь с нашей политикой обработки персональных данных
11:40 

Оптимизация верстки

alhames
alhames.ru
Меня вот лично волнует весьма спорный вопрос касательно использования тех или иных атрибутов, которые являлись чуть ли не обязательными в xhml и стали ничего не значащими в html5.
Начнем по порядку:

1. Doctype: использование <!DOCTYPE html> является вполне валидным, но с каким типом ассоциируют его старые браузеры, которые ничего не знали о html5?

2. Классический шаблон тега html ранее у меня представлял вид <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru">. Сейчас я стал использовать нечто вроде: <html lang="ru" xmlns:og="http://ogp.me/ns#"> - namespace для xhtml больше не требуется, а объявление языка свелось к указанию в атрибуте lang. Но на самом деле приоритетной настройкой является язык, возвращаемый в заголовках ответа сервера, а т.к. почти всегда он уже возвращает ru (что впринципе можно проконтролировать), то есть ли вообще смысл использовать этот атрибут?
Ну а namespace для OpenGraph - это обязательная приблуда для валидной оптимизации под соц. сети.

3. Не парные теги - в xhtml их нужно было закрывать ( например, <img /> ) и я по привычки всегда их закрываю. Но так ли это нужно теперь?

4. Устаревшее объявление кодировки - <meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> - теперь сведено к минимуму: <meta charset="UTF-8" />.
Это объясняется тем, что для 100% понимания кодировки страницы браузером верстальщики ВСЕГДА использовали указание кодировки - и потому этот тег решили сократить. Что же касается mime-type, то на своей практики я не помню ни одного случая, чтобы требовалось указать что-то отличное от text/html.
Опять жешь, приоритетными параметрами являются параметры сервера, и я взял себе в привычку всегда вручную отправлять нужный mime-type в заданной кодировке.
Собственно вопрос: а чтоже будет со старыми браузерами? Они ведь не поймут это сокращение. Да и нужно ли оно вообще, если в заголовках итак все есть?

5. Указание mime-type в link и sсript: <link rel="stylesheet" type="text/css" href="style.css" /> или <sсript type="text/javasсript" src="jquery-1.7.1.min.js"></sсriрt> - насколько важен атрибут type?
В рекомендациях встретил что он устарел и его лучше опускать, но в более старых рекомендациях его рекомендовали использовать всегда, дабы браузер не запутался с тем что именно он выполняет.
Кроме того некоторые расширения - например, шаблонизатор на JQuery, используют специфические mime-type: <sсript id="movieTemplate" type="text/x-jquery-tmpl">

Вот как-то так)

@темы: HTML, Оптимизация

Комментарии
2012-08-11 в 23:06 

Indra
...Ветер шелестит листвой...
меня лично волнует вопрос, а зачем оглядываться на какие-то «старые браузеры»? это какие вообще? какой смысл думать о заголовках и закрывающих тегах, если ни один функциональный современный сайт ни в каких «старых браузерах» работать все равно нормально не будет и без этого. так какой смысл оглядываться? о ком это забота вообще?

2012-08-11 в 23:13 

alhames
alhames.ru
Если поддержка старых браузеров заключается только лишь в явном определении дополнительных атрибутов и общей валидности кода - то зачем от нее отказываться?
Старые браузеры - это Opera 9, FF 3.6, IE 7..
Верстать отдельно под IE6 никто ведь и не собирается, просто лишь хочу уточнить нюансы, чтобы потом не жалеть о сделанном выборе.

2012-08-11 в 23:23 

1. hsivonen.iki.fi/doctype/#handling В Quirks Mode выпадает только Netscape 6, так что можно считать, то HTML5 изначально подстроен под браузеры, куда интереснее как себя они будут вести с новыми тегами, по старым спецификациям они должны действовать так, как будто этих тегов нет, только одни будут вырезать теги полностью (с содержимым), другие отразят содержимое, это экспериментировать нужно наверное...

2. А для чего ты его использовал? Это вообще вроде для браузеров придумано, по идее должно руководить национальными особенностями отображения текста, на память - кавычки в разных нацстандартах разные, больше ничего в голову не приходит

3. Не обязательно, но я также закрываю, HTML5 подразумевает совместимость с XHTML 1.1, а также и обратно, любой валидный HTML 4.01 и XHTML 1.1 будет корректно обрабатываться следующим стандарту HTML5 обработчиком, так что HTML5 это стандарт обработки всего что напридумывали до сегодняшнего дня, а не свод жёстких правил как нужно писать код, он даёт все возможные варианты для инструментария верстальщика. В черновике примеры самые разнообразные, атрибуты там можно использовать как угодно.

Для тегов в черновике на этот случай написано:

Then, if the element is one of the void elements, or if the element is a foreign element, then there (прим. перед закрывающим тег символом >) may be a single U+002F SOLIDUS character (/). This character has no effect on void elements, but on foreign elements it marks the start tag as self-closing.

Void elements: area, base, br, col, command, embed, hr, img, input, keygen, link, meta, param, source, track, wbr

4. Старые браузеры прочитают Content-Type заголовок от сервера, как всегда это и делали УПД: с момента принятия стандарта HTTP/1.0, это произошло в 1996 году... так что будем считать что то, что было до 1996 года браузерами не было))

5. В html5 опционально, по умолчанию в браузерах должен включаться JS обработчик, в черновике HTML5 написано: The type attribute gives the language of the sсript or format of the data. If the attribute is present, its value must be a valid MIME type. The charset parameter must not be specified. The default, which is used if the attribute is absent, is "text/javasсript".
Но тут явное противоречие, потому что MIME тип text/javasсript считается устаревшим с 2006 года, вместо него должен использоваться application/javasсript www.rfc-editor.org/rfc/rfc4329.txt

2012-08-11 в 23:45 

alhames
alhames.ru
куда интереснее как себя они будут вести с новыми тегами
Да нормально себя ведут. Кроме IE конечно )
habrahabr.ru/post/142075/

А для чего ты его использовал?
На моей практике был случай когда указанный язык влиял на вывод даты.
По-умолчанию ру-браузер говорит:
Accept-Language: ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3

Т.е. если зайти с англ. версии браузера, то в поддерживаемых языках мы "ru" не обнаружим (не могу гарантировать что сейчас так, но когда смотрел - была проблема именно в этом).
Соответственно и дата форматировалась на "en-us" лад.

2012-08-12 в 12:56 

По-умолчанию ру-браузер говорит:
Accept-Language: ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3

Так это он серверу говорит в рамках запроса :) сервер если ему надо считывает и выдаёт разные страницы. В таком случае он может вернуть 302 редирект на сайт в зоне .ru (если основной на английском), или вообще 404, если сайт на финском языке и в запросе этот язык не фигурирует.

В общем в региональные стандарты входят: краткие, длинные даты-время, первый день недели, разделитель дробных и группы разрядов, кавычки, денежные единицы и пр.
Как отображать браузер должен спросить у системы, так что отображение будет зависеть скорее от настроек системы, чем от браузера, хотя вероятно браузер может и самостоятельно решать этот вопрос.

   

@web-программирование

главная