javascript - 重新加载时 Chrome 中的垂直居中页面 "jumping",FF 和 IE 工作正常

标签 javascript jquery html css google-chrome

我使用以下 jQuery 代码在浏览器窗口内垂直居中网站,如果它高于外部 wrapper-div(具有固定的宽度和高度)。

$( document ).ready(function() {

     centerPage();
)};

// center page vertically if viewport higher than wrapper
function centerPage(){  

   var viewportHeight = $(window).height();
   var siteHeight = $('#wrapper').height();

   if(viewportHeight > siteHeight){

         $('#wrapper').css({
        'position' : 'absolute',
        'left' : '50%',
        'top' : '50%',
        'margin-left' : -$('#wrapper').outerWidth()/2,
        'margin-top' : -$('#wrapper').outerHeight()/2
      });
   }


}

这在 Firefox 和 Internet Explorer 11 中工作得很好;此处网站始终固定在居中位置。

但是在 Chrome 中,每次重新加载页面时,例如通过在菜单中导航,包装器跳转到顶部,然后返回到中心。或者更确切地说,它是在应用 js 更改之前呈现的……就像代码在 Chrome 中运行得太晚了。

我对 JS 很陌生,所以我很难理解我发现的关于 Chrome 加载太晚的问题,但这似乎是一个常见问题。

这是一个 Chrome 问题,因为它处理 JS 文件的方式,或者在这种情况下是否有任何解决方法可以使 JavaScript 在 Chrome 中加载得更快或更早?

最佳答案

我只能假设您要实现的目标是让您的网页始终居中对齐。这可以完全使用 CSS 完成,而不需要任何 JS。只需在包装元素上设置固定宽度并设置 marginauto0 auto .这应该会为您将页面居中。

编辑

关于垂直定位的主题,我会创建一个固定高度的视口(viewport)并使用 position: absolutemargin: auto定位它。我创建了一个 fiddle 来演示如何做到这一点。这当然需要父元素集 position: relative并且认为元素也需要固定高度,但这比使用 JavaScript 解决方案要好。

http://jsfiddle.net/h8jL8b8L/1/

编辑 2

另外两个 fiddle 来演示如何使用 htmlbody达到预期效果的要素。通过将这两个元素设置为 height: 100%width: 100%然后使用 position: relativebody 上然后你可以使用 bottom: 0; height: 90%; left: 0; margin: auto; position: absolute; right: 0; top: 0;viewport/wrapper 上您创建的元素,以便将其垂直居中。

http://jsfiddle.net/h8jL8b8L/2/

http://jsfiddle.net/h8jL8b8L/3/

关于javascript - 重新加载时 Chrome 中的垂直居中页面 "jumping",FF 和 IE 工作正常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29826199/

相关文章:

javascript - 如何在鼠标悬停时更改 setInterval() 回调函数不断修改的元素的值?

javascript - Ajax 调用 setInterval 计时器不起作用

javascript - 如何在没有任何 ID 的情况下使用 Javascript 替换列(表格内)中的文本

javascript - 如何创建“显示更多”按钮并指定最初可以显示多少行文本

javascript - 不同时区的javascript日期问题

javascript - 比较 JSON 结构

javascript - $ 是未定义的 jQuery 和 Bing Map API

循环中的 Jquery 选择器给出的结果不明确

jquery - 如何通过 Jquery 表单验证器单击提交后重定向页面

html - iPhone Mail 在 html 电子邮件中调整图像/div 的大小