如何在使用javascript调整大小时自动更改div高度?

时间:2013-09-25 08:50:58

标签: javascript

现在我已经处理了窗口加载代码,但是无法使其与窗口大小调整一起工作(如果我为resize事件重复相同的函数,则高度值会增加)。数组是在onload完成后显示初始值。

var arr = [];

window.onload = function() {
    var newsBlocks = document.getElementsByClassName('news');
    for (var i = 0; i < newsBlocks.length; i++) {
      var newsBlock = newsBlocks[i];
      var left = newsBlock.getElementsByTagName('article')[0];
      var right = newsBlock.getElementsByTagName('article')[1];
      var height = Math.max(left.offsetHeight, right.offsetHeight);
      left.style.height = right.style.height = height.toString() + 'px';
      arr.push(left.style.height);
      console.log(arr);
     }
};

这是html:

<div class="main">
    <section class="news">
        <article>
            <a href="#" class="news-image"><img src="images/t.png"></a>
            <h2><a href="#">Heading</a></h2>
            <a href="#" class="description">test text</a>
        </article>
        <article>
            <a href="#" class="news-image"><img src="images/t.png"></a>
            <h2><a href="#">Heading</a></h2>
            <a href="#" class="description">a lot of test text here</a>
        </article>
</div>

纯粹的JavaScript解决方案表示赞赏。提前感谢您的帮助!

3 个答案:

答案 0 :(得分:0)

您应该重新组织代码,以便能够随时重新绘制整个屏幕,并挂钩调整大小事件,请参阅:JavaScript window resize event

当移动设备改变方向时,也会调用调整大小事件。

答案 1 :(得分:0)

<div id=div1></div>


<script>
div1.style.height = (your preffered height)
</script>

你可以用宽度做。

它对我有用......

答案 2 :(得分:0)

尝试以下代码。它对我有用。

var buffer = 20; //scroll bar buffer
var divId = document.getElementById('yourDivID');

function pageY(elem) {
    return elem.offsetParent ? (elem.offsetTop + pageY(elem.offsetParent)) : elem.offsetTop;
}

function resizeDiv() {
    var height = document.documentElement.clientHeight;
    height -= pageY(divId) + buffer;
    height = (height < 0) ? 0 : height;
    divId.style.height = height + 'px';
}

window.onresize = resizeDiv;