RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 608316
Accepted
Игорь
Игорь
Asked:2020-12-27 14:34:44 +0000 UTC2020-12-27 14:34:44 +0000 UTC 2020-12-27 14:34:44 +0000 UTC

列数和块包装。列数的细微差别

  • 772

你好!有一个.block包含三个块的容器.item-block。容器必须分为两列,第一列将包含前两个块,第二列 - 分别是最后一个。在这种情况下,必须满足条件:具有类的 div.item-block必须是 的直接后代.block。

我想实现 using column-count,但我遇到了一个问题:后者.item-block没有完全转移到第二列 - 部分保留在第一列中。请告诉我是否有可能修复这一刻,如果不能,是否有这种块的任何替代实现。链接到codepen中的示例。

* {
  box-sizing: border-box;
}
html, body {
  margin: 0;
  padding: 0;
  background: #d3d3d3;
}
.container {
  padding: 15px;
  background: #fff;
}
.block {
  column-count: 2;
}
.item-block {
  margin-bottom: 10px;
}
<div class="container">
  <div class="block">
    <div class="item-block">
      1. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua
    </div>
    <div class="item-block">
      2. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
    </div>
    <div class="item-block">
      3. Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur?
    </div>
  </div>
</div>

html
  • 5 5 个回答
  • 10 Views

5 个回答

  • Voted
  1. Best Answer
    Qwertiy
    2020-12-29T19:49:36Z2020-12-29T19:49:36Z

    它似乎工作:

    .item-block {
      margin-bottom: 10px;
      width: 100%;
      float: left;
      page-break-inside: avoid;
      break-inside: avoid;
    }
    

    完整的片段:

    * {
      box-sizing: border-box;
    }
    html, body {
      margin: 0;
      padding: 0;
      background: #d3d3d3;
    }
    .container {
      padding: 15px;
      background: #fff;
    }
    .block {
      -moz-column-count: 2;
      column-count: 2;
    }
    .item-block {
      margin-bottom: 10px;
      width: 100%;
      float: left;
      page-break-inside: avoid;
      break-inside: avoid;
    }
    <div class="container">
      <div class="block">
        <div class="item-block">
          1. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua
        </div>
        <div class="item-block">
          2. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
        </div>
        <div class="item-block">
          3. Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur?
        </div>
      </div>
    </div>

    • 19
  2. Qwertiy
    2020-12-27T14:41:37Z2020-12-27T14:41:37Z

    您可以尝试添加

    .item-block {
      page-break-inside: avoid;
      break-inside: avoid;
    }
    

    但效果有些具体...

    PS:https ://css-tricks.com/almanac/properties/b/break-inside/

    • 14
  3. Sasha Omelchenko
    2020-12-27T16:50:07Z2020-12-27T16:50:07Z

    您可以通过添加display: inline-block. 到目前为止,然后它将break-inside开始正常工作:)

    * {
      box-sizing: border-box;
    }
    html, body {
      margin: 0;
      padding: 0;
      background: #d3d3d3;
    }
    .container {
      padding: 15px;
      background: #fff;
    }
    .block {
      -moz-column-count: 2;
      column-count: 2;
    }
    .item-block {
      margin-bottom: 10px;
      display: inline-block;
    }
    <div class="container">
      <div class="block">
        <div class="item-block">
          1. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua
        </div>
        <div class="item-block">
          2. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
        </div>
        <div class="item-block">
          3. Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur?
        </div>
      </div>
    </div>

    • 12
  4. Vadim Ovchinnikov
    2020-01-03T00:29:44Z2020-01-03T00:29:44Z

    如果你想让 .item-block 元素换行

    由于@Qwertiy和@SashaOmelchenko的回答,基本上答案已经存在。它仍然只是解决容器额外高度的问题。

    据我所知,这只是 Chromium 浏览器(例如 Chrome)的问题。在 Firefox 和 IE 中,@SashaOmelchenko 的答案在没有容器错误的情况下有效。因此,允许您仅为其应用样式的 hack 适用于 Chromium @supports (-webkit-appearance:none)。并且以类似的方式,您可以选择可以为单个浏览器设置标记的技巧。

    所有代码

    * {
      box-sizing: border-box;
    }
    html, body {
      margin: 0;
      padding: 0;
      background: #d3d3d3;
    }
    .container {
      padding: 15px;
      background: #fff;
      border: 1px solid red;
    }
    .block {
      -moz-column-count: 2;
      column-count: 2;
    }
    
    .item-block:not(:last-child) {
      margin-bottom: 10px;
    }
    
    .item-block {
      display: inline-block;
    }
    
    /* Стили для Chrome */
    @supports (-webkit-appearance:none) {
      .item-block {
        width: 100%;
        float: left;
        page-break-inside: avoid;
        break-inside: avoid;
      }
    }
    <div class="container">
      <div class="block">
        <div class="item-block">
          1. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua
        </div>
        <div class="item-block">
          2. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
        </div>
        <div class="item-block">
          3. Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur?
        </div>
      </div>
    </div>

    • 6
  5. Vadim Ovchinnikov
    2020-12-27T18:34:16Z2020-12-27T18:34:16Z

    如果你想.item-block移动元素

    设置为.item-block display: flex;。

    此外,要仅在块之间设置缩进而不影响最后一个item-block(无论margin-bottom: 10px;最后一个没有),请像这样设置缩进。

    .item-block + .item-block {
      margin-top: 10px;
    }
    

    运行示例

    * {
      box-sizing: border-box;
    }
    
    html, body {
      margin: 0;
      padding: 0;
      background: #d3d3d3;
    }
    
    .container {
      padding: 15px;
      background: #fff;
    }
    
    .block {
      column-count: 2;
    }
    
    .item-block {
      display: flex;
    }
    
    .item-block + .item-block {
      margin-top: 10px;
    }
    <div class="container">
      <div class="block">
        <div class="item-block">
          1. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua
        </div>
        <div class="item-block">
          2. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
        </div>
        <div class="item-block">
          3. Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur?
        </div>
      </div>
    </div>

    • 5

相关问题

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    如何停止编写糟糕的代码?

    • 3 个回答
  • Marko Smith

    onCreateView 方法重构

    • 1 个回答
  • Marko Smith

    通用还是非通用

    • 2 个回答
  • Marko Smith

    如何访问 jQuery 中的列

    • 1 个回答
  • Marko Smith

    *.tga 文件的组重命名(3620 个)

    • 1 个回答
  • Marko Smith

    内存分配列表C#

    • 1 个回答
  • Marko Smith

    常规赛适度贪婪

    • 1 个回答
  • Marko Smith

    如何制作自己的自动完成/自动更正?

    • 1 个回答
  • Marko Smith

    选择斐波那契数列

    • 2 个回答
  • Marko Smith

    所有 API 版本中的通用权限代码

    • 2 个回答
  • Martin Hope
    jfs *(星号)和 ** 双星号在 Python 中是什么意思? 2020-11-23 05:07:40 +0000 UTC
  • Martin Hope
    hwak 哪个孩子调用了父母的静态方法?还是不可能完成的任务? 2020-11-18 16:30:55 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    user207618 Codegolf——组合选择算法的实现 2020-10-23 18:46:29 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    Arch ArrayList 与 LinkedList 的区别? 2020-09-20 02:42:49 +0000 UTC
  • Martin Hope
    iluxa1810 哪个更正确使用:if () 或 try-catch? 2020-08-23 18:56:13 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5