Вам бонус- начислено 1 монета за дневную активность. Сейчас у вас 1 монета

Meta tags в контейнере HEAD для мобильных сайтов

Лекция



Привет, Вы узнаете о том , что такое meta tags в контейнере head для мобильных сайтов, Разберем основные их виды и особенности использования. Еще будет много подробных примеров и описаний. Для того чтобы лучше понимать что такое meta tags в контейнере head для мобильных сайтов , настоятельно рекомендую прочитать все из категории Расширяемые языки разметки: XML, HTML, DHTML, HTML 5.

Думаю, все в курсе, что мобильные девайсы в настоящий момент активно захватывают мир. Еще год назад по данным Stat Counter доля мобильного интернет-трафика в мире составляла 4%, на данный момент это значение уже равняется 8% с копейками, а это двукратный рост, на минуточку. Что интересно, тенденция 2*x прироста мобильного трафика наблюдается с 2009 года, когда его доля составляла 0,7%.  
И что совсем интересно — этот рост не только не остановится, но и будет увеличиваться. Например, специалисты из Ericsson прогнозируют, что мобильный трафик данных вырастет к 2016 году в десять раз. А еще одни специалисты из не менее уважаемой компании Cisco прогнозируют рост в 18 раз — пруф.

Meta tags в контейнере  HEAD для мобильных сайтов

Из всего вышенаписанного можно сделать вывод, что если кто из веб-разработчиков еще не окунулся в мир мобильного веба, то сейчас самое время это сделать.
В этой статье я рассмотрю те элементы контейнера <head>, которые десктопные олдскульные верстальщики возможно и не встречали в своей практике.

Начнем с самого первого тега, в который добавим небольшой апгрейд:

1
2
<!--[if IEMobile 7 ]> <html class="iem7" lang="en"> <![endif]-->
<!--[if (gt IEMobile 7)|!(IEMobile)]><!--> <html lang="en"> <!--<![endif]-->

Таким нехитрым способом с помощью условных комментариев (conditional comments) тегу <html> присваивается класс .iem7 в том случае, если страница открыта в браузере IE Mobile. Иногда бывает это полезно, так как известно, что браузеры от Microsoft не идеальны. А с помощью дополнительного класса мы можем в случае чего сделать развилку стилей.
 

Appcache

1
<html manifest="default.appcache">

Также, для хеда можно сделать дополнительный апгрейд — добавить параметр manifest и включить поддержку appcache (Application Cache). Эта часть спецификации HTML5 позволяет использовать веб-приложение в оффлайн режиме. Да, в браузерах есть собственный механизм кеширования, но он ненадежен и не всегда работает так, как мы от него ожидаем. (Примечание: На iPhone/iTouch кэшируются файлы размером не более 25 Kb).
Использование appcache предоставляет следующие преимущества:

  • Оффлайновый просмотр — пользователь может пользоваться сайтом, даже если нет онлайн-соединения (имеются в виду те страницы, которые уже находятся в кеше).
  • Скорость — ресурсы кешируются локально, про позволяет сайту работать быстрее.
  • Снижение нагрузки на сервер — браузер загружает только те ресурсы с сервера, которые были изменены

Кроме того, AppCache позволяет разработчикам определить, какие конкретно файлы следует кешировать и делать доступными оффлайн пользователям.
Задать эти файлы нужно именно в manifest файле примерно таким образом

1
2
3
4
5
6
CACHE MANIFEST
img/splash.png
img/apple-touch-icon.png
css/style.css
js/libs/jquery-1.7.1.min.js
js/libs/modernizr-2.5.min.js

Кстати, для этого файлика существует официальный валидатор

Title

1
<title>Заголовок</title>

Да, стандартный тег для задания заголовка страницы. Функция этого тега аналогична десктопной, однако стоит учитывать некоторые особенности. На некоторых устройствах title страницы используется в качестве заголовка в самом верху экрана; в других же title используется как текст по умолчанию для закладок и истории. Кроме того, по сравнению с десктопным браузером, в мобильном под title отведено довольно мало места — в среднем от 15ти до 40ка символов (60 в горизонтальном положении). Исходя из этого мобильные заголовки желательно делать короткими и значимыми, а не такими, какими советуют сеошники :).

HandheldFriendly

1
<meta name="HandheldFriendly" content="True">

Мета-тег HandheldFriendly изначально поддерживался старыми моделями Palm и Blackberry, где использовались такие браузеры, как AvantGo. Там тег использовался для определения разметки, ориентированной на мобильные устройства. Сегодня этот мета-тег также распознается некоторыми мобильными браузерами и параметр “true” служит индикатором того, что на странице использована оптимизированная для мобильных устройств разметка. Кроме того, он служит директивой для того, чтобы веб-документ отображался без автоматического масштабирования. (документация)

MobileOptimized

1
<meta name="MobileOptimized" content="320">

Мета-тег MobileOptimized был введен компанией Microsoft для того, чтобы контролировать ширину макета веб-страниц, которые рендерятся в браузере Internet Explorer Mobile. Контент мета-тега задается как целое число в пикселях. В IE Mobile наличие этого мета-тега принуждает страницу отображаться одной колонкой с заданной шириной, тем самым избавляясь от попыток браузера самостоятельно подогнать макет по размеру так, чтобы он помещался в экран. Кроме того, это позволяет избавиться от полосок горизонтальной прокрутки.
Некоторые мобильные не MS браузеры могут также использовать этот мета-тег для тех же целей. Более того, поисковые роботы, индексирующий сайты для мобильных устройств, также используют этот мета-тег для определения мобильно-ориентированного HTML. почитать подробнее

Viewport

1
<meta name="viewport" content="width=device-width">

Что такое Viewport, как он работает и для чего вообще нужен13.03.2012

Создадим простую страничку с минимальной разметкой:

1
2
3
4
5
6
7
8
9
<!doctype html>
<html>
<head>
    <title>Hello world!</title>
</head>
<body>
    <p>Hello world!</p>
</body>
</html>

Теперь откроем эту страничку на мобильном устройстве. Открыв, увидим, что наша страница отобразится примерно таким образом:

Meta tags в контейнере  HEAD для мобильных сайтов

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

Почему же так происходит?

Проблема мобильных браузеров

При сравнении мобильных и десктопных браузеров наиболее очевидное различие — размер экрана. Об этом говорит сайт https://intellect.icu . Мобильные браузеры по-умолчанию отображают сайты, созданные для обычных десктопных браузеров, гораздо хуже, чем могли бы: либо путем уменьшения масштаба, делая текст и другой контент слишком мелким и нечитаемым (как в нашем варианте), либо отображая лишь небольшую часть сайта, которая умещается на экране.

Если подумать логически, то в этом есть смысл: мобильный браузер видит страницу и предполагает, что она создана для десктопной версии браузера, что верно для подавляющего числа сайтов. Исходя из этого, этот браузер задает странице ширину 980px (Safari iPhone) и пытается оптимально уместить ее на экране смартфона, отобразив в максимально уменьшенном масштабе. Обычно ширина сайтов примерно такой и является, поэтому открыв среднестатистическую веб-страницу на мобильном устройстве, она растянется на всю свою ширину, но меньше в 2-3 раза своего оригинального размера.

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

И вот как раз для этого мы и будем использовать мета-тег viewport, который был введен компанией Apple и как обычно скопирован остальными.

Добавим в блок <head></head> следующую строку:

1
<meta name="viewport" content="width=device-width">

И вот что получится в результате:

Meta tags в контейнере  HEAD для мобильных сайтов

Совсем другое дело. Задав мета-тегу viewport значение “device-width”, мы говорим браузеру, что ширина области просмотра равняется ширине этого устройства, а не стандартной ширине в 980px, как он может предполагать по-умолчанию. На большом количестве смартфонов ширина экрана равняется 320px (в портретном режиме). Можно задать самостоятельно ширину в 320px, что даст тот же результат, но на некоторых смартфонах ширина экрана может быть другой, поэтому самый оптимальный вариант — использовать device-width.

Одним из самых распространенных вариантов определения области просмотра является следующий вариант:

1
<meta name="viewport" content="width=device-width, initial-scale=1.0">

который определяет ширину страницы и задает начальный масштаб.

Также, часто можно встретить такой вариант:

1
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">

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

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

1
2
<meta name="MobileOptimized" content="320"/>
<meta name="HandheldFriendly" content="true"/>

Подробнее об этих и других специфических мобильных тегах можно почитать здесь.

Возможные параметры для мета-тега viewport

АтрибутВозможное значениеОписание
width Целое неотрицательное значение
(от 200px — 10,000px)
или константа device-width.
Определяет ширину viewport.
Если ширине не указана, в мобильном Safari устанавливается значение 980px, в Opera — 850px, в Android WebKit — 800px, а в IE — 974px.
height Целое неотрицательное значение
(от 223px до 10,000px)
или константа deviceheight
Определяет высоту viewport. В большинстве случаев на этот атрибут можно не обращать внимание
initial-scale Число с точкой (от 0.1 до 10).
Значение 1.0 — не масштабировать
Определяет начальный масштаб страницы. Чем больше число, тем выше масштаб.
user-scalable no или yes Определяет, может ли пользователь изменять масштаб в окне.
По-умолчанию “yes” в мобильном Safari.
minimum-scale Число с точкой (от 0.1 до 10).
1.0 — не масштабировать
Определяет минимальный масштаб viewport. По-умолчанию “0.25” в мобильном Safari.
maximum-scale Число с точкой (от 0.1 до 10).
1.0 — не масштабировать
Определяет максимальный масштаб viewport. По-умолчанию “1.6” в мобильном Safari.

Таблица совместимости с viewport.

<safari, webos="" Да="" <="" tr="">
Браузер/ ПлатформаИспользование
браузер Android Да, но до версии 2.2 начальное масштабирование равно 1,0.
Symbian/S60, Nokia Series 40, Motorola Internet Browser, NetFront, Openwave (Myriad), Opera Mobile, Opera Mini Нет
BlackBerry Нет до версии 4.2.1. 
Да с версии 4.2.1
Internet Explorer Нет до IE6

Собственно, если у вас нет планов углубляться в нюансы и специфику тега viewport, то на этом можно и закончить. Однако, если кто хочет понять принцип работы вьюпорта, и чем отличаются визуальный вьюпорт и вьюпорт страницы, можно почитать дальше.
А поможет нам в этом дополненный мною перевод замечательной статьи Питера-Пауля Коха (Peter-Paul Koch) A tale of two viewports — part two Meta tags в контейнере  HEAD для мобильных сайтов

Два вьюпорта

Итак, допустим, что вьюпорт слишком узок для нашего CSS-шаблона. Очевидное решение — сделать вьюпорт шире. Однако, для начала разделим понятие вьюпорта на две части: визуальный вьюпорт и вьюпорт страницы.

Очень неплохо концепцию вьюпортов объясняет Джордж Камминс (George Cummins) на Stack Overflow:

Представьте вьюпорт страницы как большое изображение с неизменными размерами и формой. Теперь представьте меньшую по размеру рамку, через которую вы смотрите на это большое изображение. Эта рамка окружена непроницаемым материалом, который не дает вам увидеть большое изображение полностью, за исключением отдельных его частей. Часть большого изображения, которая видна через рамку, и будет визуальным вьюпортом. Если отойти с рамкой от большого изображения (zoom out, т.е. уменьшить масштаб), то можно увидеть сразу все изображение, или же подойти поближе (zoom in, увеличить масштаб), тогда можно будет рассмотреть только часть изображения. Также, можно поворачивая рамку менять ее ориентацию (на портретную или ландшафтную), при этом размер и форма большого изображения (вьюпорта страницы) всегда остается неизменной.

Визуальный вьюпорт — часть страницы, которая видна в данный момент на экране. Пользователь может воспользоваться прокруткой, чтобы изменить видимую часть страницы, или использовать масштабирование для изменения размеров визуального вьюпорта.

Meta tags в контейнере  HEAD для мобильных сайтов

Разметка страницы, особенно если ее ширина задана в процентах, рассчитывается относительно вьюпорта страницы, который значительно шире визуального вьюпорта.

Таким образом, -элемент изначально принимает ширину вьюпорта страницы и дальше CSS ведет себя так, если бы экран был намного шире экрана телефона. Это обеспечивает сайту такое же поведение, как и в десктопном браузере.

Какой же ширины сам визуальный вьюпорт? Это зависит от браузера. Safari iPhone использует 980px, Opera — 850px, Android WebKit — 800px, а IE — 974px.

Некоторые браузеры ведут себя по-своему:

Symbian WebKit пытается приравнять вьюпорт страницы к визуальному вьюпорту, и это означает, что элементы с процентной шириной могут вести себя непредсказуемо. Однако, если страница не умещается в визуальном вьюпорте из-за абсолютных величин браузер растягивает вьюпорт страницы максимум до 850-ти пикселей.

Samsung WebKit делает вьюпорт страницы равным по ширине самого широкого элемента.

На BlackBerry при масштабе в 100% вьюпорт страницы равен будет визуальному вьюпорту при любых раскладах.

Масштабирование (Zooming)

Оба вьюпорта измеряются в CSS-пикселях. Однако, во время масштабирования размеры визуального вьюпорта меняются (при увеличении масштаба на экране умещается меньшее количество CSS-пикселей), в то время как размеры вьюпорта страницы остаются неизменными. (Если бы это было не так, браузер постоянно совершал бы reflow страницы из-за пересчета процентной ширины.)

Понимание вьюпорта страницы

Для лучшего понимания размеров вьюпорта страницы следует взглянуть на то, что происходит при наименьшем возможном масштабе страницы. Большинство мобильных браузеров по-умолчанию отображают любую страницу в наименьшем масштабе.

Дело в том, что размеры вьюпорта страницы браузеров полностью совпадают с экраном при максимально уменьшенном масштабе и поэтому равны визуальному вьюпрту.

Meta tags в контейнере  HEAD для мобильных сайтов

Таким образом, ширина и высота вьюпорта страницы равна всему тому, что отображено на экране при наименьшем масштабе. При увеличении масштаба пользователем эти размеры остаются неизменными.

Meta tags в контейнере  HEAD для мобильных сайтов

Ширина вьюпорта страницы всегда неизменна. Если изменить ориентацию экрана смартфона, визуальный вьюпорт изменится, но в то же время мобильный браузер приспособится к новой ориентации, немного увеличив масштаб таким образом, что вьюпорт страницы снова станет таким же по ширине, как и визуальный вьюпорт.

Meta tags в контейнере  HEAD для мобильных сайтов

Это повлияло на высоту вьюпорта страницы, которая сейчас намного меньше, чем при портретной ориентации. Но для разработчиков больше важна ширина, а не высота.

Meta tags в контейнере  HEAD для мобильных сайтов

Android и target-densitydpi

У устройств на платформе андроид есть свой атрибут для viewport, который выключает масштабирование для дисплеев с различным разрешением.

1
<meta name="viewport" content="target-densitydpi=high-dpi" />

На устройствах с HDPI (240dpi) не будет масштабирования.

1
<meta name="viewport" content="target-densitydpi=medium-dpi: />

На устройствах с MDPI (160dpi) не будет масштабирования. Такое значение dpi установлено по-умолчанию.

1
<meta name="viewport" content="target-densitydpi=low-dpi: />

На устройствах с LDPI (120dpi) не будет масштабирования

1
<meta name="viewport" content="target-densitydpi=device-dpi" />

Такая запись означает, что не будет масштабирования ни на каком из устройств на Андроиде.

1
2
3
<link rel="apple-touch-icon-precomposed" sizes="114x114" href="images/h/apple-touch-icon.png">
<link rel="apple-touch-icon-precomposed" sizes="72x72" href="images/m/apple-touch-icon.png">
<link rel="apple-touch-icon-precomposed" href="images/l/apple-touch-icon-precomposed.png">

Safari в iOS и дефолтный браузер в Андроиде обладают полезной функцией сохранения закладок на сайты и веб-приложения на рабочем столе, наряду с иконками для обычных приложений. Для таких типов закладок можно указать иконку, положив в корень сайта PNG картинку размером 57x57px с названием apple-touch-icon.png. Также можно указать иконку для отдельной страницы или раздела сайта, используя тег link со значением apple-touch-icon в аттрибуте rel и адресом картинки.
С появлением iPhone 4/4s и iPad, требование к этой иконке изменились – теперь она должна быть размером 114×114 для айфона или 72×72 для айпада. В принципе, размер этой иконки может быть и больше, мобильный сафари самостоятельно сожмет ее до нужного размера, плюс скруглит углы, добавит небольшую тень и эффект стеклянности к иконке. Выглядит это как-то так:

Meta tags в контейнере  HEAD для мобильных сайтов

Также, поддерживается полупрозрачность иконок. В этом случае прозрачные области будут залиты черным цветом:

Meta tags в контейнере  HEAD для мобильных сайтов

При желании от стеклянного эффекта можно отказаться, прописав вместо apple-touch-icon значение apple-touch-icon-precomposed.
Многие рекомендуют всегда использовать precomposed-иконки, чтобы всегда держать под своим контролем их дизайн.
Тем не менее, даже если вы решили использовать только apple-touch-icon-precomposed.png, есть смысл также оставить запись и с apple-touch-icon.png для максимальной совместимости — к примеру iOS 1 и BlackBerry OS6 не поддерживают precomposed.
Кстати, если подразумевается, что ваш сайт будет рассчитан на работу только с мобильными девайсами от Apple, то можно вообще отказаться от ссылок на иконки в HTML коде. Достаточно создать версии изображения в нужных размерах, задать им правильные названия и положить в корень проекта. Небольшая документация по этому поводу

Стоит сказать, что Android в свое время тоже научился распознавать эти иконки и использовать аналогично iOS устройствам — заявлена поддержка версий 2.1+. (Примечание: Android 2.1 поддерживает только precomposed иконки) — прув

1
<link rel="shortcut icon" href="images/l/apple-touch-icon.png">

Позволяет задать иконку для некоторых других устройств, например некоторые модели смартфонов Nokia.

1
<link rel="apple-touch-startup-image" href="images/l/splash.png">

Эта строка позволяет задать картинку загрузки (splash image) при открытии закладки с рабочего стола.
Выглядит это примерно следующим образом:

Meta tags в контейнере  HEAD для мобильных сайтов

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

  • 320×480 (iPhone < 4, iPod Touch)
  • 640×960 (iPhone 4+, новый iPod Touch)
  • 768×1004 (iPad portrait)
  • 1024×748 (iPad landscape)
1
<meta name="apple-mobile-web-app-capable" content="yes" />

По-умолчанию, закладка с рабочего стола запускает веб-сайт в стандартном режиме сафари – с адресной строкой.
Этот мета-тег необходим для того, чтобы приложение открылось в полноэкранном режиме, без видимой адресной строки. К сожалению, этот режим имеет некоторые ограничения — при клике на любую ссылку, переход на следующую страницу осуществляется уже в стандартном режиме мобильного сафари.

1
<meta name="apple-mobile-web-app-status-bar-style" content="default">

Меняем дизайн статус-бара — тонкой полосы в самом верху экрана, где отображается время и иконка заряда батареи.

Meta tags в контейнере  HEAD для мобильных сайтов

Для того, чтобы его изменить, используется мета-тег apple-mobile-web-app-status-bar-style.

Здесь может быть один из трех вариантов – default, black или black-translucent.
Default — оставит его в стандартном синем дизайне, black — заставит изменить фон на черный. black-translucent — также сделает статус-бар черным, но добавит к нему полупрозрачность — это немного расширит видимую область контента, что возможно потребует дополнительных правок в css. (документация)

Некоторые дополнительные мета-теги, которые могут быть включены при надобности:

1
<meta http-equiv="cleartype" content="on">

Mobile Internet Explorer позволяет принудительно активировать технологию ClearType для сглаживания шрифтов. Чем многие и пользуются :).

1
2
<meta name="format-detection" content="telephone=no">
<meta name="format-detection" content="address=no">

Эти строки позволяют отключить автоматическое распознавание форматов. Проще говоря, если вы где-нибудь на странице указали номер телефона в html-коде и не указали в хедере, то смартфон распознает его как телефонный номер и попытается набрать его по клику. То же самое и с адресом.

Прочтение данной статьи про meta tags в контейнере head для мобильных сайтов позволяет сделать вывод о значимости данной информации для обеспечения качества и оптимальности процессов. Надеюсь, что теперь ты понял что такое meta tags в контейнере head для мобильных сайтов и для чего все это нужно, а если не понял, или есть замечания, то не стесняйся, пиши или спрашивай в комментариях, с удовольствием отвечу. Для того чтобы глубже понять настоятельно рекомендую изучить всю информацию из категории Расширяемые языки разметки: XML, HTML, DHTML, HTML 5

создано: 2016-10-24
обновлено: 2021-03-13
132490



Рейтиг 9 of 10. count vote: 2
Вы довольны ?:


Поделиться:

Найди готовое или заработай

С нашими удобными сервисами без комиссии*

Как это работает? | Узнать цену?

Найти исполнителя
$0 / весь год.
  • У вас есть задание, но нет времени его делать
  • Вы хотите найти профессионала для выплнения задания
  • Возможно примерение функции гаранта на сделку
  • Приорететная поддержка
  • идеально подходит для студентов, у которых нет времени для решения заданий
Готовое решение
$0 / весь год.
  • Вы можите продать(исполнителем) или купить(заказчиком) готовое решение
  • Вам предоставят готовое решение
  • Будет предоставлено в минимальные сроки т.к. задание уже готовое
  • Вы получите базовую гарантию 8 дней
  • Вы можете заработать на материалах
  • подходит как для студентов так и для преподавателей
Я исполнитель
$0 / весь год.
  • Вы профессионал своего дела
  • У вас есть опыт и желание зарабатывать
  • Вы хотите помочь в решении задач или написании работ
  • Возможно примерение функции гаранта на сделку
  • подходит для опытных студентов так и для преподавателей



Комментарии


Оставить комментарий
Если у вас есть какое-либо предложение, идея, благодарность или комментарий, не стесняйтесь писать. Мы очень ценим отзывы и рады услышать ваше мнение.
To reply

Расширяемые языки разметки: XML, HTML, DHTML, HTML 5

Термины: Расширяемые языки разметки: XML, HTML, DHTML, HTML 5