Уроки:


  
HTML
  
  
CSS
  
  
PHP
  
  
JavaScript
  
  
jQuery
  
  
PHP+MySQL
  
  
Ajax
  

  Разделы:


  В помощь:


  Ещё:



  Авторизация:


  логин:   
  пароль: 
Советы программисту:
Отношения с заказчиком станут менее формальными, если программа начисления зарплаты вместо 'ИТОГО' будет печатать 'ИГОГО'

  Тренажер интуиции:


Тренажер интуиции


  Видеокурсы:


Бесплатный видеокурс: "Cайт-визитка за 1 день"

видеокурс: Сайт-визитка за один день



  Опрос:



  Топ комментаторов:


40

Говорят, что перед смертью админ вспоминает все свои пароли.

  Моя группа в контакте:



Модальные всплывающие окна с помощью CSS

Во-первых, давайте создадим файл HTML и назовем его «demo.html». Как вы можете видеть — структура довольно простая, если брать в расчет именно разметку модальных окон и кнопок (ссылок) для их вызова. Каждая панель (всплывающее окно), назовем ее так, содержит ничто иное как блочный элемент DIV с определенным содержанием внутри, ну и конечно же кнопку «Закрыть». Дальше приведу пример кода демо-страницы:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; Windows-1251">
<meta name="keywords" content="модальное окно" />
<meta name="description" content="всплывающие модальные окна" />
 <link rel="stylesheet" type="text/css" href="style.css" media="screen" />
<title>Модальные всплывающие окнa</title>
</head>
<body>

<h2>Модальные всплывающие окна с помощью CSS3 без Javascript</h2>
<center>
<!-- Ссылки на вызов моалных окон-->
 <p><a href="#win1" id="win_pop">Открыть модельное окно!</a></p><br/>

 <h2>Нажмите на изображение чтобы посмотреть масштабную фотграфию в модальном окне.</h2>
				
 <p><a href="#win2" id="win_pop"><img title="coloboc" src="imges/coloboc.png" width="128" height="110" alt="coloboc" /></a><p><br/>
</center>

<!-- Модальное окно №1 -->

        <a href="#x" class="overlay" id="win1"></a>
        <div class="popup">
<img src="imges/user.png" width="100" height="102" alt="Веб-приложения" style="float:left;margin:5px 10px 5px 0;" />
<p>Противостояние жизненно перечеркивает азимут, это довольно часто наблюдается у сверхновых звезд второго типа.
 Параллакс, несмотря на внешние воздействия, отражает центральный экватор, а оценить проницательную способность 
 вашего телескопа поможет следующая формула: Mпр.= 2,5lg Dмм + 2,5lg Гкрат + 4. Спектральный класс, и это следует
 подчеркнуть, гасит вращательный лимб, и в этом вопросе достигнута такая точность расчетов, что, начиная с того 
 дня, как мы видим, указанного Эннием и записанного в "Больших анналах", было вычислено время предшествовавших 
 затмений солнца, начиная с того, которое в квинктильские ноны произошло в царствование Ромула. Угловое расстояние
 иллюстрирует экваториальный возмущающий фактор, это довольно часто наблюдается у сверхновых звезд второго типа.
 Дип-скай объект, после осторожного анализа, притягивает радиант – север вверху, восток слева. Это можно записать
 следующим образом: V = 29.8 * sqrt(2/r – 1/a) км/сек, где уравнение времени решает популяционный индекс, однако 
 большинство спутников движутся вокруг своих планет в ту же сторону, в какую вращаются планеты. </p>
        <a class="close"title="Закрыть" href="#close"></a>
        </div>
		
<!-- Модальное окно №2 -->

        <a href="#x" class="overlay" id="win2"></a>
        <div class="popup">
<center><img title="Гипперреализм" src="imges/coloboc.png" alt="coloboc" /></center>
<a class="close" title="Закрыть" href="#close"></a>
        </div>

</body>
</html>
посмотреть

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

Далее важно подготовить необходимые стили для нашего модального окошка, пропишем их в отдельном файле «style.css»

Файл style.css:
h2 {
font: 28px Tahoma, Helvetica, Arial, Sans-Serif;
text-align: center;
color: #222; text-shadow: 0px 2px 3px #555;
}
/* Базовые стили модального окна  */
.overlay {
    background-color: rgba(0, 0, 0, 0.7);
    bottom: 0;
    cursor: default;
    left: 0;
    opacity: 0;
    position: fixed;
    right: 0;
    top: 0;
    visibility: hidden;
    z-index: 1;
    -webkit-transition: opacity .5s;
    -moz-transition: opacity .5s;
    -ms-transition: opacity .5s;
    -o-transition: opacity .5s;
    transition: opacity .5s;
}
.overlay:target {
    visibility: visible;
    opacity: 1;
}
.popup {
    background-color: #fff;
    border: 3px solid #fff;
    display: inline-block;
    left: 30%;
    opacity: 0;
    padding: 15px;
    position: fixed;
    text-align: justify;
	font: 14px Helvetica, Arial, Sans-Serif;
    top: 25%;
    visibility: hidden;
    z-index: 10;
	
    -webkit-transform: translate(-17%, -17%);
    -moz-transform: translate(-17%, -17%);
    -ms-transform: translate(-17%, -17%);
    -o-transform: translate(-17%, -17%);
    transform: translate(-17%, -17%);

    -webkit-border-radius: 10px;
    -moz-border-radius: 10px;
    -ms-border-radius: 10px;
    -o-border-radius: 10px;
    border-radius: 10px;

    -webkit-box-shadow: 0 1px 1px 2px rgba(0, 0, 0, 0.4) inset;
    -moz-box-shadow: 0 1px 1px 2px rgba(0, 0, 0, 0.4) inset;
    -ms-box-shadow: 0 1px 1px 2px rgba(0, 0, 0, 0.4) inset;
    -o-box-shadow: 0 1px 1px 2px rgba(0, 0, 0, 0.4) inset;
    box-shadow: 0 1px 1px 2px rgba(0, 0, 0, 0.4) inset;

    -webkit-transition: opacity .5s, top .5s;
    -moz-transition: opacity .5s, top .5s;
    -ms-transition: opacity .5s, top .5s;
    -o-transition: opacity .5s, top .5s;
    transition: opacity .5s, top .5s;
}
.overlay:target+.popup {
    top: 25%;
    opacity: 1;
    visibility: visible;
}
.close {
    background-color: rgba(0, 0, 0, 0.8);
    height: 30px;
    line-height: 30px;
    position: absolute;
    right: 0;
    text-align: center;
    text-decoration: none;
    top: -15px;
    width: 30px;

    -webkit-border-radius: 15px;
    -moz-border-radius: 15px;
    -ms-border-radius: 15px;
    -o-border-radius: 15px;
    border-radius: 15px;
}
.close:before {
    color: rgba(255, 255, 255, 0.9);
    content: "X";
    font-size: 24px;
    text-shadow: 0 -1px rgba(0, 0, 0, 0.9);
}
.close:hover {
    background-color: rgba(64, 128, 128, 0.8);
}
.popup p, .popup div {
    padding: 0px 5px 0px 5px;
}

Как видите, все довольно просто. Если все проделаете правильно, то получите замечательное модальные всплывающее окно, в которое сможете разместить любой контент, будь то элементы текста, фотографии, формы регистрации, или же видео из любого источника.

Посмотреть, что получилось

Скачать одним архивом

Проверьте свою интуицию:


Мобильную версию можно скачать в google play

Комментарии


Ipman
спасибо ОГРОМНОЕ! отличная статья!
2013-12-15 00:17
Татьяна
Подскажите, а куда необходимо закинуть фаил style.css?
2014-01-30 04:57
Рядом с файлом: "demo.html"
То есть, в той-же папке...
Так называемый "корень Вашего сайта", в той папке где хранятся все основные файлы Вашего сайта.
2014-01-30 17:41
Виталий
Спасибо! Прикручу к своему сайту
2014-02-05 15:22
Искандар
на гугл хроме не работает, появляется и сразу исчезает окно
2014-05-18 22:33
У меня установлена последняя версия хрома, и вроде работает все нормально...
2014-05-18 22:53
Михаил
Все работает! Спасибо!
Однако, можно ли вызывать данное модальное окно через button? попытался сделать так: <a href="#win1"><button>enter</button></a> - модальное окно не появляется...
2014-06-04 11:29
Кнопку необходимо поместить в форму, а на форму повесить переход по ссылке: <form action=’#win1’><button>enter</button></form>
2014-06-04 13:20
Михаил
А как сделатьтак? если имеется:
<button type="submit" name="send" value="enter"></button>

Сходу не получилось заделать модальное окно по нажатию кнопки submit.
2014-06-04 15:50
Точно так-же, помешаем "submit" в форму а форму ссылаем на id окна:
<form action=’#win1’><button type="submit" name="send" value="enter"></button></form>
2014-06-04 16:29
Михаил
А это куда?

<a href="#x" class="overlay" id="win1"></a>
        <div class="popup">
<img src="imges/user.png" width="100" height="102" alt="Веб-приложения" style="float:left;margin:5px 10px 5px 0;" />
<p>Прот....неты. </p>
        <a class="close"title="Закрыть" href="#close"></a>
        </div>
2014-06-04 16:39
В любом месте, между тегами "body"
<html>
<head></head>
<body>
!!!сюда!!!
</body>
</html>
2014-06-04 16:43
Екатерина
Спасибо за урок. Работает.
Но есть вопрос.
Как убрать полосу прокрутки у подложки у вашего модального окна? Именно в момент открытия модального окна.
2014-10-13 16:54
Не совсем понял вопрос, в моем примере я ни где не нашел полосу прокрутки.
2014-10-13 17:13
Екатерина
Верно, в вашем примере полосы прокрутки нет. Я столкнулась с этой проблемой у себя, модальное окно сделано по вашему примеру. Имеется ввиду полоса прокрутки на самой странице. Когда открывается модальное окно, то оно как бы перемещается вместе со станицей. Суть в том, чтобы, когда мы открываем модальное окно, пользоваться прокруткой на странице нельзя было. Заранее спасибо за ответ.
2014-10-13 19:21
Екатерина, к сожалению Вам не удастся решить эту проблему одним-лишь css. Вам придется прибегнуть к JavaScript или jQuery.

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

Если Вам это нужно реализовать в ближайшее время, то Вы можете найти в интернете кучу готовых решений. Например по запросу:
"Как убрать скроллинг при открытом модальном окне"
2014-10-13 20:25
Борис
Здравствуйте,Саша!
Спасибо за полезный урок.

В Вашем примере:
если окно открыто, то http://www.web-shpargalka.ru/modal_ocno/demo.html#win1

при закрытии окна по нажатию на крестик — http://www.web-shpargalka.ru/modal_ocno/demo.html#close

при закрытии другого окна по нажатию за пределами окна (не на крестик), — http://www.web-shpargalka.ru/modal_ocno/demo.html#

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

Блок-схема простая:

if Правильно писать в условии Открытия окна именно так или по иному? (<http://www.web-shpargalka.ru/modal_ocno/demo.html#win1> == true) {
function1 ()
}
else if Правильно писать в условии Закрытия окна именно так или по иному? (http://www.web-shpargalka.ru/modal_ocno/demo.html#close == true) { function2 ()
}
Else { }

Подскажите, пожалуйста, как точно написать эти две строки в условиях – if и else if, чтобы по факту работали обе функции (на открытии и закрытии), или хотя бы function1 () срабатывала сразу после открытия окна.

Благодарю заранее.
2017-08-21 14:52

Ваш комментарий



Почта: info@web-shpargalka.ru
Сообщить друзьям:
Главная | Форум | Отзывы | Обо мне | Мои курсы | Работы учеников | Конкурсы | Обратная связь