Всплывающие уведомления – CSS анимация
Karina | 04.12.2014
В данном уроке мы рассмотрим способ создания маленьких всплывающих сообщений с использованием CSS. Такие окошки могут пригодиться, когда надо красиво и ненавязчиво уведомить посетителя о результате каких-то действий.
Вы можете взглянуть на демо (работает только в тех браузерах, которые поддерживают CSS3 Animations), а также скачать архив с файлами для дальнейшего изучения.
HTML
На странице находятся три блока <div> с классами notif и notif-color-1, notif-color-2, notif-color-3 – для каждого окошка трех цветов. В блоке указываем содержание (текст сообщения) и добавляем внутрь еще один <div> для прогресс-бара (класс notif-progress):
<div class="notif notif-color-1"> <p>Данные сохранены!</p> <div class="notif-progress"></div> </div> <div class="notif notif-color-2"> <p>Комментарий опубликован.</p> <div class="notif-progress"></div> </div> <div class="notif notif-color-3"> <p>У Вас 1 новое сообщение.<p> <div class="notif-progress"></div> </div>
CSS
Так выглядит стиль для всплывающих уведомлений, текста сообщений, иконки и прогресс-бара:
.notif {
width: 280px;
position: relative;
margin: 0 auto 25px auto;
padding: 30px 20px;
text-align: left;
border-radius: 12px;
opacity: 0;
-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
filter: alpha(opacity=0);
cursor: default;
display: none;
}
.notif p {
text-align: left;
font-weight: bold;
font-size: 16px;
margin: 0;
}
.notif p:before {
text-align: center;
border: 3px solid rgba(255, 255, 255, 1);
margin-top: -18px;
top: 50%;
right: 25px;
width: 30px;
content: '!';
font-size: 30px;
color: rgba(255, 255, 255, 1);
position: absolute;
height: 30px;
line-height: 30px;
border-radius: 50%;
}
.notif-progress {
width: 0;
height: 10px;
background: rgba(255,255,255,0.5);
position: absolute;
bottom: 5px;
left: 3%;
border-radius: 12px;
}
Установим цвета для каждого окошка:
.notif-color-1 {
background: #F89406;
}
.notif-color-1 p {
color: #FFF;
}
.notif-color-2 {
background: #59ABE3;
}
.notif-color-2 p {
color: #FFF;
}
.notif-color-3 {
background: #00B16A;
}
.notif-color-3 p {
color: #FFF;
}
При нажатии на кнопку look-btn будет начинаться анимация:
input.look-btn:checked ~ section .notif {
display: block;
-webkit-animation: fadeOut 3s linear forwards;
-moz-animation: fadeOut 3s linear forwards;
-o-animation: fadeOut 3s linear forwards;
-ms-animation: fadeOut 3s linear forwards;
animation: fadeOut 3s linear forwards;
}
input.look-btn:checked ~ section .notif .notif-progress {
-webkit-animation: runProgress 2s linear forwards 0.7s;
-moz-animation: runProgress 2s linear forwards 0.7s;
-o-animation: runProgress 2s linear forwards 0.7s;
-ms-animation: runProgress 2s linear forwards 0.7s;
animation: runProgress 2s linear forwards 0.7s;
}
Эффект затухания выглядит следующим образом:
fadeOut {
0% { opacity: 0; }
10% { opacity: 1; }
90% { opacity: 1; -webkit-transform: translateY(0px);}
99% { opacity: 0; -webkit-transform: translateY(-25px);}
100% { opacity: 0; }
}
…и анимация для прогресс-бара:
runProgress {
0%{ width: 0%; }
100%{ width: 94%; }
}
Вот таким довольно несложным способом можно создать аккуратные всплывающие сообщения.
Творческих успехов вам!
-
Очень полезный урок, добавила в свои заметки, думаю будет замечательной шпаргалкой 🙂
-
Спасибо, очень прикольно. А как сделать чтобы уведомления появлялись сразу при открытии странички (без нажатия на кнопку).
Комментарии