/* активируем модальный блок */
.overlay:target+.popup {
visibility: visible;
opacity: 1;
}
.overlay:target + обертка
, то сможете задавать стили этой обертке, у нее обрезать лишнее, так чтобы у body в итоге не было прокрутки. .overlay:target + .ovhdd{
overflow: hidden;
}
<div class="ovh">
<body>
контент
</body>
</div>
Теперь как-то при закрытие окна надо чтоб в боди скрол возвращался.
Или речь шла чтобы над боди была обертка.
<body class="">
контент
</body>
.overlay:target+.pd{
display:none;
}
, а класс на боди что нельзя повесить? и будет не костыль.
А для варианта с CSS нет никакого проку от этого класса. Что с ним делать?
<body class="">
контент
</body>
но при клике открыть попуп, контент не скрывает, странно, хотя должно.
https://jsfiddle.net/r9tu4jLo/11/
<b></b>
<i></i>
можно же не только убирать прокрутку у боди, а тупо скрыть контент, чтоб один попуп видно было.
а что если у боди скрыть прокрутку по дефолту типа, а класс который в боди к нему применить прокрутку.
Так не toggle class, а добавить. К body и к модалке.
При клике на крестик убрать класс у body и модалки.
.overlay:target + обертка
все на css сделать можно
Если это чистый CSS, то нужно использовать соседние селекторы. И располагать overlay в коде ДО обертки основного содержимого, чтобы сработал этот самый соседний селектор .overlay:target + обертка
Если JS, то ему, для этой задачи, вообще без разницы как всё расположено в коде.
Разве что overlay (т.е. то, но что кликаем для закрытия) разумно делать оберткой для самой модалки.
<a href="#x" class="overlay" id="opn"></a>
<i>---до обертки</i>
<div class="popup">
<i>---после обертки</i>
<div class="fvzp">
<h2>Заголовок</h2>
<a class="close" title="Закрыть окно" href="#close"></a>
</div>
</div>
Должен быть рядом с боди, я правильно понял? после боди.
~
и /или +
для обращения к элементам после него. а до пишешь до обертки
Да. Перед оберткой всего сайта.
CSS не умеет селекторы наверх и наружу. Только вниз и внутрь.
Раз всё завязано на overlay, то всё должно идти после него, чтобы можно было использовать ~ и /или + для обращения к элементам после него.
А вот с котлючением у боди скрола overflow: hidden, уже не выйдет, это если пихать код выше тега боди ) но такое делать нельзя.
а такая схема как работает? все равно боди первым срабатывает чем класс?
<a href="#body" title="">ОТКРЫТЬ ПОПУП</a>
body:target {
height: 100vh;
overflow: hidden;
}
body:target {
height: 100vh;
overflow: hidden;
}
Ну так что, можно ли называть это костыли, вроде нет, все функции которые предназначены для css.