Задать вопрос
HelenStar
@HelenStar
Начинающий frontend

Как сделать отображение модального окна посередине видимой области экрана?

Всем привет!

Столкнулась с такой проблемкой при написании кода для появления модальных окон с position: absolute. Не получается сделать их по центру видимой области экрана (а точнее той, где находится ссылка непосредственно на само окно), если сам блок окном находится в самом конце body. Проблема именно с окнами с position: absolute, потому что в этом случае координаты отсчитываются от начала документа. С position: fixed проблем нет.

Пробовала как вариант:

$(('a[name=modal]')).click(function(e) {
    e.preventDefault();
    var id = $(this).attr('href');
    ..........................................
    var winH = $(window).height();
    var winW = $(window).width();
    $(id).css('top',  winH/2-$(id).height()/2);
    $(id).css('left', winW/2-$(id).width()/2);


или

$('.mymodal').css({
	    left: ($(document).width() - $('.mymodal').outerWidth())/2,
        top: ($(window).height() - $('.mymodal').outerHeight())/2
	  });


Пока помог только способ вставки блока с окном непосредственно перед секцией, где есть на него ссылка, но это не выход, потому что все равно некорректно все отображается. А для position: fixed окна слишком длинные, чтобы скроллить их внутри окна вместо прокрутки со страницей.
  • Вопрос задан
  • 565 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
Stalker_RED
@Stalker_RED
Вы хотите, чтобы окно появлялось в текущем вьюпорте, но при этом его можно было проскроллить?

btnShowModal.onclick = e=>{
  modal.style.top = window.scrollY + 50 + 'px' // текущее положение скролла + отступ
  modal.classList.add('active') // показываем
}
демка: https://jsfiddle.net/6uLm9hs5/show/light/
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы