Статьи

Создайте эффект заметки за 5 простых шагов с помощью CSS3 и HTML5

В этом руководстве вы узнаете, как преобразовать список HTML в стену «заметок», которые выглядят и работают следующим образом:

Эффект создается постепенно и работает в последних браузерах Webkit (Safari, Chrome), Firefox и Opera. Другие браузеры просто получают несколько желтых квадратов.


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

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
<ul>
  <li>
    <a href=»#»>
      <h2>Title #1</h2>
      <p>Text Content #1</p>
    </a>
  </li>
  <li>
    <a href=»#»>
      <h2>Title #2</h2>
      <p>Text Content #2</p>
    </a>
  </li>
  […]
</ul>

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

CSS, чтобы превратить это в желтые квадраты, прост:

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
34
35
*{
  margin:0;
  padding:0;
}
body{
  font-family:arial,sans-serif;
  font-size:100%;
  margin:3em;
  background:#666;
  color:#fff;
}
h2,p{
  font-size:100%;
  font-weight:normal;
}
ul,li{
  list-style:none;
}
ul{
  overflow:hidden;
  padding:3em;
}
ul li a{
  text-decoration:none;
  color:#000;
  background:#ffc;
  display:block;
  height:10em;
  width:10em;
  padding:1em;
}
ul li{
  margin:1em;
  float:left;
}

Мы сбрасываем вещи, которые браузер обычно дает нам, такие как поля и отступы, а также стиль списка, чтобы избавиться от маркеров списка.

Затем мы даем элементу UL некоторый отступ и устанавливаем его свойство overflow скрытым — это гарантирует, что при последующем перемещении элементов списка они будут содержаться в списке, а следующие элементы в документе автоматически очищают float.

Мы оформляем ссылку как желтый прямоугольник и перемещаем все элементы списка влево. Результатом является серия желтых полей для нашего списка:

Step1 серия желтых коробок

Это работает для любого браузера, включая IE6. Это также то, где мы прекращаем поддерживать этот браузер, так как мы не должны использовать визуальные эффекты, поддерживаемые современными технологиями, как устаревшие.


Теперь пришло время добавить тень к заметкам, чтобы они выделялись, и использовать в качестве шрифта заметки каракули, написанный от руки. Для этого мы используем Google Fonts API и шрифт, который они нам предоставляют, который называется «Reenie Beanie». Самый простой способ использовать этот API — поиграть с Google Previewer :

Средство предварительного просмотра шрифтов Google позволяет вам играть с API шрифтов и получать код CSS для копирования.

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

1
2
3
4
<link href=»http://fonts.googleapis.com/css?
family=Reenie+Beanie:regular»
rel=»stylesheet»
type=»text/css»>

Затем мы можем установить некоторые отступы для заголовков в заметках и установить шрифт абзацев для нового шрифта, который мы включили. Обратите внимание, что Reenie Beanie должна быть большой, чтобы ее можно было читать:

1
2
3
4
5
6
7
8
9
ul li h2{
  font-size:140%;
  font-weight:bold;
  padding-bottom:10px;
}
ul li p{
  font-family:»Reenie Beanie»,arial,sans-serif;
  font-size:180%;
}

Чтобы дать липким заметкам тень, чтобы они выделялись на странице, нам нужно применить box-shadow . Для этого мы должны добавить строку для каждого из различных браузеров, которые мы хотим поддерживать, к стилю ссылок:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
ul li a{
  text-decoration:none;
  color:#000;
  background:#ffc;
  display:block;
  height:10em;
  width:10em;
  padding:1em;
  /* Firefox */
  -moz-box-shadow:5px 5px 7px rgba(33,33,33,1);
  /* Safari+Chrome */
  -webkit-box-shadow: 5px 5px 7px rgba(33,33,33,.7);
  /* Opera */
  box-shadow: 5px 5px 7px rgba(33,33,33,.7);
}

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

Шаг 2 добавление новых шрифтов и теней

Отказ от ответственности: как наклон заметок, так и масштабирование, которое мы добавим на следующем шаге, уже были объяснены в прошлом, в этой статье Zurb , но не имели поддержки других браузеров, так как их не было во время письмо. Огромное спасибо им за публикацию этого трюка.

Чтобы наклонить элемент, вы используете свойство transform:rotate CSS3 , снова добавляя префикс для каждого из браузеров:

1
2
3
4
5
ul li a{
  -webkit-transform:rotate(-6deg);
  -o-transform:rotate(-6deg);
  -moz-transform:rotate(-6deg);
}

Это наклонит все ссылки на шесть градусов влево. Теперь, чтобы липкие заметки казались случайно наклоненными, мы можем использовать свойство nth-child в CSS3 :

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
ul li:nth-child(even) a{
  -o-transform:rotate(4deg);
  -webkit-transform:rotate(4deg);
  -moz-transform:rotate(4deg);
  position:relative;
  top:5px;
}
ul li:nth-child(3n) a{
  -o-transform:rotate(-3deg);
  -webkit-transform:rotate(-3deg);
  -moz-transform:rotate(-3deg);
  position:relative;
  top:-5px;
}
ul li:nth-child(5n) a{
  -o-transform:rotate(5deg);
  -webkit-transform:rotate(5deg);
  -moz-transform:rotate(5deg);
  position:relative;
  top:-10px;
}

Это наклоняет каждую вторую ссылку на четыре градуса вправо и смещает ее на пять пикселей сверху. Каждая третья ссылка наклоняется на три градуса влево и сдвигается на пять пикселей вверх. И каждая пятая ссылка поворачивается на пять градусов вправо и смещается на десять пикселей снизу. В целом это создает впечатление случайных заметок :

Step3, казалось бы, случайные заметки

Чтобы выделить заметку, мы используем большую тень и scale преобразование CSS3. Опять же, нам нужно определить их для каждого из браузеров:

01
02
03
04
05
06
07
08
09
10
ul li a:hover,ul li a:focus{
  -moz-box-shadow:10px 10px 7px rgba(0,0,0,.7);
  -webkit-box-shadow: 10px 10px 7px rgba(0,0,0,.7);
  box-shadow:10px 10px 7px rgba(0,0,0,.7);
  -webkit-transform: scale(1.25);
  -moz-transform: scale(1.25);
  -o-transform: scale(1.25);
  position:relative;
  z-index:5;
}

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

Step4 Масштабирование текущей заметки

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

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
ul li a{
  text-decoration:none;
  color:#000;
  background:#ffc;
  display:block;
  height:10em;
  width:10em;
  padding:1em;
  -moz-box-shadow:5px 5px 7px rgba(33,33,33,1);
  -webkit-box-shadow: 5px 5px 7px rgba(33,33,33,.7);
  box-shadow: 5px 5px 7px rgba(33,33,33,.7);
  -moz-transition:-moz-transform .15s linear;
  -o-transition:-o-transform .15s linear;
  -webkit-transition:-webkit-transform .15s linear;
}

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

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
ul li:nth-child(even) a{
  -o-transform:rotate(4deg);
  -webkit-transform:rotate(4deg);
  -moz-transform:rotate(4deg);
  position:relative;
  top:5px;
  background:#cfc;
}
ul li:nth-child(3n) a{
  -o-transform:rotate(-3deg);
  -webkit-transform:rotate(-3deg);
  -moz-transform:rotate(-3deg);
  position:relative;
  top:-5px;
  background:#ccf;
}

Чтобы увидеть разницу с последним шагом, вам нужно попробовать последнюю демонстрацию в браузере .

Шаг 5 Цветные и плавные изменения заметок

Там у вас есть это — плавно анимируемые и наклоненные заметки без использования изображений или JavaScript — поддерживаются Firefox, Opera, Safari и Chrome и возвращаются к набору желтых рамок в старых браузерах. Умно используя селектор nth-child и CSS-преобразования и переходы, мы сэкономили некоторые сценарии. Кроме того, Google Web Font API облегчает использование собственного шрифта. Использование наведения и фокуса для эффекта также означает, что пользователи клавиатуры также могут наблюдать результаты.

Загрузите пример заметок в виде почтового индекса.


Кристиан Хейлманн (Christian Heilmann) — международный евангелист-разработчик, работающий в Сети разработчиков Yahoo в прекрасном городе Лондон, Англия. Он написал две книги: « Начиная JavaScript с DOM Scripting и AJAX » и « Решения для веб-разработки ».