Jquery在页面加载/调整大小时调整div的大小

时间:2012-11-29 14:51:28

标签: jquery css html

每当窗口调整大小或首次加载时,我都会调用以下JQuery。我有一些问题,它似乎在首次加载时没有按预期工作。有人可以告诉我什么是故障吗?

JQuery(1.8.3)

function setContentHeight() {
    var height = $(document).height();
    $('#content, #content > div:first-child').height(height - 242);
    $('#content-text-description').height(height - 280);
}

$(window).resize(function(e) {
    setContentHeight();
});

$(document).ready(function(e) {
    setContentHeight();
});

HTML

<body>
    <div id="container">
        <div id="banner"></div> <!-- Header -->
        <div id="navi"></div> <!-- Navigation Pane -->
        <div id="content"> <!-- Content loaded with include -->
            <div id="home"> <!-- Start of content -->
                <div id="content-text-description"></div> <!-- container for custom scroller -->
            </div>
        <div id="footer"></div> <!-- Footer -->
    </div>
</body>

CSS

body {
   margin:0;
   font-family:"Century Gothic";
   line-height:30px;
}

#container {
    width:1024px;
    margin: 0 auto;
}

#banner {
    width:1024px;
}

#content {
    width:1024px;           
    height:470px;
    z-index:98;
    float:left; 
    top:-7px;   
    overflow:hidden;
}

#footer {
    text-align:center;
    background:#59585D;
    position:absolute;
    bottom:0px;
    width:1024px;
    height:30px;
    font-size:12px;
    color:#ffffff;
}

#content-text-description {
    padding-top:20px;
    display:block;
    width:800px;
    z-index:3;
    overflow:auto;
}

据我所知,通过在加载文档或调整窗口大小时调整所请求的div的大小,JQuery位应该按预期运行,但事实并非如此。

这是我做错了还是我想要实现的目标?

2 个答案:

答案 0 :(得分:0)

Cdocument.ready事件太早检查高度,而是使用document.load事件

$(window).resize(function(e){ setContentHeight(); });

$(document).load(function(e){ setContentHeight(); });

原因是在整个dom下载后很快就会触发document.load事件。但是在那个时候没有发生渲染,可能无法应用css,没有加载图像等。因此高度不正确。

但是在下载了所有内容并应用了样式后触发了load事件,因此您应该获得正确的高度。

无论如何,这不是你应该用脚本做的事情,而是用造型来做。

答案 1 :(得分:0)

我通过更多地使用代码来修复它......

简单。

var height = $(document).height();

应改为:

var height = $(window).height();