CSS для веб-дизайнеров.
Градиенты в CSS.
Искусный способ, которым можно добавить объема, – это градиенты, которые появились в CSS. То есть можно создавать градиентные переходы между цветами, не используя картинки. Звучит очень привлекательно, не так ли?
Градиенты в CSS сейчас поддерживаются только в Safari 4+, Chrome 2+ и Firefox 3.6+, но опять-таки для некритического использования это может быть гибким решением с хорошим запасным вариантом.
CSS-градиенты могут быть применены везде, где в стилях может быть использовано изображение. Другими словами – в виде значений для background-image, list-style-image и для сгенерированного содержимого.
Синтаксис CSS-градиентов немного отличается в Safari и Firеfох. Спецификация (очень ранняя), впрочем, склоняется к варианту, который предлагает Firefox. Это важный пример того, почему браузерные префиксы – существенная часть процесса проработки спецификации: два различных синтаксиса могут быть должным образом объявлены для каждого браузера, пока официальная спецификация обсуждается.
Я честно признаюсь, что оба варианта могут показаться немного запутанными. Создание градиента включает в себя указание большого количества параметров: цвета, остановки цветов, направление градиента и т. п.
К примеру, вот синтаксис, который задает простой линейный градиент на фон элемента; работает в браузерах на движках WebKit и Mozilla:
#foo {
Background-image: – webkit-gradient(linear, 0% 0%, 0% 100%, from(#fff), to(#999));
Background-image: – moz-linear-gradient(0% 100% 90deg, #fff, #999);
}
Он далеко не интуитивно ясный; также сложно запомнить отличия между браузерами.
Лучший способ получить верный код, который я нашел, – использовать прекрасный визуальный редактор, написанный Джоном Оллсоппом (рис. 6.06, http://bkaprt.com/CSS/14/).[17].
Рис. 6.06. Инструмент создания CSS-градиентов, написанный Джоном Оллсоппом.
Пользуйтесь этим редактором, чтобы графически создать нужные градиенты; затем получите нужный код для Safari и Firеfох. Инструмент Джона берет на себя всю тяжелую работу. Очень помогает – учитывая, что я сам пока что не запомнил верный синтаксис (и отличия между браузерами).
Джонатан Снук написал хорошую статью о том, как разбираться в синтаксисе градиентов; она также может оказаться полезной: http://bkaprt.com/CSS/15/[18].
Градиент, который мы хотим добавить к полям ввода, – очень незаметный переход цвета, который должен придать им объема (рис. 6.07). После экспериментов с инструментом Джона Оллсоппа получилось две строки кода:
#thing-alerts fieldset input[type="text"] {
Width: 215px;
Padding: 5px 8px;
Font-size: 1.2em;
Color: #666;
Border: none;
Background-image: – webkit-gradient(linear, 0% 0%, 0% 12%, from(#999), to(#fff));
Background-image: – moz-linear-gradient(0% 12% 90deg, #fff, #999);
Background-color: #fff;
-webkit-border-radius: 4px;
-moz-border-radius: 4px;
-o-border-radius: 4px;
Border-radius: 4px;
}
Рис. 6.07. Увеличенный вид небольшого градиента, расположенного над полем ввода. Поле выглядит так, как будто оно вставлено внутрь страницы.
Мы применили линейный градиент, но в CSS также доступны круговые градиенты.
Пример выше показывает, как различается синтаксис между вариантами -webkit и -moz. Мы добавили небольшой линейный градиент, который переходит от светло-серого ( #999) к белому ( #fff) и занимает 12% от высоты текстового поля. Мы используем браузерные префиксы на свойстве background-image, чтобы градиент отображался в Safari и Firefox.
На рис. 6.08 показан результат: можно видеть поля ввода со скругленными углами и небольшой внутренней тенью. Изображения не используются.
Рис. 6.08. Поля ввода под воздействием CSS-градиентов.
Браузеры, которые пока что не поддерживают CSS-градиенты, проигнорируют эти свойства background-image; поля ввода будут белыми и плоскими. Это нормально. Но гибкость и управляемость, которые приходят вместе с CSS-градиентами, очень привлекательны.
Мы будем использовать градиенты еще немного в следующем разделе – для кнопки «подписаться».
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
- 19.
- 20.
- 21.
- 22.
- 23.
- 24.
- 25.
- 26.
- 27.
- 28.
- 29.
- 30.
- 31.
- 32.
- 33.
- 34.
- 35.
- 36.
- 37.
- 38.
- 39.
- 40.
- 41.
- 42.
- 43.
- 44.
- 45.
- 46.
- 47.
- 48.
- 49.
- 50.
- 51.
- 52.
- 53.
- 54.
- 55.
- 56.
- 57.
- 58.
- 59.
- 60.
- 61.
- 62.
- 63.
- 64.
- 65.
- 66.
- 67.
- 68.
- 69.
- 70.
- 71.
- 72.
- 73.
- 74.
- 75.
- 76.
- 77.
- 78.
- 79.
- 80.
- 81.
- 82.
- 83.
- 84.
- 85.
- 86.
- 87.
- 88.
- 89.
- 90.
- 91.
- 92.
- 93.
- 94.
- 95.
- 96.
- 97.
- 98.
- 99.
- 100.
- 101.
- 102.
- 103.
- 104.
- 105.
- 106.
- 107.
- 108.
- 109.
- 110.
- 111.
- 112.
- 113.
- 114.
- 115.