【问题标题】:Setting equal Height Columns on window resize with jQuery使用jQuery在窗口调整大小时设置相等的高度列
【发布时间】:2013-06-18 05:05:44
【问题描述】:

我正在尝试使用 jQuery 来平衡列的高度。我的解决方案适用于页面加载,但不适用于调整窗口大小。代码如下:

function equalizeCols(){
        var tallest = 0;
        var program = $("#programs li");
        var blueSpace = $("#programs li .programInfo");

        program.each(function(){
            var thisHeight = $(this).height();
            var imgHeight = $("#programs li img").height();
            var leftOver = thisHeight - imgHeight;

            if(leftOver > tallest){
                tallest = leftOver;
            }
        });
        blueSpace.height(tallest);
    }

$(window).load(equalizeCols);

很简单,这会遍历所有列表项,获取最高高度,然后将所有列表项设置为该高度。每个列表项都有一个百分比宽度,因此每个列表项的高度将根据窗口的大小而变化。也就是说,我需要这个来调整窗口大小。如果我只是做$(window).resize(equalizeCols);,列表项将继续增长,因为高度已经从加载设置。

知道如何调整此代码以调整窗口大小吗?

【问题讨论】:

  • 您确定 javascript 是解决问题的正确方法吗?不能用 CSS 完成吗?无论如何,如果基于百分比,您的 JS 解决方案可能会变得脆弱。
  • 我想不出一个好的 CSS 解决方案。有什么想法(不使用 flexbox)?
  • @jchase 我在 bit.ly/12Rghfn 有一个基于 CSS 的解决方案。虽然问题是 Bootstrap 特定的,但解决方案是通用的。
  • 当然,它回到负边距/填充解决方案。无法让它与我的代码一起使用,我将把小提琴放在一起
  • 如果你有一行列,那就可以了。我可能有 50 行,我希望高度相等

标签: jquery responsive-design fluid-layout


【解决方案1】:
$(window).resize(function() { 
    equalizeCols();
});

我不确定这是否会与您的代码不同。让我知道,我会尽力为您提供更好的解决方案。

【讨论】:

  • 我试过这个,但没有任何区别。我的只是写同一件事的一种更短的方式。我更新了我的代码以显示其当前进度
猜你喜欢
  • 2021-09-04
  • 2012-05-13
  • 2010-12-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多