【问题标题】:Column-count is not working in Chrome列数在 Chrome 中不起作用
【发布时间】:2017-06-18 13:14:06
【问题描述】:

我有一个分成 4 列的文本,它在 Safari 中完美运行我不知道为什么我在 Google Chrome 中只能看到 2 列。

使用 Chrome 55.0.2883.95(64 位)测试

任何帮助将不胜感激。

#people{
 -webkit-column-count:4;
 -moz-column-count:4;
 column-count:4;
 -webkit-column-gap:.5em;
 -moz-column-gap:.5em;
 column-gap:.5em;
 padding-bottom:2px;
 font-size:18px;
 line-height:21px;
}

.keeptogether{
  display:inline-block;
  width:100%
}
<div id=people>
<div class=keeptogether>
A<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
fhdjsklfhs<br>

<br>B<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
<br>C<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
</div>
<div class=keeptogether>
D<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
<br>E<br>
fhdjsklfhs<br>
<br>F<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
<br>G<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
<br>H<br>
fhdjsklfhs<br>
<br>I<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
<br>J<br>
<br>K<br>
fhdjsklfhs<br>
</div>
<div class=keeptogether>
L<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
<br>M<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
<br>N<br>
fhdjsklfhs<br>
<br>O<br>
fhdjsklfhs<br>
<br>P<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
<span class=yes><br></span>
</div>
<div class=keeptogether>
Q<br>
<br>R<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
<br>S<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
<br>T<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
<br>U<br>
<br>V<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
<br>W<br>
<br>X<br>
<br>Y<br>
fhdjsklfhs<br>
<br>Z<br>
fhdjsklfhs<br>
</div>
</div>

【问题讨论】:

  • 如果它不能在最新的 Chrome 中运行,那么它一定是某种回归。在旧版 Chrome 中,我确实看到了 4 列。
  • 确实是一种回归。有一种解决方法 - 使用 break-inside: avoid-column 规则,就像在 this demo 中一样 - 但 Firefox 似乎不支持它。
  • @raina77ow 我已经尝试过闯入,但它仍然无法正常工作
  • 另外,Chrome似乎不支持&lt;fieldset&gt;元素的列式布局。

标签: css google-chrome column-count css-multicolumn-layout


【解决方案1】:

display:inline-block 替换为display:block

根据caniuse,对于Chrome问题,您应该在容器上添加-webkit-perspective:1;

#people{
 -webkit-column-count:4;
 -moz-column-count:4;
 column-count:4;
 -webkit-column-gap:.5em;
 -moz-column-gap:.5em;
 column-gap:.5em;
 padding-bottom:2px;
 font-size:18px;
 line-height:21px;
 -webkit-perspective:1;
}

.keeptogether{
  display:block;
  width:100%
}
<div id=people>
<div class=keeptogether>
A<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
fhdjsklfhs<br>

<br>B<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
<br>C<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
</div>
<div class=keeptogether>
D<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
<br>E<br>
fhdjsklfhs<br>
<br>F<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
<br>G<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
<br>H<br>
fhdjsklfhs<br>
<br>I<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
<br>J<br>
<br>K<br>
fhdjsklfhs<br>
</div>
<div class=keeptogether>
L<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
<br>M<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
<br>N<br>
fhdjsklfhs<br>
<br>O<br>
fhdjsklfhs<br>
<br>P<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
<span class=yes><br></span>
</div>
<div class=keeptogether>
Q<br>
<br>R<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
<br>S<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
<br>T<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
<br>U<br>
<br>V<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
fhdjsklfhs<br>
<br>W<br>
<br>X<br>
<br>Y<br>
fhdjsklfhs<br>
<br>Z<br>
fhdjsklfhs<br>
</div>
</div>

【讨论】:

    【解决方案2】:

    display: flex; 添加到您的 css 中的 #people id:

    #people{
      display: flex;
     -webkit-column-count: 4; /* Chrome, Safari, Opera */
     -moz-column-count: 4; /* Firefox */
     column-count: 4;
     -webkit-column-gap:.5em;
     -moz-column-gap:.5em;
     column-gap:.5em;
     padding-bottom:2px;
     font-size:18px;
     line-height:21px;
    }
    
    .keeptogether{
      display:inline-block;
      width:100%;
    }
    <div id=people>
      <div class="keeptogether">
      A<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
    
      <br>B<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      <br>C<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      </div>
      <div class="keeptogether">
      D<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      <br>E<br>
      fhdjsklfhs<br>
      <br>F<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      <br>G<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      <br>H<br>
      fhdjsklfhs<br>
      <br>I<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      <br>J<br>
      <br>K<br>
      fhdjsklfhs<br>
      </div>
      <div class="keeptogether">
      L<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      <br>M<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      <br>N<br>
      fhdjsklfhs<br>
      <br>O<br>
      fhdjsklfhs<br>
      <br>P<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      <span class="yes"><br></span>
      </div>
      <div class="keeptogether">
      Q<br>
      <br>R<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      <br>S<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      <br>T<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      <br>U<br>
      <br>V<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      <br>W<br>
      <br>X<br>
      <br>Y<br>
      fhdjsklfhs<br>
      <br>Z<br>
      fhdjsklfhs<br>
      </div>
    </div>

    希望对你有帮助

    【讨论】:

      【解决方案3】:

      如果您将display: flex; 添加到#people ID,那么它在所有浏览器中都可以正常工作,并且对于.keeptogether 类您不需要display:inline-block;

      可以查看代码sn-p:

      #people {
       -webkit-column-count:4;
       -moz-column-count:4;
       column-count:4;
       -webkit-column-gap:.5em;
       -moz-column-gap:.5em;
       column-gap:.5em;
       display: flex;
       padding-bottom:2px;
       font-size:18px;
       line-height:21px;
      }
      
      .keeptogether {
        width:100%
      }
      <div id=people>
      <div class=keeptogether>
      A<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      
      <br>B<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      <br>C<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      </div>
      <div class=keeptogether>
      D<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      <br>E<br>
      fhdjsklfhs<br>
      <br>F<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      <br>G<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      <br>H<br>
      fhdjsklfhs<br>
      <br>I<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      <br>J<br>
      <br>K<br>
      fhdjsklfhs<br>
      </div>
      <div class=keeptogether>
      L<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      <br>M<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      <br>N<br>
      fhdjsklfhs<br>
      <br>O<br>
      fhdjsklfhs<br>
      <br>P<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      <span class=yes><br></span>
      </div>
      <div class=keeptogether>
      Q<br>
      <br>R<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      <br>S<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      <br>T<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      <br>U<br>
      <br>V<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      fhdjsklfhs<br>
      <br>W<br>
      <br>X<br>
      <br>Y<br>
      fhdjsklfhs<br>
      <br>Z<br>
      fhdjsklfhs<br>
      </div>
      </div>

      希望对你有帮助。

      【讨论】:

        【解决方案4】:

        为什么要给display: inline-block?使用column 属性的概念是将整个给定内容分成等宽的列。因此,如果您删除您的内部 div,所有内容都会正确对齐到给定数量的列中。

        如果您从当前代码中删除 inline-block,这也有效。

        #people {
          -webkit-column-count: 4;
          -moz-column-count: 4;
          column-count: 4;
          -webkit-column-gap: .5em;
          -moz-column-gap: .5em;
          column-gap: .5em;
          padding-bottom: 2px;
          font-size: 18px;
          line-height: 21px;
        }
        
        
        /* you don't need this property
        .keeptogether {
          display: inline-block;
          width: 100%;
        }
        */
        <div id="people">
          A<br> fhdjsklfhs
          <br> fhdjsklfhs
          <br> fhdjsklfhs
          <br> fhdjsklfhs
          <br> fhdjsklfhs
          <br> fhdjsklfhs
          <br> fhdjsklfhs
          <br> fhdjsklfhs
          <br> fhdjsklfhs
          <br> fhdjsklfhs
          <br> fhdjsklfhs
          <br> fhdjsklfhs
          <br> fhdjsklfhs
          <br>
        
          <br>B<br> fhdjsklfhs
          <br> fhdjsklfhs
          <br> fhdjsklfhs
          <br>
          <br>C<br> fhdjsklfhs
          <br> fhdjsklfhs
          <br> fhdjsklfhs
          <br> fhdjsklfhs
          <br> fhdjsklfhs
          <br> fhdjsklfhs
          <br> D
          <br> fhdjsklfhs
          <br> fhdjsklfhs
          <br> fhdjsklfhs
          <br> fhdjsklfhs
          <br> fhdjsklfhs
          <br> fhdjsklfhs
          <br>
          <br>E<br> fhdjsklfhs
          <br>
          <br>F<br> fhdjsklfhs
          <br> fhdjsklfhs
          <br> fhdjsklfhs
          <br> fhdjsklfhs
          <br>
          <br>G<br> fhdjsklfhs
          <br> fhdjsklfhs
          <br> fhdjsklfhs
          <br> fhdjsklfhs
          <br> fhdjsklfhs
          <br>
          <br>H<br> fhdjsklfhs
          <br>
          <br>I<br> fhdjsklfhs
          <br> fhdjsklfhs
          <br>
          <br>J<br>
          <br>K<br> fhdjsklfhs
          <br> L
          <br> fhdjsklfhs
          <br> fhdjsklfhs
          <br> fhdjsklfhs
          <br> fhdjsklfhs
          <br> fhdjsklfhs
          <br> fhdjsklfhs
          <br> fhdjsklfhs
          <br> fhdjsklfhs
          <br> fhdjsklfhs
          <br> fhdjsklfhs
          <br> fhdjsklfhs
          <br> fhdjsklfhs
          <br>
          <br>M<br> fhdjsklfhs
          <br> fhdjsklfhs
          <br> fhdjsklfhs
          <br> fhdjsklfhs
          <br> fhdjsklfhs
          <br> fhdjsklfhs
          <br> fhdjsklfhs
          <br> fhdjsklfhs
          <br> fhdjsklfhs
          <br> fhdjsklfhs
          <br> fhdjsklfhs
          <br>
          <br>N<br> fhdjsklfhs
          <br>
          <br>O<br> fhdjsklfhs
          <br>
          <br>P<br> fhdjsklfhs
          <br> fhdjsklfhs
          <br>
          <span class="yes"><br></span> Q
          <br>
          <br>R<br> fhdjsklfhs
          <br> fhdjsklfhs
          <br> fhdjsklfhs
          <br> fhdjsklfhs
          <br> fhdjsklfhs
          <br>
          <br>S<br> fhdjsklfhs
          <br> fhdjsklfhs
          <br> fhdjsklfhs
          <br> fhdjsklfhs
          <br> fhdjsklfhs
          <br>
          <br>T<br> fhdjsklfhs
          <br> fhdjsklfhs
          <br> fhdjsklfhs
          <br>
          <br>U<br>
          <br>V<br> fhdjsklfhs
          <br> fhdjsklfhs
          <br> fhdjsklfhs
          <br>
          <br>W<br>
          <br>X<br>
          <br>Y<br> fhdjsklfhs
          <br>
          <br>Z<br> fhdjsklfhs
          <br>
        </div>

        【讨论】:

          【解决方案5】:

          我对 WordPress 主题使用了类似的方法。它在 Firefox 中看起来不错,并且在 Chromium/Chrome 中显示两列而不是四列以实现全屏宽度。

          当我增加每页的帖子数(砖)时,列数会增加以填满空间。

          Chrome 在升级到下一列之前似乎会渲染三个或更多块。

          【讨论】:

          • 是的,这个问题在 2020 年仍然存在; Chrome(仅限)拒绝使用超过 2 列,除非它具有更多砖块(6+)
          【解决方案6】:

          根据我对这个问题的经验,我发现 -webkit 需要排在最后(否则我猜它会尝试使用非 webkit 并失败)

                  column-count: 2; 
                  -moz-column-count: 2; 
                  -webkit-column-count: 2; 
          

          【讨论】:

            【解决方案7】:

            在 Chrome 80.0 遇到此问题后,解决方案来自对问题的评论:

            .childbrick {
                break-inside: avoid-column;
            }
            

            这解决了 Chrome 中奇怪的缺少列以及不使用 display:inline-block; 时发生的列拆分问题。

            The comment 引用了此解决方法的 Firefox 问题,但我发现 Firefox 版本 73 没有此类问题。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2013-08-04
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2014-09-02
              • 2013-04-18
              • 2011-12-11
              • 2013-07-25
              相关资源
              最近更新 更多