如何使 easymodal 居中?

How to recenter an easymodal?

我想用 JS 重新居中 easymodal 模态。使用以下代码创建模态对象:

modal = new ModalMarkus('#create_annotation_dialog');

//here's the definition of ModalMarkus in another file
function ModalMarkus(elem) {
  this.modal_dialog = jQuery(elem).easyModal({
    updateZIndexOnOpen: false
  });
}

这是 create_annotation_dialog 的 HTML:

  <aside class='dialog' id='create_annotation_dialog'> 
      <div>
        <div style="float: left;">
          <p>
            <textarea id='new_annotation_content' onkeyup="updateAnnotationPreview()"></textarea>
          </p>
        </div>
        <div style="float: right">
          <p>
          <h2 id="annotation_preview_title" style="display: none"> <%= t('marker.annotation.preview_title') %></h2>
          </p>
          <p id="annotation_preview" style="display: none; word-wrap: break-word;"></p>
        </div>
      </div>
  </aside>

我想做的是在更改 annotation_previewannotation_preview_title 的可见性时使模式对话框重新居中。我有两个函数,如下所示,我想让它们将模态重新定位到屏幕中央。

function hideAnnotationPreview(){
    document.getElementById("annotation_preview").hide();
    document.getElementById("annotation_preview_title").hide();
}

function showAnnotationPreview(){
    document.getElementById("annotation_preview").show();
    document.getElementById("annotation_preview_title").show();
}

模态框在打开时居中,但我更改了模态框内项目的可见性,结果如下:

想通了。以下是我修改这些函数的方式:

function hideAnnotationPreview(){
    document.getElementById("annotation_preview").hide();
    document.getElementById("annotation_preview_title").hide();
    var dialog = jQuery("#create_annotation_dialog");
    dialog.css("margin-left", -1 * dialog.width() / 2);
}

function showAnnotationPreview(){
    document.getElementById("annotation_preview").show();
    document.getElementById("annotation_preview_title").show();
    var dialog = jQuery("#create_annotation_dialog");
    dialog.css("margin-left", -1 * dialog.width() / 2);
}