Javascript 用CSS实现加权灵活布局

Javascript 用CSS实现加权灵活布局,javascript,jquery,css,flexbox,Javascript,Jquery,Css,Flexbox,请看一看并按唯一的按钮填写列表。如您所见,列表中的DIV元素被调整大小以填充包含的父元素。这段代码正是我想要做的,但我认为我实现这段代码的方式对于这样一个看似简单的任务来说太复杂了。以下是为内部元素指定高度的算法代码: fill = function() { //Loop through all elements once to get total weight var totalWeight = 0; var totalHeight = $("#container").

请看一看并按唯一的按钮填写列表。如您所见,列表中的
DIV
元素被调整大小以填充包含的父元素。这段代码正是我想要做的,但我认为我实现这段代码的方式对于这样一个看似简单的任务来说太复杂了。以下是为内部元素指定高度的算法代码:

fill = function() {
    //Loop through all elements once to get total weight
    var totalWeight = 0;
    var totalHeight = $("#container").height() - 15; //need a little extra empty space at the buttom
    $(".list").each(function(i) {
      totalWeight += parseInt($(this).attr('weight'));
      totalHeight -= parseInt($(this).css('margin'));
    });

    //Loop though the element a second time to set the relative height
    $(".list").each(function(i) {
       var element = $(this);
       element.css("height", (element.attr("weight") / totalWeight) * totalHeight);
    });
}
我的问题是,我们能做到最好吗?有没有其他方法——希望更快或更优雅——可以通过合理的跨浏览器兼容性实现此功能?我只需要支持更新的Firefox、Chrome和Safari。我读过关于flex-box的文章,并研究了它的功能,但它看起来不像flex-box能够在不同浏览器之间一致地进行加权灵活布局。如果我错了,请给我一个简单的例子,说明如何做到这一点


这种类型的加权灵活线性布局并不少见,例如,它在Android SDK中作为布局选项之一可用。相对于指定给图元的权重值,调整图元大小以填充其父容器的建议方法是什么?如果可能的话,一个纯CSS解决方案将是非常棒的。

在谷歌搜索大约30分钟后,快速浏览一下。我可能会做一个演示,但没有太多时间

你看过这里吗




  • 第六章有一些很好的例子

    编辑: 我在他们的网站上查看firefox开发者部分,发现

    我还找到了另一个下载的例子!!


    这可能会给你一些关于firefox的指导,其余的应该在我提供的其他链接中

    在谷歌搜索大约30分钟后,快速浏览一下。我可能会做一个演示,但没有太多时间

    你看过这里吗




  • 第六章有一些很好的例子

    编辑: 我在他们的网站上查看firefox开发者部分,发现

    我还找到了另一个下载的例子!!


    这可能会为firefox提供一些指导,其余的应该在我提供的其他链接中

    Flexbox可用。你可能需要为新的和旧的样式写一些重复的规则,但它是有效的。我找不到一个好的例子来说明如何使用flebox来做到这一点。你能提供一个基于上面我的JSFIDLE的flexbox解决方案吗?flexbox是可用的。你可能需要为新的和旧的样式写一些重复的规则,但它是有效的。我找不到一个好的例子来说明如何使用flebox来做到这一点。你能提供一个基于上面我的JSFIDLE的flexbox解决方案吗?+1用于投入精力和共享搜索结果。然而,如果你看这个例子:从参考文献6中你可以清楚地看到它在Firefox中不起作用。我看到了很多示例代码并讨论了flex box,但很少有跨浏览器的功能演示。因此有了这个问题。@Aras我找到了firefox的一个例子,但它更多的是编写,而不是演示+1,用于投入精力和共享搜索结果。然而,如果你看这个例子:从参考文献6中你可以清楚地看到它在Firefox中不起作用。我看到了很多示例代码并讨论了flex box,但很少有跨浏览器的功能演示。因此有了这个问题。@Aras我找到了firefox的一个例子,但它更多的是编写而不是演示