将DIV水平对中和放大垂直于页面加载

时间:2013-04-08 21:24:27

标签: javascript jquery html css

如何在页面加载时立即水平和垂直居中DIV?

我目前正在使用以下解决方案:

HTML:

<div class="container">
  <div class="visitorSelect">
    <a href="/visitorLog/boeing">
      <div class="tile double icon bg-color-blue">
        <div class="tile-content">
          <i class="icon-plane"></i>
        </div>
        <div class="brand">
          <span class="name">Employee</span>
        </div>
      </div>
    </a>

    <a href="/visitorLog/guest">
      <div class="tile double icon bg-color-orange">
        <div class="tile-content">
          <i class="icon-group"></i>
        </div>
        <div class="brand">
          <span class="name">Guest</span>
        </div>
      </div>
    </a>
  </div> <!-- visitorSelect -->
</div> <!-- container -->

JavaScript的:

<script>
$(document).ready(function()
{
  $(window).resize(function()
  {
    $('.visitorSelect').css(
    {
      position: 'absolute',
      left: ($(window).width() - $('.visitorSelect').outerWidth()) / 2,
      top: ($(window).height() - $('.visitorSelect').outerHeight()) / 2
    });
  });

  // call `resize` to center elements
  $(window).resize();
});
</script>

当我最初加载页面时,DIV到中心显示在页面右侧并略低于垂直中心。但是,当我手动调整页面大小时,它会完全按

在文档加载时,我需要采取哪些额外步骤才能使对中元素正确放置?

3 个答案:

答案 0 :(得分:1)

除非这是某种模态或某种不寻常的东西,否则当CSS Margin Auto为此工作时,我不会完全使用脚本。这是一个教程http://demo.tutorialzine.com/2010/03/centering-div-vertically-and-horizontally/demo.html

以下是CSS的示例:

div.container{
  width:100%;
  height:100%;
}
div.visitorSelect {
  width:200px;
  height:200px;
  margin:auto;
}

答案 1 :(得分:1)

计算宽度之前,将.visitor元素设置为绝对定位

默认情况下,静态div会拉伸到父级的全宽;绝对的div不会。这搞乱了你的第一次计算。

您可能应该在CSS或ready()函数中的resize事件函数之外设置位置css规则。以下是对代码更改最少的修复:

$(document).ready(function()
{
  $(window).resize(function()
  {
    $('.visitorSelect').css(
    {
      position: 'absolute'
    });

    $('.visitorSelect').css(
    {
      left: ($(window).width() - $('.visitorSelect').outerWidth()) / 2,
      top: ($(window).height() - $('.visitorSelect').outerHeight()) / 2
    });
  });

  // call `resize` to center elements
  $(window).resize();
});

答案 2 :(得分:0)

一旦页面加载,您应该定位 div

<script>
$(document).ready(function()
{
  $('.visitorSelect').css(
    {
      position: 'absolute',
      left: ($(window).width() - $('.visitorSelect').outerWidth()) / 2,
      top: ($(window).height() - $('.visitorSelect').outerHeight()) / 2
    });

  $(window).resize(function()
  {
    $('.visitorSelect').css(
    {
      position: 'absolute',
      left: ($(window).width() - $('.visitorSelect').outerWidth()) / 2,
      top: ($(window).height() - $('.visitorSelect').outerHeight()) / 2
    });
  });

  // call `resize` to center elements
  $(window).resize();
});
</script>