Расположите диалоговое окно в центре видимой области окна браузера, используя javascript / DOM - PullRequest
0 голосов
/ 30 ноября 2010

Мне нужно расположить диалоговое окно (чтение div) в центре видимой области окна браузера.Мне нужно использовать Javascript DOM для этого - допустимо использование scrollHeight, scrollTop, clientHeight и т. Д.Диалоговое окно должно появиться при нажатии на ссылку, в противном случае оно остается невидимым.

НЕ МОЖЕТ ИСПОЛЬЗОВАТЬ JQUERY ДЛЯ СОЗДАНИЯ МОДАЛЬНОГО ДИАЛОГА.

Может ли кто-нибудь помочь мне с центральной частью этой проблемы

С уважением

Ответы [ 2 ]

1 голос
/ 30 ноября 2010
(function () {
  var getVieportWidth,
      getViewportHeight;

  if (window.innerWidth) {
    // All browsers except IE
    getViewportWidth = function() { return window.innerWidth; };
    getViewportHeight = function() { return window.innerHeight; };
  }
  else if (document.documentElement && document.documentElement.clientWidth) {
    // IE6 with DOCTYPE
    getViewportWidth = function() { return document.documentElement.clientWidth; };
    getViewportHeight = function() { return document.documentElement.clientHeight; };
  }
  else if (document.body.clientWidth) {
    // IE4, IE5, IE6 without DOCTYPE
    getViewportWidth = function() { return document.body.clientWidth; };
    getViewportHeight = function() { return document.body.clientHeight; };
  }

  var dialogDIVNode = document.getElementById('someID'),
      dialogDIVNodeWidth = dialogDIVNode.offsetWidth,
      dialogDIVNodeHeight = dialogDIVNode.offsetHeight;

  document.getElementById('someLinkID').addEventListener('click', function (e) {
    e.preventDefault();

    dialogDIVNode.style.left = ( getViewportWidth() / 2 - dialogDIVNodeWidth / 2 ) + 'px';
    dialogDIVNode.style.top = ( getViewportHeight() / 2 - dialogDIVNodeHeight / 2) + 'px';
    dialogDIVNode.style.display = 'block';
  }, false);
}());
0 голосов
/ 25 июля 2015

Вот как успешно центрировать диалоговое окно, независимо от позиции в документе:

dialogue.style.left = window.innerWidth - (window.innerWidth - dialogue.offsetWidth) / 2 
                      - dialogue.offsetWidth + pageXOffset;

dialogue.style.top = window.innerHeight - (window.innerHeight - dialogue.offsetHeight) / 2 
                     - dialogue.offsetHeight / 2 + pageYOffset;     
...