Расширения WebKit
Дата публикации: 07.07.2011
WebKit (напомню, что это проект с открытым исходным кодом) привнес много своих расширений в CSS, а некоторые из них могут даже дополнить CSS3. В мобильном мире есть несколько разновидностей WebKit-продуктов: Safari, Android, webOS, Symbian, и т.д. Ситуация с поддержкой расширений в них может отличаться.
У многих WebKit-расширений есть дубликаты для других декстопных браузеров, например Mozilla Firefox (используется префикс -moz-) или Opera (используется префикс -o-). В CSS3 многие их этих расширений уже работают без префикса.
Ниже, в сжатом виде, приводится список наиболее популярных расширений WebKit:
- -webkit-border-radius для скругленных углов блока. В современных мобильных браузерах также понимается как border-radius;
- -webkit-box-shadow определяет тень для блочного элемента (CSS3 — box-shadow);
- -webkit-columns определяет количество и ширину столбцов;
- -webkit-border-image определяет изображение которое используется для оформления бордюр блока;
- -webkit-text-stroke указывает, какой цвет будет использоваться для контура текста;
- -webkit-text-fill-color указывает, какой цвет будет использоваться для заливки текста.
Некоторые из этих расширений рассмотрим более подробно.
Text Stroke и Fill
Свойства stroke и fill — это удобный способ создания необычных эффектов в заголовках (с большим шрифтом) без использования изображений. Например:
<h1 style="-webkit-text-stroke: thin blue; -webkit-text-fill-color: yellow"> Great Title! </h1>
В таблице 7.15 показано, в каких браузерах доступны эти расширения.
Браузер/ Платформа | Поддержка stroke и fill |
---|---|
Safari | Да |
Android browser | Да |
Symbian/S60 | Только fill с 5-й версии Не поддерживается до 5-го выпуска |
Nokia Series 40 | Нет |
webOS | Только fill |
BlackBerry | Нет |
NetFront | Нет |
Openwave (Myriad) | Нет |
Internet Explorer | Нет |
Motorola Internet Browser | Нет |
Opera Mobile | Нет |
Opera Mini | Нет |
Border Image
Свойство border-image — отличное решение проблемы реализации динамических размеров прямоугольника с оформленными границами. Расширение очень похоже на CSS-спрайты и весьма простое в использовании. Этот метод хорошо подходит для кнопок, заголовков, зон контента и любой области на сайте, где нам нужен нестандартный (пользовательский) дизайн границ без использования таблиц.
Для этого используем свойство -webkit-border-image, а сам синтаксис выглядит так:
-webkit-border-image: url top right bottom left x_repeat y_repeat;
url — адрес к картинке (или может быть встроенное изображение), четыре значения (top, right, bottom, left) — отступы для изображения.
Значения x_repeat и y_repeat являются дополнительными и могут быть определены, как одна из следующих констант:
- repeat — фрагмент повторяется для заполнения области;
- round — фрагмент повторяется для заполнения области и масштабируется таким образом, чтобы количество фрагментов было целым;
- stretch — фрагмент растягивается для заполнения области.
border-image делится на девять частей (рисунок 7.9). Четыре из них — углы, остальные — фоновые изображения для сторон и центра.

Рис. 7.9. Изображение разрезается на девять частей, и каждая из них используется как угол или как часть фона
Если применить border-image для кнопки, то никакого эффекта нажатия не будет. Для создания такого эффекта нужно псевдоклассы :active и/или :focus, указывая другой border-image. Проблемы могут возникнуть, если ты попробуешь изменить сам способ отображения кнопки, поэтому для пользовательских вариантов дизайна лучше использовать ссылки или убрать отображение кнопки по умолчанию при помощи -webkit-appearance: none.
Самый простой способ определить border-image с четырьмя равными значениями, это:
-webkit-border-image: url distance
<!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.0//EN" "http://www.wapforum.org/DTD/xhtml-mobile10.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>Image Border</title> <style type="text/css"> /* нам понадобится и input[type=button], а для тестовых целей, не будем применять CSS3 */ input.bordered { -webkit-border-radius: 10px; -webkit-border-image: url(border1.png) 6; } a.bordered { -webkit-border-image: url(border1.png) 6; color: white; text-decoration: none; padding: 3px; } h1 { -webkit-border-image: url(border2.png) 50 50 50 50 repeat stretch; border: 20px; } /* h2 будет использовать то же изображение, а отображать только половину */ h2 { -webkit-border-image: url(border2.png) 50 50 50 50 round round; border: 10px; } </style> </head> <body> <h1>This is a title</h1> <h2>This is a subtitle</h2> <input type="button" class="bordered" value="Press Me" /> <!-- border image можно применить и к строчным элементам --> <a href="http://mobilexweb.com" class="bordered">This is a link</a> </body> </html>
Еще пример — реализация классической кнопки «Назад» в пользовательском интерфейсе iPhone. Используем только зоны left, right и center (разделяем изображения на три части). Результат этого кода на рисунке 7.10:
<!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.0//EN" "http://www.wapforum.org/DTD/xhtml-mobile10.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>Image Border</title> <style type="text/css"> #back { -webkit-border-image: url(border1.png) 0 5 0 15; } </style> </head> <body> <a href="/" id="back">Home Page</a> </body> </html>
Как видно из таблицы 7.16, эти расширения работают примерно на половине мобильных платформ.
Браузер/ Платформа | Блочные элементы | Строчные элементы |
---|---|---|
Safari | Да | Да |
Android browser | Да (отличается от background) | Да |
Symbian/S60 | Частично в 5-м выпуске Нет до 5-го выпуска |
Да |
Nokia Series 40 | Плохо в 6-м выпуске Нет до 6-го выпуска |
Бажит в 6-м выпуске |
webOS | Да | Да |
BlackBerry | Нет | Нет |
NetFront | Нет | Нет |
Openwave (Myriad) | Нет | Нет |
Internet Explorer | Нет | Нет |
Motorola Internet Browser | Нет | Нет |
Opera Mobile | Нет | Нет |
Opera Mini | Нет | Нет |
Некоторые WebKit-расширения работают в Firefox Mobile и в браузере MeeGo/Maemo, потому как в них обоих используется движок Mozilla Gecko. Для этих браузеров мы должны префикс -webkit- заменить на -moz-.

Рис. 7.10. Такая кнопка может быть сделана очень легко с использованием динамического border-image.
Расширения только для Safari
Safari на iOS добавили в CSS-стандарты (и не только в CSS, а даже в WebKit) много расширений. Эти расширения работают только в Safari для iPhone, iPad и iPod Touch (некоторые из них также работают и в дектоспных браузерах, но мы же здесь говорим только о мобильных). В зависимости от версии WebKit, Android и webOS браузеры также понимают некоторые из этих расширений.
CSS-расширения могут быть сгруппированы в следующие категории:
- переходы;
- анимация;
- 2D и 3D преобразования (transform);
- разное (перечислены в таблице 7.17).
CSS-расширения для iPhone весьма впечатляют. Они позволяют создавать Flash-подобные эффекты и 3D преобразования с использованием одного лишь CSS. Это очень удобно, хоть и трудновато иногда, потому как все должно быть написано на CSS — языке, не предназначенном изначально для такого рода разработок. Большинство этих iPhone-расширений и некоторые открытые JavaScript-библиотеки, которые могут нам существенно помочь мы рассмотрим позже (Главы 9 и 12).
Свойство | Значение | Описание |
---|---|---|
-webkit-text-security | circle, disc, none, square | Определяет символ, который будет отображаться в поле пароля вместо вводимых пользователем символов. |
-webkit-text-size-adjust | auto, none, percentage value | Определяет размер строчных букв по отношению к заглавным для удобства чтения |
-webkit-appearance | Частичный список: none, button, buttonbevel, checkbox, default-button, list box, listitem, mediafullscreen-button, media-mute-button, media-play-button, radio, searchfield, searchfield-cancelbutton, slider-horizontal, slider-vertical, square-button, textarea, textfield |
Меняют внешний вид элемента на стандартный элемент управления для этой операционной системы. Доступно в IOS 2.0. Значение none позволит нам определить пользовательский дизайн с использованием CSS. |
-webkit-user-select | auto / none / text | С iOS 3.0 определяет, может ли пользователь выделить текст, чтобы его скопировать. |
-webkit-touch-callout | none, inherit | Убирает всплывающее окно, которое появляется, если пользователь удерживает палец на ссылке в течение нескольких секунд. |
-webkit-tap-highlightcolor | Значения цвета | Определяет цвет, который будет использован в качестве фона, когда пользователь кликает по ссылке или кликабильному элементу. |
Куда дальше
- следующая — Глава 8. Мобильный JavaScript
- предыдущая — CSS спрайты
- содержание