【问题标题】:How to centre modal for mobile device that's zoomed in如何为放大的移动设备居中模式
【发布时间】:2017-09-15 15:45:10
【问题描述】:

我有一个模态,它使用以下函数来使模态居中:

  center: function() {
     var top=Math.max($window.height() - $modal.outerHeight(),0) / 2;
     var left=Math.max($window.width() - $modal.outerWidth(),0) / 2;

     $modal.css({
        top: top + $window.scrollTop(),
        left: left + $window.scrollLeft()
     });
  }

当没有对屏幕应用缩放时,这适用于桌面和移动设备。但是,一旦用户放大屏幕的一部分并调用此函数,它就会计算错误的位置,并且模态在用户的视口中并不长。

有没有办法让这个功能在移动设备上工作,尽管缩放?或者,我很高兴我检测到了移动设备,然后只在视口的缩放部分显示模态,这样至少用户似乎弹出了模态。

在我遇到困难时可以提供任何帮助吗..

【问题讨论】:

    标签: javascript jquery html css mobile


    【解决方案1】:

    如果模态框需要始终在屏幕上居中,您可以单独使用 CSS 执行以下操作:

    /* adjust height/width properties to whatever you need them to be */
    .modal {
      bottom: 0;
      left: 0;
      margin: auto;
      max-height: 500px;
      max-width: 600px;
      min-width: 300px;
      position: fixed;
      right: 0;
      top: 0;
    }
    

    希望这会有所帮助。

    【讨论】:

    • 谢谢我确实有绝对定位的模态但是我可能会在看到这个之后移动到固定位置。我仍在思考固定与绝对定位的好处
    • fixed 将确保模态始终保持在页面内容的顶部,其中绝对允许页面滚动,并且模态将随之滚动。我已经写了很多关于制作可访问的模态窗口的文章。你可以在这里查看:scottaohara.github.io/accessible_modal_window
    • 谢谢你的 scott 所以你推荐的是固定的而不是绝对的?
    • 这取决于预期的用户体验是什么。例如如果这是一个弹出并接管页面的模式,并且用户不应该能够与任何东西进行交互,直到它消失。那么肯定。如果这是一个不是整页接管的模式,那么没有。绝对位置就可以了。
    猜你喜欢
    • 2015-10-01
    • 1970-01-01
    • 2021-03-15
    • 2015-06-07
    • 2019-12-13
    • 2013-01-10
    • 1970-01-01
    • 2015-11-02
    • 2023-03-19
    相关资源
    最近更新 更多