Делаем всплывающее окно

Ох уж эти окна …

Наверняка каждый из вас хоть раз, на просторах интернета, встречал всплывающие окна. Нет, не те, что открывают новое окно или вкладку вашего браузера, а те, что появляются на текущей странице.

Popup-окна, широко применимы в качестве: маркетинг-инструмента или способа предоставления информации. Зачастую с их помощью нам предлагают услугу, товар, рекламу, галерею или проигрыватель фильмов одним словом спектр применения всплывающих окон велик.

Ближе к делу…

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

План действий

  1. Создадим html структуру нашего окна
  2. Стилизуем с помощью CSS3
  3. Придадим движения, используя jQuery

Напутствия

Мы с вами создадим структуру окна (html), спрячем его от пользователя (css) и при определенных условиях (событиях) выведем на странице (jquery).

Вперед по пунктам плана

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

Шаг 1. Создадим html структуру нашего окна

<div id="pp">
    <div class="pp-header"></div>
    <div class="pp-content"></div>
    <div class="pp-footer"></div>
</div>

Наше Popup-окно состоит из трех основных частей: pp-header - область заголовка, pp-content - основная часть, pp-footer - нижняя часть окна,форма подписки.

Наполняем всплывающее окно содержимым:

<div id="pp">
    <div class="pp-header">
        <h3>Хотите создать сайт? Подпишитесь на бесплатный курс:</h3>
    </div>
    <div class="pp-content">
        <div class="pp-content-main">
            <h4>Из курса ты узнаешь:</h4>
            <ul>
                <li><i class="fa fa-check"></i> Как сделать локальный хостинг;</li>
                <li><i class="fa fa-check"></i> Как установить WordPress;</li>
                <li><i class="fa fa-check"></i> Как установить и настроить шаблоны и плагины;</li>
                <li><i class="fa fa-check"></i> Как создавать современные сайты;</li>
                <li><i class="fa fa-check"></i> Как создать домен и установить сайт на хостинг.</li>
            </ul>
        </div>
        <div class="pp-content-sidebar">
            <i class="fa fa-wordpress"></i>
        </div>
    </div>
    <div class="pp-footer">
        <form>
            <input type="text" placeholder="Ваше имя" />
            <input type="text" placeholder="email@email.com" />
            <input type="submit" value="Подписаться на курс" />
        </form>
    </div>
</div>

<div id="pp-bg"></div>

Обратите внимание на

<div id="pp-bg"></div>

данный блок будет делать заливку окна браузера серым полупрозрачным фоном.

Шаг 2. Пропишем стили для всплывающего окна

Отцентрируем наше окно относительно краев окна браузера и спрячем за верхней границей. Зададим размеры основным элементам и стилизуем иконки FontAwesome

 

#pp {
    position: fixed;
    top:-550px; left:50%;
    margin-left:-285px;
    width: 570px;
    background:#f0f0f0;
    z-index:999999;
    box-shadow: 0px 0px 10px rgba(0,0,0,0.5);
}

#pp .pp-header, #pp .pp-footer{
    padding: 10px;
    background: #3D9970; 
    box-shadow: inset 0px -3px 0px rgba(0, 0, 0, 0.2);
}
#pp .pp-header h3{
    margin:0;
    font: normal 1.7em/1.3 Verdana;
    color: #fff;
    text-shadow: 1px 2px 2px rgba(0, 0, 0, 0.7);
    text-align: center;
}
#pp .pp-content{ background: #fff; padding: 20px 10px;}
#pp .pp-content-main{
    width: 340px;
    padding: 0 0 10px 10px;
    margin-right: 10px;
    display: inline-block;
    vertical-align: top;
}
#pp .pp-content-main ul,
#pp .pp-content-main h4 {padding-left: 0; margin: 0;}
#pp .pp-content-main h4 { font-size: 18px; margin:0 0 5px 20px;}
#pp .pp-content-main li {list-style: none;}
#pp .pp-content-main li i {margin-right: 5px;}
#pp .pp-content-sidebar{
    width: 170px;
    display: inline-block;
    vertical-align: top;
}
#pp .pp-content-sidebar i {font-size: 184px; color: #036;}
#pp .pp-footer { background: #EAEAEC; }
#pp .pp-footer input {
    padding: 8px 12px;
    border-radius: 3px;
    outline: none;
    border: 1px solid #dfdfdf;
}
#pp-bg {
    position: fixed;
    top:0; left:0;
    width:100%; height: 100%;
    background: rgba(30,30,30,0.5);
    z-index:99999;
    display: none;
}
.btn, .btn:visited {
    position: relative;
    display: inline-block; 
    outline: none; border: none;
    padding: 5px 10px 6px; 
    background: #3D9970; 
    box-shadow: inset 0px -3px 0px rgba(0, 0, 0, 0.2);
    color: #fff; 
    cursor: pointer;
}
.btn:hover { background-color: #339970; }
.btn:active { top: 1px; }

Придадим движения, используя jQuery

$(document).ready(function(){
    var pp     = $("#pp"),
        bg     = $("#pp-bg");

    function pp_hide(pp, bg){
        pp.animate({top: "-550px"}, 1000, function(){bg.fadeOut(1000);});
    }

    function pp_show(pp, bg){
        pp.animate({top: "150px"}, 2000);
        bg.fadeIn(1000).click(function(){pp_hide(pp, bg)});
    }

    pp_show(pp, bg);
});

Здесь мы скрываем наше окно позиционируя его вверх на высоту самого блока и при загрузки страницы анимируем его плавное появление 🙂
Вот такой вот простенький пример получился.

Выводы

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

(4 голосов. Рейтинг: 5,00 из 5)
Загрузка...

Метки: , ,

Рубрика: CSS, HTML, jQuery

Комментарии (9)

| RSS комментария

  1. Здравствуйте, скажите что куда вставлять. Буду очень признателен.

    • Дмитрий Британ:

      Здравствуйте, скачайте архив с примером, так вы поймете где и что должно находиться 🙂

      • Олеся:

        Оригинальный ответ. Человек же нормально спросил. Обязательно нужно было в@#бнуться?

        • Дмитрий Британ:

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

  2. Светлана:

    Интересно…
    А форма-то не отправляется.
    И вообще обработчик формы нигде не фигурирует.

  3. кнопка клёвая )))

  4. Ромк:

    Кнопка и правда крутая) Так до конца и не дошел))

  5. Сергей:

    Здравствуйте. Я не продвинутый программист и поэтому хотел у Вас спросить, как выводить всплывающее окно в нужном месте страницы сайта? Спасибо.

Оставьте свой комментарий