Я прочитал более 10 тем / вопросов здесь, но ни один из них не работает. Недавно я понял, как показать модал, который скрывает и / или отключает прокрутку. Затем я выяснил, как предотвратить кратковременное смещение моей страницы на одну секунду вправо из-за удаления полосы прокрутки (некрасивый эффект). Я закончил с тем, что полоса прокрутки все еще показывалась, но отключил прокрутку, похожую на Facebook, когда вы открываете там модал.
Но я столкнулся с проблемой, когда он прокручивается до самой верхней части страницы автоматически. Я пытался решить многие проблемы, но безрезультатно.
- Конечно, я отключил событие щелчка по умолчанию с помощью e.preventDefault ()
- Я назначил переполнение: скрыто для тела при открытии модального. Я также сделал это с помощью overflow-y: скрытого для тела.
- Некоторые говорят, что когда body установлено на 100%, вы устанавливаете его в автоматический режим при открытии модального окна. Не работает Я сделал это и наоборот.
Я хотел бы повторить, что приведенные ниже коды работают. Они отключают прокрутку и не сдвигают мою страницу вправо, потому что полоса прокрутки остается, но просто отключена. Я sh избавлюсь от резкой прокрутки до самой верхней части страницы всякий раз, когда открываю модальное окно.
ОБНОВЛЕНИЕ: Я ДОБАВИЛ SNIPPET
$(document).on("click", "a", function(e) {
e.preventDefault();
$(".parentbox").show();
$("body").addClass("no-scroll");
});
* {
padding: 0;
margin: 0;
}
html, body {
height: 100%;
}
html {
overflow-y: scroll;
}
.no-scroll {
overflow: hidden;
}
.parentbox
{
display: none;
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: rgba(0, 0, 0, 0.4);
}
.box
{
position: absolute;
background-color: #FFFFFF;
padding: 28px 18px;
text-align: center;
width: 320px;
top: 50%;
transform: translateY(-50%);
left: 0;
right: 0;
margin: 0 auto;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<!DOCTYPE html>
<body>
<div class="content">
<p><strong>Top section</strong></p>
<br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>
<br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>
<br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>
<div class="parentbox">
<div class="box">
This is a modal
</div>
</div>
<br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>
<br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>
<a href="#">Open Modal</a>
<br/><br/><br/>
</div>
</body>
</html>