Вы когда-нибудь задавались вопросом, как определенный эффект был достигнут в веб-дизайне, и, после увеличения в несколько кликов, вы обнаружили, что автор добавил несколько тонких теней, границ, градиентов и т. Д.? В прошлом это было достигнуто просто путем вырезания изображения и установки его в качестве фона какого-либо элемента. К счастью, с помощью CSS3 мы можем получить гораздо больше гибкости. Теперь, хотя код для такого простого эффекта может быть немного утомительным, он того стоит, и об этом мы рассмотрим в сегодняшнем письменном и видео-кратком совете!
Видео версия
Скорее смотреть этот скринкаст на Screenr.com ?
Текстовая версия
Удивительно, что что-то такое простое требует такого большого количества кода, но оно не слишком грубое и может быть легко абстрагировано от фрагмента для будущего использования.
Шаг 1. Создайте разметку
Чтобы сделать наш проект как можно более вырезанным и вставленным, мы работаем только с пустым div. Создайте новый файл index.html и вставьте следующее:
1
2
3
4
5
|
<body>
<div id=»box»>
</div>
</body>
|
Шаг 2. Создайте холст
Далее мы добавим некоторые базовые стили для элемента body. Это только для презентации, и может быть легко удалено. В тегах стиля в вашем заголовке добавьте:
1
2
3
4
5
6
|
/* Nothing special here.
body {
width: 500px;
margin: 60px auto 0;
background: #666;
}
|
Шаг 3. Стилизация коробки
Теперь мы создадим нашу коробку с шириной и высотой.
1
2
3
4
5
|
#box {
/* Just a box */
width: 500px;
height: 500px;
}
|
Шаг 4. Закругленные углы
Мы все должны знать о закругленных углах CSS к настоящему времени. Давайте идти вперед и реализовать это.
1
2
3
4
|
/* Rounded corners */
-moz-border-radius: 3px;
-webkit-border-radius: 3px;
border-radius: 3px;
|
Обратите внимание, что мы также предоставляем окончательную спецификацию «border-radius» в дополнение к версиям Mozilla и Webkit.
Шаг 5. Границы цветов
Mozilla предлагает удобное свойство, называемое «-moz-border — * — colors». Это позволяет нам устанавливать бесконечное количество цветов для рамки. Чтобы получить тонкий эффект «двойной границы», давайте реализуем это свойство.
1
2
3
4
5
6
7
8
|
/* Set a base border and color */
border: 2px solid white;
/* Multiple border colors in Gecko */
-moz-border-top-colors: #292929 white;
-moz-border-right-colors: #292929 white;
-moz-border-bottom-colors: #292929 white;
-moz-border-left-colors: #292929 white;
|
Обратите внимание, что количество цветов, которые мы предоставляем, равно ширине границы, которую мы установили в начале (2 пикселя). Кроме того, не ставьте запятые после каждого шестнадцатеричного значения; Я сделал эту ошибку сначала!
Шаг 6. Компенсация за Webkit
Насколько я знаю, webkit в настоящее время не поддерживает цвета границ, хотя, возможно, я ошибаюсь. Если я, пожалуйста, оставьте комментарий и дайте мне знать! В любом случае, чтобы имитировать этот эффект как можно лучше в Safari и Chrome, мы будем использовать box-shadow.
1
2
|
/* Compensate for Webkit.
-webkit-box-shadow: 0 -1px 2px #292929;
|
Обратите внимание, что предоставленные значения относятся к смещению X, смещению Y, размытию и цвету тени соответственно. Передав -1px в качестве смещения Y, мы можем сдвинуть тень вверх.
Шаг 7. Фоновые градиенты CSS
Последний шаг — добавить тонкий градиент фона для нашего блока. Тем не менее, мы должны быть уверены, что обеспечим резервный сплошной цвет для браузеров, которые не поддерживают CSS-градиенты.
1
2
3
4
|
/* Background subtle gradient, with fallback to solid color */
background: #e3e3e3;
background: -moz-linear-gradient(top, #a4a4a4, #e3e3e3);
background: -webkit-gradient(linear, left top, left bottom, from(#a4a4a4), to(#e3e3e3));
|
К сожалению, Mozilla и Webkit не совсем согласны с синтаксисом градиентов, что делает процесс еще более раздражающим. Если это слишком запутанно, вы можете использовать новый сервис под названием CSS3 Please автоматически генерировать синтаксис каждого браузера; это очень круто!
Вы сделали!
Это удивительно; глядя на наше окончательное изображение, трудно сказать, что мы на самом деле сделали! Но это хорошо; тонкость является ключевой во всех аспектах дизайна. Спасибо за чтение / просмотр!
Окончательный код
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
/* Nothing special here.
body {
width: 500px;
margin: 60px auto 0;
background: #666;
}
#box {
/* Just a box */
width: 500px;
height: 500px;
/* Rounded corners */
-moz-border-radius: 3px;
-webkit-border-radius: 3px;
border-radius: 3px;
border: 2px solid white;
/* Multiple border colors in Gecko */
-moz-border-top-colors: #292929 white;
-moz-border-right-colors: #292929 white;
-moz-border-bottom-colors: #292929 white;
-moz-border-left-colors: #292929 white;
/* Compensate for Webkit.
-webkit-box-shadow: 0 -1px 2px #292929;
/* Background subtle gradient, with fallback to solid color */
background: #e3e3e3;
background: -moz-linear-gradient(top, #a4a4a4, #e3e3e3);
background: -webkit-gradient(linear, left top, left bottom, from(#a4a4a4), to(#e3e3e3));
}
|