Демонстрация простого трюка, который позволяет сделать диалоговое / модельное окно на чистом CSS.

Для начала стоит посмотреть демонстрацию.
Вся идея очень проста и базируется на использовании псевдокласса target, но срабатывает когда хэш страницы сайта указывает на id данного элемента.
Проще говоря, сначала мы скрываем окно:
.soModalDialog:target {
display: none;
}
А когда пользователь нажимает на ссылку у корой задан атрибут href="#soModal1" , то срабатывает правило:
.soModalDialog:target {
display: block;
}
Закрытие диалогового окна происходит при изменении хэша адреса станицы с #soModal1, на любое другое.
И сразу приведу код:
HTML
<a href="#soModal1">Открыть</a>
<div id="soModal1" class="soModalDialog">
<div>
<div>
<a href="#close" title="Закрыть" class="close">X</a>
<h2>Заголовок</h2>
<p>Lorem ipsum...!</p>
<p>Lorem ipsum...!</p>
</div>
</div>
</div>
CSS
.soModalDialog {
position: fixed;
top: 0;
right: 0;
bottom: 0;
left: 0;
background: rgba(0,0,0,0.5);
z-index: 100;
transition: opacity 400ms ease-in;
display: none;
pointer-events: none;
}
.soModalDialog:target {
display: block;
pointer-events: auto;
}
.soModalDialog > div {
max-width: 400px;
margin: 10% auto;
}
.soModalDialog > div > div {
margin: 0 10px;
padding: 5px 20px 13px 20px;
border-radius: 10px;
background: #fff;
position: relative;
}
.soModalDialog .close {
background: #606061;
color: #FFFFFF;
line-height: 25px;
position: absolute;
right: 12px;
text-align: center;
top: 25px;
width: 24px;
text-decoration: none;
font-weight: bold;
border-radius: 12px;
box-shadow: 1px 1px 3px #000;
}
.close:hover {
background: #FFFFFF;
color: #000;
}