Библиотека jGrowl или делаем уведомления как на хабре

1 нояб. 2011 г., 08:56:50  1576


jgrowl
jgrowl

Я являюсь поклоником Ajax и вообще люблю динамически изменяющиеся контенты, всякие динамические меню, голосования, модальные окна и д.р. Но больше всего не люблю когда страница перегружена ими. Т.е. невозможно выполнить какое-то действие или перейти на желаемую страницу. Как правило пользователь покидает такой ресурс или в крайнем случае пытается зайти на него снова. В этой заметке мы попробуем сделать небольшое окошко-уведомление, которое уведомит пользователя о том или ином ответе от сервера.

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

jgrowl
jgrowl

Для создания такого красивого уведомления нам потребуется библиотека JQuery, ее можно взять с сайт jquery.com

http://jqueryjs.googlecode.com/files/jquery-1.3.2.min.js  размер 55.9 Kб =)

И нам потребуется сама библиотека jGrowl, ее можно взять с сайта разработчика

http://www.stanlemon.net/projects/jgrowl.html размер ~5-7 Кб

Пример использования: 

Для начала нам нужно подключить стили:

В стилях прописано оформление блока. Оформление выводимого текста можно ключить непосредсвенно в текст сообщения. 

Подключаем библиотеки JQuery и jGrowl:

<script src="/jquery.js" type="text/javascript">

<script type="text/javascript" src="../jquery.jgrowl.js"> 

Сам код блока выглядит следующим образом:

      $.jGrowl("Hello world!");
      $.jGrowl("Это сообщение исчезнет через 1сек.", { life: 1000 });
      $.jGrowl("Уведомление с хидером, не исчезает.", { header: 'A Header', sticky: true }); 

Можно использовать вместо $.jGrowl jQuery.jGrowl если используются совместно разные библиотеки, тут уже дело вкуса и отдельная тема для обсуждения =) 

jGrowl Опции: 

Спасибо,iliacmd, за составление описания, http://iliacmd.habrahabr.ru/blog/52271/  

header [ Пустая строка ]
Эта опция задает заголовок сообщения. Пример:

$.jGrowl('Текст уведомления', {Header: 'Заголовок сообщения'} );

sticky [ false ]
Если установлено true, то уведомление будет jотображаться на экране пока не будет закрыто пользователем. Если установлено false то сообщение исчезнет сразу после истечения срока жизни, который устанавливается с помощью параметра life.

glue [ after ]
Эта опция определяет, как будет вставляться уведомление в jGrowl контейнер. Если указано after, то уведомление вставляется после уведомлений в контейнере. Если before, то перед уведомлениями в контенере.

position [ top-right ]
Определяет класс применяемый к jGrowl конейнеру и управляющий его положением на экране. По умолчанию доступно несколько опций — это top-left, top-right, bottom-left, bottom-right, center. Эта опция должна быть установлена до запуска метода вызывающего уведомление.
Пример:
Для того чтобы, уведомления выводились в центре экрана надо написать так:

$.jGrowl.defaults.position = 'center';  

theme [ default ]
Определяет CSS класс определяющий внешний вид выводимого уведомления.

      div.jGrowl div.red_theme {
      background-color: #F00;
      color: #FFF;
      }
      Назначаем тему уведомлению
     $.jGrowl('Уведомление', { theme: 'red_theme'});

corners [10px]
Eсли подключен плагин jQuery скривляющий углы, то спомощью данной опции можно регулировать радиус скругления углов для уведомления.
Плагин брать здесь: CORNERS


check [1000]
Определяет частоту с которой jGrowl будет проверять сообщения, которые подлежат удалению c экрана. Оптимальным вариантом для этого параметра будет, минимальное время жизни уведомления. В данном примере это 3 секунды.

$.jGrowl.defaults.check = 3000;

life [3000]
Определяет время жизни уведомления на экране. Т.е время по прошествии которого jGrowl будет считать его подлежащим к очистке и после которго оно будет удалено в ходе очередной проверки.

speed [ normal ]
Определяет скорость анимации при открытии и закрытии уведомления

easing [ swing ]
Определяет способ анимации при открытии и закрытии уведомления. По умолчанию доступны все способы анимации, что и для метода animate библиотеки jquery.

closer [ true ]
Определяет должна ли выводится кнопка close-all, когда на экране появляется более одного уведомления, true — выводится, false — не выводится. Так же может быть назанчена функция обратного вызова, которая будет срабатывать при нажатии на кнопку close-all.

$.jGrowl.defaults.closer=true;

closeTemplate [amp;times;]
Опция содержит спец символ, который используется для кнопки закрыть для уведомления. Поумолчанию используется спец символ amp;times; который соответствует знаку умножения.

$.jGrowl("Hello world!", {closeTemplate: 'A'});

closerTemplate [[ close all ]]
Это содержимое используется для создания ссылки close-all которая по умолчанию добавляется с низу jGrowl контейнера, и испоьзуется для закрытия всех уведомлений вконтейнере.

$.jGrowl.closerTemplate = "Закрыть все уведомления";

log [ function(e,m,o) {} ]
Определяет функцию обратного вызова которая срабатывает прежде других при появлении уведомления. Это предоставляет пользователю удобный механиз ведения лога всех уведомлений jGrowl. Функция принимает три параметра: уведомление как DOM элемент, сообщение уведомления и опции.

$(e).attr('id') — идентификатор id уведомления
(new Date()).getTime() — дата создания уведомления
m — сообщение уведомления
o.theme — тема уведомления 
      $.jGrowl.defaults.log = function(e,m,o) {
      $('#logs').append("" + $(e).attr('id') + " " + (new Date()).getTime() + ": " + m + " (" + o.theme + ")")
      } 

beforeOpen [ function(e,m,o) {} ]
Определяет функцию обратного вызова, которая будет срабатывать перед тем, как откроется новое уведомление. Функция принимает три параметра: уведомление как DOM элемент, сообщение уведомления и опции.

open [ function(e,m,o) {} ]
Определяет функцию обратного вызова, которая будет срабатывать при открытии нового уведомления. Функция принимает три параметра: уведомление как DOM элемент, сообщение уведомления и опции.

beforeClose [ function(e,m,o) {} ]
Определяет функцию обратного вызова, которая будет срабатывать перед закрытием уведомления. Функция принимает три параметра: уведомление как DOM элемент, сообщение уведомления и опции.

close [ function(e,m,o) {} ]
Определяет функцию обратного вызова, которая будет срабатывать при открытии нового уведомления. Функция принимает три параметра: уведомление как DOM элемент, сообщение уведомления и опции.

При закрытии уведомления, высветит alert с тем-же сообщением 

      $.jGrowl.('Hellow World', close: function(e,m,o){
      alert(m);
      } 

animateOpen [{ opacity: 'show' }]
Анимационное свойство используемое при открытии уведомления (по умолчанию «проявление»).

animateClose [ { opacity: 'hide' } ]
Анимационное свойство используемое при закрытии уведомления (по умолчанию «затухание»).

Ссылки

Примеры доступны на сайте разработчика http://stanlemon.net/projects/jgrowl.html
Аналог jGrowl — FaceBox http://famspam.com/facebox