4

我正在使用 JavaScript 在流体容器中垂直居中子 div。我基本上是通过计算父容器的高度和子 div 的高度来实现的。然后,我根据高度将子 div 绝对定位在父 div 的中心。我遇到的问题是当页面加载时,它没有设置子 div 的位置。我由此创建了一个函数,并在调整窗口大小时调用它,以便在视口更改时动态重新计算。我将如何开始在页面加载时设置此位置?

<div class="lead">
    <div class="message"></div>
</div>

var homepageLead = function () {
var lead = $('.lead'),
    message = $('.message'),
    lead_height = lead.height(),
    message_height = message.height(),
    lead_center = .5 * lead_height,
    message_center = .5 * message_height,
    center = (lead_center - message_center);    
message.css('bottom',center);
}
homepageLead();

$(window).resize(function () {
    homepageLead();
});
4

1 回答 1

3

试试这个小提琴:http: //jsfiddle.net/nRRn6/

使用的CSS:

html, body {
   height:100%;
}
.lead {
   width:100%;
   height:100%;
   background:red;
   position:relative;
}
.message {
   width:120px;
   height:200px;
   background:yellow;
   position:absolute;  /* <---required*/
   left:0;             /* <---required*/
   bottom:0;           /* <---required*/
}

用过的html:

<div class="lead">
    <div class="message"></div>
</div>

使用 jQuery:

var homepageLead = function () {
    var lead = $('.lead'),
        message = $('.message'),
        lead_height = lead.height(),
        message_height = message.height(),
        lead_center = .5 * lead_height,
        message_center = .5 * message_height,
        center = (lead_center - message_center);
    return message.css('bottom', center);
};

$(function () {
    $(window).resize(function () {
        homepageLead();
    }).resize();
});
于 2013-02-17T06:13:13.880 回答