Positionieren Sie ein Dialogfeld, in der Mitte des sichtbaren Bereichs eines Browserfensters mit Hilfe von JavaScript / DOM

StackOverflow https://stackoverflow.com/questions/4311165

Frage

Ich brauche ein Dialogfeld (lesen div) in der Mitte des sichtbaren Bereichs eines Browser-Fensters zu positionieren. Ich brauche diese Javascript DOM verwenden, um zu tun - die Nutzung von Scrollheight, scrollTop, client etc. zulässig ist. Das Dialogfeld Bedürfnisse erscheinen auf einen Link zu klicken, bleibt sie unsichtbar sonst.

CAN NOT USE JQuery einen modalen Dialog werden.

Kann jemand mir helfen, mit dem Zentrierteil dieses Problems

Viele Grüße

War es hilfreich?

Lösung

(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);
}());

Andere Tipps

Hier ist, wie erfolgreich ein Dialogfeld zu zentrieren, unabhängig von der Position im Dokument:

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;     
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top