【问题标题】:Flexbox works in Internet explorer but does not in ChromeFlexbox 在 Internet Explorer 中有效,但在 Chrome 中无效
【发布时间】:2015-05-20 12:25:09
【问题描述】:

我想要达到的目标:JSFiddle

<div id="container">
    <div class="box">1</div>
    <div class="box">2</div>
    <div class="box">3</div>
    <div class="box">4</div>
    <div class="box">5</div>
    <div class="box">6</div>
    <div class="box">7</div>
    <div class="box">8</div>
    <div class="box">9</div>
    <div class="box">10</div>
    <div class="box">11</div>
    <div class="box">12</div>
    <div class="box">13</div>
</div>

我想要的是“X”数量的“盒子”类适合并在放置更多“盒子”类时使“内容”类更宽。

在 Internet Explorer(11) 中,您会看到“box”类适合“content”类并对其进行扩展,但在 Chrome(41) 中,“box”类似乎漂浮在“content”类上方和外部“内容”类宽度。这很烦人,因为如果我想在它旁边放置另一个“内容”类,它将与第一个重叠。

谁能解释我做错了什么?如果这是 Chrome 故障,有什么建议可以在没有 flexbox 的情况下完成此操作?

已解决Check other topic for multiple containers!

【问题讨论】:

    标签: html css google-chrome internet-explorer flexbox


    【解决方案1】:

    首先我建议您不要将float: left;display: flex; 混用。考虑改为指定display: inline-flex;

    也就是说,恐怕你必须做一些计算,才能找到容器元素内所有子元素的最大偏移权(包括边距):

    以下代码需要 jQuery,并且应该在 DOM 准备好时运行:

    // -----------------------------------------------------------------------------
    // Find the biggest offset right among all children, relatively to the container
    // -----------------------------------------------------------------------------
    
    var maxOffsetRight = 0,
        currentOffsetRight;
    
    $('#container').children().each(function() {
       currentOffsetRight = $(this).position().left + $(this).outerWidth(true);
        if (currentOffsetRight > maxOffsetRight) {
            maxOffsetRight = currentOffsetRight;
        }
    });
    
    // Set the width of the container
    var offsetLeft = $('#container').position().left;
    $('#container').css('width', maxOffsetRight - offsetLeft);
    

    fiddle

    注意:您可能会想到一种查找最后一个孩子的右偏移量的算法。这在大多数情况下都有效,但也可能会失败,因为您可以在弹性项目上设置属性 order 以重新排序它们。因此,DOM 中的最后一个孩子不一定是具有最大右偏移量的那个。如果子项具有任意宽度,那么在不重新排序元素的情况下也可能会失败。例如,如果同一列中最后一个子级大于最后一个。

    【讨论】:

    • 谢谢,Michael P。它似乎可以在 IE、Chrome、Opera、Firefox 中使用,感谢您的努力!那是您在那里制作的一些智能 jQuery,它似乎不适用于我的旧 android 手机浏览器,我需要摆弄它(不是真的必要)。谢谢你的努力,你真的帮了我!,807
    • Michael P. 我无法让它正常运行,你能制作一个完整的 .HTML 文件吗?
    • 如果您检查小提琴的结果,您可以在 iframe 中看到文档的完整 HTML。也许您编写的 javascript 部分是在元素进入文档之前执行的。尝试将javascript部分放在关闭&lt;/body&gt;标签之前,或者将整个js包装在$(function(){ ...js here... })中。
    • 我发现了问题:脚本 jquary 版本在 url 中的反斜杠之前没有 http:,也许 jsfiddle 将其编辑掉了。可以修改脚本以使其仅检测到一个“.container”吗?我遇到的问题是,当我将另一个“.container”与其他数量的 .box 类一起放置时,脚本会发疯。是否可以将脚本放在“.container” div 中,从我想要“.box”数量信息的人那里获得?在其他 '.container' div 其他数量中,其他脚本希望只关注该特定 div 吗? (也许这是一个全新的主题问题,我问你们很多人)
    • 其实这里还有很多新问题。由于这个问题已经回答了,你应该替换接受的标记,并打开一个新问题。这样更多的人会看到问题并可以回答。
    猜你喜欢
    • 1970-01-01
    • 2018-06-25
    • 1970-01-01
    • 1970-01-01
    • 2011-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多