31 мая 2015
4876
информативные сообщения на JQuery и CSS, выпадающие предупреждения

Информативные сообщения на сайте на JQuery и CSS

JQuery
Демонстрация » Скачать »

Всем привет! Недавно поступила задача динамически вывести сообщения на события, которые вызывает посетитель сайта. Давайте попробуем создать информативные сообщения на сайте при помощи JQuery и CSS.

Всплывающие окна имеют широкий диапазон применений — от полезного для потребителя программного обеспечения до злоумышленного.

Наиболее широкое применение всплывающие окна приобрели для размещения рекламных сообщений и информативных оповещений в сети. Содержащие рекламу всплывающие окна открываются на переднем (pop-up) или на заднем фоне (pop-under). Последнее является более изощрённым приёмом распространения нежелательных для пользователя рекламных сообщений, поскольку не привлекает внимание пользователя до тех пор, пока активное окно не будет закрыто, и затрудняет возможность определения источника появления всплывающего окна.

 

HTML

 

<div class="info message">
  <h3>Привет!</h3>
  <p>Это обычное информационное сообщение)</p>
</div>

<div class="error message">
  <h3>Ой-ой-ой ОШИБКА!(</h3>
  <p>Это обычное сообщение об ошибке)</p>
</div>

<div class="warning message">
  <h3>Внимание внимание!</h3>
  <p>Это обычное сообщение о предупреждении)</p>
</div>

<div class="success message">
  <h3>Ура ура!</h3>
  <p>Это обычное сообщение об удачном выполнении задачи)</p>
</div>

<div id="main-container">
 
<p>ЖМИ!!!</p>

<ul id="trigger-list">
 <li><a href="#" class="trigger info-trigger">Все нормально...</a></li>
 <li><a href="#" class="trigger error-trigger">Все плохо(</a></li>
 <li><a href="#" class="trigger warning-trigger">Все неопределено...</a></li>
 <li><a href="#" class="trigger success-trigger">Все отлично)</a></li>
</ul>

</div>

 

В данном коде, как вы видете, приведены такие виды сообщений, как: информационное сообщение, сообщение об ошибке, предупреждение и сообщение об успешном выполнении операции.

Далее пропишем стили, а именно выполнение анимированных диагональных полосок сообщений.

 

CSS

 

.message
{
-webkit-background-size: 40px 40px;
-moz-background-size: 40px 40px;
background-size: 40px 40px;			
background-image: -webkit-gradient(linear, left top, right bottom,
			color-stop(.25, rgba(255, 255, 255, .05)), color-stop(.25, transparent),
			color-stop(.5, transparent), color-stop(.5, rgba(255, 255, 255, .05)),
			color-stop(.75, rgba(255, 255, 255, .05)), color-stop(.75, transparent),
			to(transparent));
background-image: -webkit-linear-gradient(135deg, rgba(255, 255, 255, .05) 25%, transparent 25%,
		transparent 50%, rgba(255, 255, 255, .05) 50%, rgba(255, 255, 255, .05) 75%,
		transparent 75%, transparent);
background-image: -moz-linear-gradient(135deg, rgba(255, 255, 255, .05) 25%, transparent 25%,
		transparent 50%, rgba(255, 255, 255, .05) 50%, rgba(255, 255, 255, .05) 75%,
		transparent 75%, transparent);
background-image: -ms-linear-gradient(135deg, rgba(255, 255, 255, .05) 25%, transparent 25%,
		transparent 50%, rgba(255, 255, 255, .05) 50%, rgba(255, 255, 255, .05) 75%,
		transparent 75%, transparent);
background-image: -o-linear-gradient(135deg, rgba(255, 255, 255, .05) 25%, transparent 25%,
		transparent 50%, rgba(255, 255, 255, .05) 50%, rgba(255, 255, 255, .05) 75%,
		transparent 75%, transparent);
background-image: linear-gradient(135deg, rgba(255, 255, 255, .05) 25%, transparent 25%,
		transparent 50%, rgba(255, 255, 255, .05) 50%, rgba(255, 255, 255, .05) 75%,
		transparent 75%, transparent);
			
-moz-box-shadow: inset 0 -1px 0 rgba(255,255,255,.4);
-webkit-box-shadow: inset 0 -1px 0 rgba(255,255,255,.4);		
box-shadow: inset 0 -1px 0 rgba(255,255,255,.4);
width: 100%;
border: 1px solid;
color: #fff;
padding: 15px;
position: fixed;
_position: absolute;
text-shadow: 0 1px 0 rgba(0,0,0,.5);
-webkit-animation: animate-bg 5s linear infinite;
-moz-animation: animate-bg 5s linear infinite;
}

.info
{
background-color: #4ea5cd;
border-color: #3b8eb5;
}

.error
{
background-color: #de4343;
border-color: #c43d3d;
}

.warning
{
background-color: #eaaf51;
border-color: #d99a36;
}

.success
{
background-color: #61b832;
border-color: #55a12c;
}

.message h3
{
margin: 0 0 5px 0;													 
}

.message p
{
margin: 0;													 
}

@-webkit-keyframes animate-bg
{
from {
background-position: 0 0;
}
to {
background-position: -80px 0;
}
}


@-moz-keyframes animate-bg 
{
from {
background-position: 0 0;
}
to {
background-position: -80px 0;
}
}


#trigger-list
{
text-align: left;
margin: 50px 0;
padding: 0;
}

#trigger-list li
{
display: inline-block;
*display: inline;
zoom: 1;
}

#trigger-list .trigger{
background: #91bd09; url(alert-overlay.png) repeat-x;
display: inline-block; 
padding: 5px 10px 6px; 
color: #fff; 
text-decoration: none;
-moz-border-radius: 5px; 
-webkit-border-radius: 5px;
-moz-box-shadow: 0 1px 3px rgba(0,0,0,0.5);
-webkit-box-shadow: 0 1px 3px rgba(0,0,0,0.5);
text-shadow: 0 -1px 1px rgba(0,0,0,0.25);
border-bottom: 1px solid rgba(0,0,0,0.25);
position: relative;
cursor: pointer;
}

#trigger-list .trigger:hover
{
background-color: #749a02;
}

 

Изначально спрячем все сообщения при помощи фиксированного позиционирования (значение absolute используется только для IE6, так как он не поддерживает position:fixed ).

 

position: fixed;
_position: absolute; /* IE6 */

 

И так, CSS готов, приступим к jQuery. Сначала создадим массив сообщений которые будем обрабатывать и выводить:

 

JavaScript

 

var myMessages = ['info','warning','error','success'];

 

Далее рассмотрим функцию, которая скрывает все сообщения.

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

 

JavaScript

 

function hideAllMessages()
{
		 var messagesHeights = new Array(); //массив с высотой всплывающих сообщений

		 for (i=0; i<myMessages.length; i++)
		 {
				  messagesHeights[i] = $('.' + myMessages[i]).outerHeight();
				  $('.' + myMessages[i]).css('top', -messagesHeights[i]); //выводим сообщение из окна
		 }
}

 

Функция showMessage вызывается при нажатии на кнопку, она и отвечает за анимацию сообщения и точку остановки на экране, так как всплывающие сообщения показываются под шапкой (это хорошо видно на демонстрации).

 

JavaScript

 

function showMessage(type)
{
	$('.'+ type +'-trigger').click(function(){
		  hideAllMessages();
		  $('.'+type).animate({top:"100"}, 500);
	});
}

 

После загрузки страницы скрываем все сообщения: hideAllMessages(). Затем при нажатии на соответствующую кнопку выводим сообщение:

 

JavaScript

 

$(document).ready(function(){

         //Скрываем все
         hideAllMessages();

         //Выводим сообщение
         for(var i=0;i<myMessages.length;i++)
         {
            showMessage(myMessages[i]);
         }

         //Скрываем сообщение при нажатии на него
         
                  $('.message').click(function(){
                  $(this).animate({top: -$(this).outerHeight()}, 500);
          });

});