Полезное в сети

Всегда в теме

Статистика


Яндекс.Метрика


Онлайн всего: 4
Гостей: 4
Пользователей: 0

Рекомендуем



Главная » 2013 » Март » 19 » Оригинальные эффекты при наведении курсора мыши на объекты


23:17
Оригинальные эффекты при наведении курсора мыши на объекты

Оригинальные эффекты при наведении курсора мыши на объекты

Возможности CSS3 впечатляют. В данном уроке мы будем использовать их для реализации творческих замыслов.  В результате получится набор эффектов, которые сопровождают событие наведения курсора мыши на объект -  будет выводиться описание с использованием разных стилей для каждого примера.



Примечание: данные эффекты действуют только в современных браузерах, которые поддерживают СSS3.

demosourse


 Разметка HTML

 

Структура разметки весьма проста и интуитивна. Создаем контейнер, который будет содержать изображение и всю остальную информацию.

Внутри элемента view содержится элемент с классом mask, который реализует наш эффект с использованием CSS3. В элементе с классом mask содержится заголовок, описание и ссылка (Для некоторых примеров элемент с классом mask используется отдельно, а содержание помещается в контейнер с классом content).

1             <div class="view">

2                  <img src="image.gif" />

3                  <div class="mask">

4                     <h2>Заголовок</h2>

5                     <p>Текст сообщения</p>

6                 <a href="#" class="info">Кнопка</a>

7                  </div>

8             </div>

 

CSS

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

01           .view {

02               width: 300px;

03               height: 200px;

04               margin: 10px;

05               float: left;

06               border: 10px solid #fff;

07               overflow: hidden;

08               position: relative;

09               text-align: center;

10               box-shadow: 1px 1px 2px #e6e6e6;

11               cursor: default;

12               background: #fff url(../images/bgimg.jpg) no-repeat center center

13           }

14           .view .mask, .view .content {

15               width: 300px;

16               height: 200px;

17               position: absolute;

18               overflow: hidden;

19               top: 0;

20               left: 0

21           }

22           .view img {

23               display: block;

24               position: relative

25           }

26           .view h2 {

27               text-transform: uppercase;

28               color: #fff;

29               text-align: center;

30               position: relative;

31               font-size: 17px;

32               padding: 10px;

33               background: rgba(0, 0, 0, 0.8);

34               margin: 20px 0 0 0

35           }

36           .view p {

37               font-family: Georgia, serif;

38               font-style: italic;

39               font-size: 12px;

40               position: relative;

41               color: #fff;

42               padding: 10px 20px 20px;

43               text-align: center

44           }

45           .view a.info {

46               display: inline-block;

47               text-decoration: none;

48               padding: 7px 14px;

49               background: #000;

50               color: #fff;

51               text-transform: uppercase;

52               box-shadow: 0 0 1px #000

53           }

54           .view a.info:hover {

55               box-shadow: 0 0 5px #000

56           }

А теперь представим 10 эффектов. Открывайте демонстрационную страницу в отдельном окне или вкладке, смотрите и изучайте код.

 

Пример 1

Добавляем специальный класс  view-first к элементу с классом view для данного эффекта. Специальный класс будет добавляться в каждом примере к элементу с классом view (view-first, view-second, view-third, и так далее).

1             <div class="view view-first">

2                  

3             </div>

В данном примере будут использоваться базовые переходы для создания отличного эффекта.

01           .view-first img {

02               transition: all 0.2s linear;

03           }

04           .view-first .mask {

05               opacity: 0;

06               background-color: rgba(219,127,8, 0.7);

07               transition: all 0.4s ease-in-out;

08           }

09           .view-first h2 {

10               transform: translateY(-100px);

11               opacity: 0;

12               transition: all 0.2s ease-in-out;

13           }

14           .view-first p {

15               transform: translateY(100px);

16               opacity: 0;

17               transition: all 0.2s linear;

18           }

19           .view-first a.info{

20               opacity: 0;

21               transition: all 0.2s ease-in-out;

22           }

А теперь перейдем к основе нашего эффекта. Когда курсор мыши проходит над изображением мы используем задержку для имитации простой анимации. Свойство transition-delay, которое используется  в псевдо-классах hover, может вносить изменения для отличия от обычного класса. В данном примере мы не используем задержки в обычном классе, но в псевдо-классах hoverзапуск переходов немного задерживается. Когда курсор мыши покидает объект, будет использоваться значение по умолчанию 0s, и "восстановление" произойдет быстро.

01           .view-first:hover img {

02               transform: scale(1.1);

03           }

04           .view-first:hover .mask {

05               opacity: 1;

06           }

07           .view-first:hover h2,

08           .view-first:hover p,

09           .view-first:hover a.info {

10               opacity: 1;

11               transform: translateY(0px);

12           }

13           .view-first:hover p {

14               transition-delay: 0.1s;

15           }

16           .view-first:hover a.info {

17               transition-delay: 0.2s;

18           }

 

Пример 2

Во втором примере мы добавляем специальный класс view-second, но элемент с классом mask будет пустым, а содержание будет помещено в элемент с классом content.

1             <div class="view view-second">

2                 <img src="images/5.jpg" />

3                 <div class="mask"></div>

4                 <div class="content">

5                     <h2>Стиль #2</h2>

6                     <p>Описание</p>

7                     <a href="#" class="info">Кнопка</a>

8                 </div>

9             </div>

Здесь класс mask имеет другие атрибуты для построения эффекта. Мы собираемся использовать свойства трансформации (translate и rotate):

01           .view-second img {

02               transition: all 0.2s ease-in;

03           }

04           .view-second .mask {

05               background-color: rgba(115,146,184, 0.7);

06               width: 300px;

07               padding: 60px;

08               height: 300px;

09               opacity: 0;

10               transform: translate(265px, 145px) rotate(45deg);

11               transition: all 0.2s ease-in-out;

12           }

13           .view-second h2 {

14               border-bottom: 1px solid rgba(0, 0, 0, 0.3);

15               background: transparent;

16               margin: 20px 40px 0px 40px;

17               transform: translate(200px, -200px);

18               transition: all 0.2s ease-in-out;

19           }

20           .view-second p {

21               transform: translate(-200px, 200px);

22               transition: all 0.2s ease-in-out;

23           }

24           .view-second a.info {

25               transform: translate(0px, 100px);

26               transition: all 0.2s 0.1s ease-in-out;

27           }

Для нашего эффекта будет использоваться трансформация translate для перемещения элементов на место. А маска будет также вращаться. Элементы описания будут появляться с небольшой задержкой друг за другом.

01           .view-second:hover .mask {

02               opacity:1;

03               transform: translate(-80px, -125px) rotate(45deg);

04           }

05           .view-second:hover h2 {

06               transform: translate(0px,0px);

07               transition-delay: 0.3s;

08           }

09           .view-second:hover p {

10               transform: translate(0px,0px);

11               transition-delay: 0.4s;

12           }

13           .view-second:hover a.info {

14               transform: translate(0px,0px);

15               transition-delay: 0.5s;

16           }

 

Пример 3

В третьем примере мы будем использовать трансформации translate и rotate для вывода наших элементов описания:

01           .view-third img {

02               transition: all 0.2s ease-in;

03           }

04           .view-third .mask {

05               background-color: rgba(0,0,0,0.6);

06               opacity: 0;

07               transform: translate(460px, -100px) rotate(180deg);

08               transition: all 0.2s 0.4s ease-in-out;

09           }

10           .view-third h2{

11               transform: translateY(-100px);

12               transition: all 0.2s ease-in-out;

13           }

14           .view-third p {

15               transform: translateX(300px) rotate(90deg);

16               transition: all 0.2s ease-in-out;

17           }

18           .view-third a.info {

19               transform: translateY(-200px);

20               transition: all 0.2s ease-in-out;

21           }

Достаточно простые инструкции для получения эффекта.

01           .view-third:hover .mask {

02               opacity:1;

03               transition-delay: 0s;

04               transform: translate(0px, 0px);

05           }

06           .view-third:hover h2 {

07               transform: translateY(0px);

08               transition-delay: 0.5s;

09           }

10           .view-third:hover p {

11                   transform: translateX(0px) rotate(0deg);

12               transition-delay: 0.4s;

13           }

14           .view-third:hover a.info {

15               transform: translateY(0px);

16               transition-delay: 0.3s;

17           }

 

Пример 4

В четвертом примере будет использоваться простое масштабирование изображения и содержания с использованием трансформации scale. Для изображения будет установлена задержка 0.2s в стилях, но при наведении курсора задержка будет 0s. Поэтому при наведении курсора мыши эффект проявится немедленно, а при убирании курсора мыши будет задержка.

01           .view-fourth img {

02               transition: all 0.4s ease-in-out 0.2s;

03               opacity: 1;

04           }

05           .view-fourth .mask {

06               background-color: rgba(0,0,0,0.8);

07               opacity: 0;

08               transform: scale(0) rotate(-180deg);

09               transition: all 0.4s ease-in;

10               border-radius: 0px;

11           }

12           .view-fourth h2{

13               opacity: 0;

14               border-bottom: 1px solid rgba(0, 0, 0, 0.3);

15               background: transparent;

16               margin: 20px 40px 0px 40px;

17               transition: all 0.5s ease-in-out;

18           }

19           .view-fourth p {

20               opacity: 0;

21               transition: all 0.5s ease-in-out;

22           }

23           .view-fourth a.info {

24               opacity: 0;

25               transition: all 0.5s ease-in-out;

26           }

Простые инструкции для получения эффекта. CSS3 может все.

01           .view-fourth:hover .mask {

02               opacity: 1;

03               transform: scale(1) rotate(0deg);

04               transition-delay: 0.2s;

05           }

06           .view-fourth:hover img    {

07               transform: scale(0);

08               opacity: 0;

09               transition-delay: 0s;

10           }

11           .view-fourth:hover h2,

12           .view-fourth:hover p,

13           .view-fourth:hover a.info{

14               opacity: 1;

15               transition-delay: 0.5s;

16           }

 

Пример 5

В пятом примере содержание будет выскальзывать слева благодаря использованию свойства translate в сочетании с функцией перехода ease-in-out.

01           .view-fifth img {

02               transition: all 0.3s ease-in-out;

03           }

04           .view-fifth .mask {

05               background-color: rgba(146,96,91,0.3);

06               transform: translateX(-300px);

07               opacity: 1;

08               transition: all 0.4s ease-in-out;

09           }

10           .view-fifth h2{

11               background: rgba(255, 255, 255, 0.5);

12               color: #000;

13               box-shadow: 0px 1px 3px rgba(159, 141, 140, 0.5);

14           }

15           .view-fifth p{

16               opacity: 0;

17               color: #333;

18               transition: all 0.2s linear;

19           }

При наведении курсора мыши изображение выскальзывает вправо, и на его место слева выдвигается описание, как бы сдвигая картинку:

01           .view-fifth:hover .mask {

02               transform: translateX(0px);

03           }

04           .view-fifth:hover img {

05               transform: translateX(300px);

06               transition-delay: 0.1s;

07           }

08           .view-fifth:hover p{

09                   opacity: 1;

10                   transition-delay: 0.4s;

11           }

 

Заключение

CSS3 имеет огромный потенциал для создания различных визуальных эффектов. Вероятно, что вскоре мы сможем отказаться от использования JavaScript для простых эффектов.

Данный урок подготовлен для вас командой сайта ruseller.com
Источник урока: http://tympanus.net/codrops/2011/11/02/original-hover-effects-with-css3/
Перевел: Сергей Фастунов

Категория: CSS//HTML//JS | Просмотров: 1615 | Добавил: Wrecker | Рейтинг: 5.0/1
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]

Поиск

Вход

Гость
  • Вход
  • Регистрация
  • Читаемое

    Категории

    Заходи не жди