Всем привет. Знаете ли вы, что сделать модальное окно на CSS без использования JavaScript или jQuery вполне возможно? Недавно я показывал пример модального окна на jQuery, но сегодня будем делать такое окно на CSS3 и HTML5. С развитием этих спецификаций стало возможно делать простые модальные окна без подключения внешних библиотек и что больше всего радует, так это поддержка подобных эффектов практически всеми браузерами, естественно последних версий. Но об этом немного позже. Сейчас давайте посмотрим пример и разберемся, где можно использовать модальное окно на CSS.
Демо
Использование модального окна на CSS
Вариантов использования модальных окон на сайте очень много. Но как вариант могу предложить это сделать примерно как на примере, с вставкой видео-контента. Как раз порекомендую почитать о влиянии видео-контента на посещаемость сайта. еще это может быть панель ссылок в боковой колонке, нажав на которую пользователь смог бы получать более развернутую информацию. Это могут быть и простые ссылки в контенте сайта, а так же картинки, при нажатии на которые открывалось бы окно с тем содержимым, которое вы хотите разместить. Эту технику можно применять если хотите сэкономить место на сайте. Формы подписки, регистрации, авторизации — все это можно реализовать в модальном окне на CSS.
Добавляем на сайт модальное окно на CSS
Добавляем в файл таблицы стилей следующий код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
| .Window {
position: fixed;
font-family: Arial, Helvetica, sans-serif;
top: 0;
right: 0;
bottom: 0;
left: 0;
background: rgba(0,0,0,0.7);
z-index: 99999;
-webkit-transition: opacity 400ms ease-in;
-moz-transition: opacity 400ms ease-in;
transition: opacity 400ms ease-in;
display: none;
pointer-events: none;
}
.Window:target {
display: block;
pointer-events: auto;
}
.Window > div {
width: 460px;
position: relative;
margin: 10% auto;
padding: 30px 10px 10px;
border-radius: 10px;
background: #fff;
box-shadow: 0px 0px 20px 2px;
}
.close {
background: #cc3300;
color: #FFFFFF;
line-height: 25px;
position: absolute;
right: -12px;
text-align: center;
top: -10px;
width: 24px;
text-decoration: none;
font-weight: bold;
-webkit-border-radius: 12px;
-moz-border-radius: 12px;
border-radius: 12px;
-moz-box-shadow: 1px 1px 3px #000;
-webkit-box-shadow: 1px 1px 3px #000;
box-shadow: 1px 1px 3px #000;
}
.close:hover { background: #990000; } |
.Window {
position: fixed;
font-family: Arial, Helvetica, sans-serif;
top: 0;
right: 0;
bottom: 0;
left: 0;
background: rgba(0,0,0,0.7);
z-index: 99999;
-webkit-transition: opacity 400ms ease-in;
-moz-transition: opacity 400ms ease-in;
transition: opacity 400ms ease-in;
display: none;
pointer-events: none;
}
.Window:target {
display: block;
pointer-events: auto;
}
.Window > div {
width: 460px;
position: relative;
margin: 10% auto;
padding: 30px 10px 10px;
border-radius: 10px;
background: #fff;
box-shadow: 0px 0px 20px 2px;
}
.close {
background: #cc3300;
color: #FFFFFF;
line-height: 25px;
position: absolute;
right: -12px;
text-align: center;
top: -10px;
width: 24px;
text-decoration: none;
font-weight: bold;
-webkit-border-radius: 12px;
-moz-border-radius: 12px;
border-radius: 12px;
-moz-box-shadow: 1px 1px 3px #000;
-webkit-box-shadow: 1px 1px 3px #000;
box-shadow: 1px 1px 3px #000;
}
.close:hover { background: #990000; }
Теперь, в том месте, где хотите, чтобы появлялось модальное окно, нужно прописать следующий код:
1
2
3
4
5
6
7
| <a href="#ModalOpen" title="">Открыть окно</a>
<div id="ModalOpen" class="Window">
<div>
<a href="#close" title="Закрыть" class="close">X</a>
Здесь будет содержимое окна
</div>
</div> |
<a href="#ModalOpen" title="">Открыть окно</a>
<div id="ModalOpen" class="Window">
<div>
<a href="#close" title="Закрыть" class="close">X</a>
Здесь будет содержимое окна
</div>
</div>
Google Chrome, Fire Fox, Opera, IE-9, Safari — в этих браузерах работает хорошо. Единственный косяк, который был замечен, это в браузере Сафари при размещении видео в модальном окне, оно почему-то не хотело до конца закрываться, хотя открывается хорошо. Приходилось перезагружать страницу. Это касается только видео-контента. При размещении текста, картинок — никаких ошибок не выявлено. Размер окна можно изменять через CSS, так что можно смело с этим экспериментировать. Теперь вы знаете, как делать модальное окно на CSS. И в завершении предлагаю скачать готовый пример и поделиться этой записью в социальных сетях. Спасибо. На CSS можно еще сделать таблицу зебру.
СКАЧАТЬ
Добрый день! Подскажите пожалуйста, как решить подобную проблему: Я решил вставить ссылку на модальное окно #ModalOpen в пункт меню, а остальную часть, следующую после ссылки поместил в header.php
Работает. Но — при загрузке страницы сначала появилась белая страница с кнопкой закрыть и содержимым этого окна а потом через секунду загрузилась сама страница… Как мне скрыть этот блок так, чтобы при нажатии на пункт меню оно открывалось, а при перезагрузке страницы не выводилась белая страница на полсекунды с содержимым этого окна? И ещё вопрос: как мне поместить в это окно форму авторизации и регистрации?
С вашей проблемой не сталкивался, не знаю. А какие у вас проблемы с размещением формы регистрации?
Я просто хочу сделать авторизацию и регистрацию на сайте в модальном окне таким образом, чтобы это окно открывалось при нажатии на пункт меню «Авторизация». Но что ни пытался найти, то нужно ещё в ссылке дополнительные параметры прописывать… И ничего не выходило… А здесь как раз оптимальный вариант… Только надо в это модальное окно засунуть формы авторизации и регистрации и при этом чтобы выводилось это окно при нажатии на пункт меню… И при этом чтобы код засунуть в такое место, чтобы он не появлялся, пока я не нажму на пункт меню… А так же хочу сделать профиль пользователя, не страницу с изменением профиля, а с самим профилем, т.е. там должна просто отображаться информация о пользователе, а не форма изменения профиля…
Оптимальный в том смысле, что надо просто найти место куда засунуть код и можно просто создать пункт меню в админке и просто вписать ссылку на модальное окно.
В div самого модального окна и вставляйте код. В чем проблема-то?
Проблема в том, что при обновлении страницы, на которой открывалось это окно, на пол-секунды появляется белая страница, на которой в верхней левой части экрана появляется содержимое этого модального окна… И как мне туда вставить форму авторизации кодом типа [wppb_login] от плагина Profile Builder?
Проблема в том, что при обновлении страницы, на которой открывалось это окно, на пол-секунды появляется белая страница, на которой в верхней левой части экрана появляется содержимое этого модального окна… И как мне туда вставить форму авторизации кодом типа [wppb_login] от плагина Profile Builder? При попытке вставить его туда, отображается просто это выражение, а не то что оно должно отобразить…
Упс, из-за лагов с инетом написал 2 коммента…
Добрый день! Проблема решена) Как у меня на сайте выглядят эти окна вы можете, перейдя по адресу который я только что указал в своих данных здесь) Очень хороший сайт и полезные посты)
Очень хороший сайт из тестовых статей? 🙂
Я про ваш сайт говорю))) А у емня будующий сайт недвижимости) Кстати, можете подсказать, установил fancybox for wordpress всё работало нормально, кроме одного — не появлялась подпись при увеличении картинки… А сейчас вообще не открывается, просто нажимаю и не открывается… как кнопка, которая никуда не ведёт…
Но должно открываться всё как на этом тестовом сайте: elegantthemes.com/preview/ElegantEstate
У меня тоже была проблема с подобными плагинами, но я так и не разобрался в чем была причина. Через некоторое время все само заработало.
Там проблема в том, что атрибут title=»» стирается начисто в коде… не знаете, как и где мне найти такую функцию?
Не зyf./ Сначала нужно выяснить причину почему это происходит.
И снова здравствуйте) А как мне в этом коде прописать, чтобы какая-то форма появлялась только если пользователь не авторизован, а когда авторизован, то другое содержимое?
Если честно, то не в курсе. Но знаю, что за это отвечает PHP, поэтому искать нужно в этом направлении.
Я попробовал сделать условным php тегом, но сразу же весь сайт превратился в сплошную белую страницу, поэтому сразу же вернул как было… А не знаете, в каком файле редактируются пункты меню, и настраиваются? Хочу тогда условием показать, что пункт меню должен показываться только незарегистрированным пользователям и сделать пункт меню (со ссылкой на админку) только для админа…(Если не в настройках в админке)
Обычно в header.php. ищите wp_list_pages. Можно один пункт меню написать на HTML и уже для него прописывать php функцию, чтобы показывался только для зарегистрированных или как вам там нужно. Почитайте кодекс или форум WP. Наверняка есть что-то подобное.
Сделал все как написано, прописал несколько видео, но почему то везде открывается одно и то же видео. Ссылки проверял все разные…
в чем может быть дело? 😥
ID для окон одинаковые или разные?
Все разобрался. Спасибо!
Большое человеческое спасибо!
И видео вставил и корзину, с Вашей помощью. 🙂
Отлично! 😉
Вечер добрый ! Подскажите на одной странице всплывает только одно окно с одним содержанием или возможно несколько модальных окон на странице?
Возможно.
ПОДСКАЖИЕ как !!!!!!!!!!!!!!
Вроде получилось. Другому окну присвоил «Modal-1» правильно?
Подскажите ,как изменить скорость открытия и закрытия
Громадное спасибо за статью !!!!!!!! Использовал плагин easy modal, но окно прячется под header/ . Ваш вариант предпочтительней. СПАСИБО !!!!!!! ( если сможете подскажите скорость открытия ,закрытия)
Не знаю как изменить скорость открытия в CSS. Это можно сделать при помощи JavaScript или jQuery.
Тут главное, все очень просто, стили поставил и установил сам код, и больше не чего не нужно. Таких бы по больше!
Привет всем! Друзья, подскажите пожалуйста как сделать чтобы модальное окно отображалось не по середине, а ближе к верхнему полю?