CSS3 видели и пробовали все, кого он мог заинтересовать. И закругленные уголки и падающие тени мы уже можем генерировать без лишнего труда.
Но это только поверхностный уровень. Мне пришлось разобраться с новыми возможностями браузеров более подробно, чтобы ответить на возникшие вопросы типа: насколько кроссбраузерны градиенты со множеством цветовых переходов, где и как можно применять сразу несколько теней к блоку, для каких конкретно браузеров применяются префиксы свойств и т.п.
Кроме того, меня интересовала поддержка CSS3 на мобильных платформах, неизученные возможности CSS3, а также генераторы, которые создают кроссбраузерный код. Я попробовал восполнить некоторые пробелы и собрать полезную информацию для тех, кто еще только готовится к погружению.
Браузеры, поддерживающие свойства перечислены в виде CSS комментариев. Генераторы и инструменты чаще всего могут выполнять сразу несколько функций, поэтому в таких случаях я указывал их только там, где они, по-моему, справляются лучше всего.
На самом деле существует сразу несколько видов CSS3 градиентов. Это самый простой градиент.
Кроме указания начального и конечного цветов, градиенты позволяют изменять угол наклона, позицию начала и завершения цветового перехода, количество цветов и направление градиента.
Позволяет повторять градиент, дает возможность создавать фоновые паттерны.
Круговой градиент. Так же можно иметь несколько цветовых переходов, можно определять точку начала градиента (не обязательно из центра круга).
Это возможность назначать сразу несколько фоновых изображений одному элементу.
Закругленные уголки у блока. Все просто, если нужен одинаковый радиус закругления.
Но если у разных углов должен быть разный радиус, то нужно перечислить радиусы для каждого угла.
Интересной возможностью является передача пар значений радиусов для каждого угла. Так можно добиться более сложных форм, чем просто закругления:
Если все одинковы:
Падающие тени от блоков.
Тени можно направить вовнутрь элемента
Можно применить сразу несколько теней к одному элементу.
Еще одним мало используемым значением является spread-radius, для изменения которого нужно просто добавить его сразу после значения размытия тени. Положительное значение увеличивает тень, отрицательное значение сделает размеры тени меньше размера блока, от которого тень падает.
Это возможность использовать альфа-прозрачность для цветов. В отличие от свойства opacity можно применить и к шрифту и к бордерам и к фону блока без изменения прозрачности содержимого блока.
hex2rgba.devoth.com превращает HEX в RGBA
Генерация контента в CSS через :before/:after. Используется как для добавления символов и целых слов в документ, так и для создания новых блоков, которые можно использовать для оформления.
Получилось выяснить положение с поддержкой CSS3 разными браузерами. Удалось найти множество инструментов. Не обнаружилось генератора для закруглений с парами значений для угла, генератора, который может создавать сразу несколько теней у блока, а также генератора, который объединял бы все необходимые функции, но при этом был бы прост и имел хороший интерфейс.
Конечно, есть еще множество свойств, например border-image или transition, но они не так широко используются, либо требуют еще более глубокого изучения, поэтому не вошли в этот обзор. Но инструменты или информацию найти можно попытаться практически для любого случая.
caniuse.com
www.css3files.com
css3please.com
upd Для желающих автоматизировать процесс создания префиксов написана другая статья.
And for those of you who don't speak Russian, this article in English.
Но это только поверхностный уровень. Мне пришлось разобраться с новыми возможностями браузеров более подробно, чтобы ответить на возникшие вопросы типа: насколько кроссбраузерны градиенты со множеством цветовых переходов, где и как можно применять сразу несколько теней к блоку, для каких конкретно браузеров применяются префиксы свойств и т.п.
Кроме того, меня интересовала поддержка CSS3 на мобильных платформах, неизученные возможности CSS3, а также генераторы, которые создают кроссбраузерный код. Я попробовал восполнить некоторые пробелы и собрать полезную информацию для тех, кто еще только готовится к погружению.
Браузеры, поддерживающие свойства перечислены в виде CSS комментариев. Генераторы и инструменты чаще всего могут выполнять сразу несколько функций, поэтому в таких случаях я указывал их только там, где они, по-моему, справляются лучше всего.
Linear-gradient
На самом деле существует сразу несколько видов CSS3 градиентов. Это самый простой градиент.
div {
background-color: #444444;
background-image: -webkit-gradient(linear, left top, left bottom, from(#444444), to(#999999)); /* Safari 4-5, Chrome 1-10, iOS 3.2-4.3, Android 2.1-3.0 */
background-image: -webkit-linear-gradient(top, #444444, #999999); /* Chrome 10+, Safari 5.1+, iOS 5+, Android 4+ */
background-image: -moz-linear-gradient(top, #444444, #999999); /* Firefox 3.6+ */
background-image: -ms-linear-gradient(top, #444444, #999999); /* IE 10+ */
background-image: -o-linear-gradient(top, #444444, #999999); /* Opera 11.10+ */
background-image: linear-gradient(to bottom, #444444, #999999);
}
Кроме указания начального и конечного цветов, градиенты позволяют изменять угол наклона, позицию начала и завершения цветового перехода, количество цветов и направление градиента.
У Safari до версии 5 и у Chrome до версии 10 был свой собственный синтаксис, да и IE 10 с Opera добавляют свои префиксы, увеличивая количество кода.
Все возможности градиентов поддерживаются теми браузерами, которые могут отображать CSS3 градиенты, даже если некоторые генераторы предлагают нам только переход между двумя цветами.
Repeating-linear-gradient
Позволяет повторять градиент, дает возможность создавать фоновые паттерны.
div {
background-color: #444444;
background-image: -webkit-repeating-linear-gradient(top, #444444 18%, #999999 25%); /* Chrome 10+, Safari 5.1+, iOS 5+, Android 4+ */
background-image: -moz-repeating-linear-gradient(top, #444444 18%, #999999 25%); /* Firefox 3.6+ */
background-image: -ms-repeating-linear-gradient(top, #444444 18%, #999999 25%); /* IE 10+ */
background-image: -o-repeating-linear-gradient(top, #444444 18%, #999999 25%); /* Opera 11.10+ */
background-image: repeating-linear-gradient(top, #444444 18%, #999999 25%);
}
Radial-gradient
Круговой градиент. Так же можно иметь несколько цветовых переходов, можно определять точку начала градиента (не обязательно из центра круга).
div {
background: #444444;
background: -webkit-gradient(radial, center center, 0px, center center, 100%, color-stop(0%,#444444), color-stop(100%,#999999)); /* Chrome 1-10, Safari 4+, iOS 3.2-4.3, Android 2.1-3.0 */
background: -webkit-radial-gradient(center, ellipse cover, #444444 0%,#999999 100%); /* Chrome 10+, Safari 5.1+, iOS 5+, Android 4+ */
background: -moz-radial-gradient(center, ellipse cover, #444444 0%, #999999 100%); /* Firefox 3.6+ */
background: -o-radial-gradient(center, ellipse cover, #444444 0%,#999999 100%); /* Opera 11.6+ */
background: -ms-radial-gradient(center, ellipse cover, #444444 0%,#999999 100%); /* IE 10+ */
background: radial-gradient(center, ellipse cover, #444444 0%,#999999 100%);
}
Opera не поддерживала круговой градиент до версии 11.6. В остальном ситуация такая же, как с линейным градиентом.
Инструменты:
- gradients.glrzad.com выдает кроссбраузерный код, можно создавать множество цветовых переходов
- www.colorzilla.com/gradient-editor самый навороченный генератор. Можно создавать линейные и круговые градиенты, есть возможность выбора формата записи цветов, множество готовых градиентов.
- lea.verou.me/css3patterns галерея CSS3 паттернов. Можно посмотреть код каждого паттерна.
Множественные фоны
Это возможность назначать сразу несколько фоновых изображений одному элементу.
div {
background: url(fallback.png) no-repeat 0 0;
background: url(foreground.png) no-repeat 0 0, url(middle-ground.png) no-repeat 0 0, url(background.png) no-repeat 0 0; /* Firefox 3.6+, Safari 1.3+, Chrome 2+, IE 9+, Opera 10.5+, iOS 3.2+, Android 2.1+ */
}
Не стоит забывать о браузерах, не поддерживающих множественные фоны.
Порядок фонов такой: от верхнего к нижнему, то есть самый нижний фон нужно прописывать в конце. Вместо фоновых картинок можно прописывать и CSS3 градиенты.
Border-radius
Закругленные уголки у блока. Все просто, если нужен одинаковый радиус закругления.
div {
-webkit-border-radius: 12px; /* Safari 3-4, iOS 1-3.2, Android ≤1.6 */
-moz-border-radius: 12px; /* Firefox 1-3.6 */
border-radius: 12px; /* Opera 10.5+, IE 9+, Safari 5, Chrome, Firefox 4+, iOS 4+, Android 2.1+ */
}
Все производители уже отказались от вендорных префиксов в последних версиях браузеров.
Но если у разных углов должен быть разный радиус, то нужно перечислить радиусы для каждого угла.
В Firefox есть особенность, связанная с тем, что перечисление углов происходит с помощью синтаксиса, отличного от стандарта. Но решением может стать использование сокращенного синтаксиса, который у браузеров одинаков.
div {
-moz-border-radius: 15px 30px 45px 60px;
-webkit-border-radius: 15px 30px 45px 60px;
border-radius: 15px 30px 45px 60px;
}
Интересной возможностью является передача пар значений радиусов для каждого угла. Так можно добиться более сложных форм, чем просто закругления:
div {
border-top-left-radius: 5px 30px;
border-top-right-radius: 30px 60px;
border-bottom-left-radius: 80px 40px;
border-bottom-right-radius: 40px 100px;
}
Если все одинковы:
div {
border-radius: 8px / 13px;
}
Инструменты:
- css3please.com генерирует множество всего.
- border-radius.com специализированный генератор закругленных углов. Удобно делать углы разного разиуса.
- css3generator.com генерирует много всего. Для уголков дает возможность выбора между одинаковым радиусом и разными.
- layerstyles.org/builder.html имитирует интерфейс Фотошопа. Удобно генерировать не только уголки.
Box-shadow
Падающие тени от блоков.
div {
-webkit-box-shadow: 0px 0px 4px #000000; /* Safari 3-4, iOS 4.0.2-4.2, Android 2.3+ */
-moz-box-shadow: 0px 0px 4px #000000; /* Firefox 3.5-3.6 */
box-shadow: 0px 0px 4px #000000; /* Opera 10.5+, IE 9+, Firefox 4+, Chrome 6+, iOS 5+ */
}
Тени можно направить вовнутрь элемента
div {
-webkit-box-shadow: inset 6px 6px 12px #000000;
-moz-box-shadow: inset 6px 6px 12px #000000;
box-shadow: inset 6px 6px 12px #000000;
}
Можно применить сразу несколько теней к одному элементу.
div {
-webkit-box-shadow: inset 6px 6px 12px #000000, 4px 6px 3px #dddddd;
-moz-box-shadow: inset 6px 6px 12px #000000, 4px 6px 3px #dddddd;
box-shadow: inset 6px 6px 12px #000000, 4px 6px 3px #dddddd;
}
Еще одним мало используемым значением является spread-radius, для изменения которого нужно просто добавить его сразу после значения размытия тени. Положительное значение увеличивает тень, отрицательное значение сделает размеры тени меньше размера блока, от которого тень падает.
div {
-webkit-box-shadow: 0 5px 5px -6px #000000;
-moz-box-shadow: 0 5px 5px -6px #000000;
box-shadow: inset 0 5px 5px -6px #000000;
}
Внутренние тени, множественные тени и spread-radius можно применять во всех браузерах, которые поддерживают простые CSS3 тени.
Практически все производители уже отказались от вендорных префиксов в последних версиях браузеров.
Инструменты:
- css3maker.com многофункциональный генератор. Можно делать внутренние тени, менять цвета.
- www.css3.me все настройки можно раскрывать по мере необходимости
- css3generator.com можно сразу настроить цвет тени в RGBA
RGBA
Это возможность использовать альфа-прозрачность для цветов. В отличие от свойства opacity можно применить и к шрифту и к бордерам и к фону блока без изменения прозрачности содержимого блока.
div {
background: rgb(200, 54, 54);
background: rgba(200, 54, 54, 0.5); /* Firefox 3+, Chrome, Safari 3+, Opera 10.10+, IE 9+, iOS 3.2+, Android 2.1+ */
}
Для кроссбраузерности стоит указать цвет без альфа-прозрачности, либо путь к прозрачному PHG.
Существующий формат записи HSLA можно использовать в тех же версиях браузеров, которые поддерживаю RGBA.
Инструменты:
hex2rgba.devoth.com превращает HEX в RGBA
Псевдоэлементы
Генерация контента в CSS через :before/:after. Используется как для добавления символов и целых слов в документ, так и для создания новых блоков, которые можно использовать для оформления.
div:before,
div:after { /* Firefox 3.5+, Chrome, Safari 1.3+, Opera 6+, IE 8+, iOS 3.2+, Android 2.1+ */
content:"";
display:block;
}
Поддержка уже очень хорошая, даже на мобильных платформах срабатывают без проблем.
Интересно, что CSS3 требует применения синтаксиса с двумя двоеточиями (::before / ::after) но IE8 требует использования псевдоэлементов с одним двоеточием.
Заключение
Получилось выяснить положение с поддержкой CSS3 разными браузерами. Удалось найти множество инструментов. Не обнаружилось генератора для закруглений с парами значений для угла, генератора, который может создавать сразу несколько теней у блока, а также генератора, который объединял бы все необходимые функции, но при этом был бы прост и имел хороший интерфейс.
Конечно, есть еще множество свойств, например border-image или transition, но они не так широко используются, либо требуют еще более глубокого изучения, поэтому не вошли в этот обзор. Но инструменты или информацию найти можно попытаться практически для любого случая.
Источники информации о поддержке свойств браузерами
caniuse.com
www.css3files.com
css3please.com
upd Для желающих автоматизировать процесс создания префиксов написана другая статья.
And for those of you who don't speak Russian, this article in English.