【问题标题】:How to accomplish a masonry layout like Google Keep with Bulma?如何使用 Bulma 完成像 Google Keep 这样的砌体布局?
【发布时间】:2018-10-13 17:33:17
【问题描述】:

我想得到类似的东西:

我正在使用 Bulma,目前我正在使用带有 is_multiline 选项的 Columns。但我唯一能得到的是:

我想消除卡片之间的差距,我想使用更多的弹性框选项。它也必须具有响应性。

.card-columns {
  column-count: 1;
  column-gap: 1.5rem;
  padding: 1.5rem;
}

.card-columns .card {
  display: inline-block;
  width: 100%;
  margin-bottom: 1.5rem;
}

.columns-6 {
    column-count: 6;
  }
  .columns-5 {
    column-count: 5;
  }
  .columns-4 {
    column-count: 4;
  }
  .columns-3 {
    column-count: 3;
  }
  .columns-2 {
    column-count: 2;
  }
  .columns-1 {
    column-count: 1;
  }

  @media (max-width: 768px) {
    .columns-6-mobile {
      column-count: 6;
    }
    .columns-5-mobile {
      column-count: 5;
    }
    .columns-4-mobile {
      column-count: 4;
    }
    .columns-3-mobile {
      column-count: 3;
    }
    .columns-2-mobile {
      column-count: 2;
    }
    .columns-1-mobile {
      column-count: 1;
    }
  }

  @media (min-width: 769px) { 
    .columns-6-tablet {
      column-count: 6;
    }
    .columns-5-tablet {
      column-count: 5;
    }
    .columns-4-tablet {
      column-count: 4;
    }
    .columns-3-tablet {
      column-count: 3;
    }
    .columns-2-tablet {
      column-count: 2;
    }
    .columns-1-tablet {
      column-count: 1;
    }
  }

  @media (min-width: 1024px) { 
    .columns-6-desktop {
      column-count: 6;
    }
    .columns-5-desktop {
      column-count: 5;
    }
    .columns-4-desktop {
      column-count: 4;
    }
    .columns-3-desktop {
      column-count: 3;
    }
    .columns-2-desktop {
      column-count: 2;
    }
    .columns-1-desktop {
      column-count: 1;
    }
  }

  @media (min-width: 1216px) { 
    .columns-6-widescreen {
      column-count: 6;
    }
    .columns-5-widescreen {
      column-count: 5;
    }
    .columns-4-widescreen {
      column-count: 4;
    }
    .columns-3-widescreen {
      column-count: 3;
    }
    .columns-2-widescreen {
      column-count: 2;
    }
    .columns-1-widescreen {
      column-count: 1;
    }
  }

  @media (min-width: 1408px) { 
    .columns-6-fullhd {
      column-count: 6;
    }
    .columns-5-fullhd {
      column-count: 5;
    }
    .columns-4-fullhd {
      column-count: 4;
    }
    .columns-3-fullhd {
      column-count: 3;
    }
    .columns-2-fullhd {
      column-count: 2;
    }
    .columns-1-fullhd {
      column-count: 1;
    }
  }
<link href="https://cdnjs.cloudflare.com/ajax/libs/bulma/0.7.2/css/bulma.css" rel="stylesheet"/>

<div class="card-columns columns-6-fullhd columns-5-widescreen columns-4-desktop columns-3-tablet columns-2-mobile">
    <div class="card card-content">Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book.</div>
    <div class="card card-content">It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout. </div>
    <div class="card card-content">There are many variations of passages of Lorem Ipsum available</div>
    <div class="card card-content">Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book.</div>
    <div class="card card-content">Latin words, combined with a handful of model sentence structures, to generate Lorem Ipsum which looks reasonable. The generated Lorem Ipsum is therefore always free from repetition, injected humour, or non-characteristic words etc.</div>
    <div class="card card-content">There are many variations of passages of Lorem Ipsum available</div>
    <div class="card card-content">It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout. </div>
    <div class="card card-content">Latin words, combined with a handful of model sentence structures, to generate Lorem Ipsum which looks reasonable. The generated Lorem Ipsum is therefore always free from repetition, injected humour, or non-characteristic words etc.</div>
</div>

编辑:我尝试了以下解决方案之一,但它在 4 列以上不起作用。我更新了sn-p。

【问题讨论】:

  • 这里可以选择 JavaScript 吗?这很简单,否则请参阅stackoverflow.com/questions/43901955/…,基本上就是这样。还有stackoverflow.com/questions/44377343/css-only-masonry-layout
  • 您是否考虑过css grids 或者您正在寻找一个完全跨浏览器的解决方案。
  • @BobbyAxe CSS 网格布局的一个重要警告是,如果您事先知道每个框的尺寸,它仅适用于砖石布局;它不能动态工作。这在这里可能不是问题,但我觉得应该提到它以防万一。
  • @BobbyAxe 不,我没有,但这对我来说似乎是一个很好的解决方案,因为我会知道每个盒子的尺寸。

标签: html css flexbox bulma


【解决方案1】:

在您的情况下,我认为您应该使用该列创建多个 css 类,并在媒体的帮助下,您可以根据需要设置列号,试试这个解决方案希望它会有所帮助:

.card-columns {
    column-count: 1;
    column-gap: 1.5rem;
    padding: 1.5rem;
}

.card-columns .card {
   display: inline-block;
   width: 100%;
   margin-bottom: 1.5rem;
}

.columns-6 {
   column-count: 6;
}
.columns-5 {
   column-count: 5;
}
.columns-4 {
   column-count: 4;
}
.columns-3 {
   column-count: 3;
}
.columns-2 {
   column-count: 2;
}
.columns-1 {
   column-count: 1;
}

@media (min-width: 576px) {
  .columns-6-sm {
    column-count: 6;
  }
  .columns-5-sm {
    column-count: 5;
  }
  .columns-4-sm {
    column-count: 4;
  }
  .columns-3-sm {
    column-count: 3;
  }
  .columns-2-sm {
    column-count: 2;
  }
  .columns-1-sm {
    column-count: 1;
  }
}

@media (min-width: 768px) {
  .columns-6-md {
    column-count: 6;
  }
  .columns-5-md {
    column-count: 5;
  }
  .columns-4-md {
    column-count: 4;
  }
  .columns-3-md {
    column-count: 3;
  }
  .columns-2-md {
    column-count: 2;
  }
  .columns-1-md {
    column-count: 1;
  }
}

@media (min-width: 992px) { 
  .columns-6-lg {
    column-count: 6;
  }
  .columns-5-lg {
    column-count: 5;
  }
  .columns-4-lg {
    column-count: 4;
  }
  .columns-3-lg {
    column-count: 3;
  }
  .columns-2-lg {
    column-count: 2;
  }
  .columns-1-lg {
    column-count: 1;
  }
}

@media (min-width: 1200px) { 
  .columns-6-xl {
    column-count: 6;
  }
  .columns-5-xl {
    column-count: 5;
  }
  .columns-4-xl {
    column-count: 4;
  }
  .columns-3-xl {
    column-count: 3;
  }
  .columns-2-xl {
    column-count: 2;
  }
  .columns-1-xl {
    column-count: 1;
  }
}
<link href="https://bulma.io/css/bulma-docs.min.css?v=201810132054" rel="stylesheet" />

<div class="card-columns  columns-6-xl columns-5-lg columns-4-md columns-3-sm ">

    <div class="card card-content">Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book.</div>

    <div class="card card-content">It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout. </div>

    <div class="card card-content">There are many variations of passages of Lorem Ipsum available</div>

    <div class="card card-content">Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book.</div>

    <div class="card card-content">Latin words, combined with a handful of model sentence structures, to generate Lorem Ipsum which looks reasonable. The generated Lorem Ipsum is therefore always free from repetition, injected humour, or non-characteristic words etc.</div>

    <div class="card card-content">There are many variations of passages of Lorem Ipsum available</div>

    <div class="card card-content">It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout. </div>

    <div class="card card-content">Latin words, combined with a handful of model sentence structures, to generate Lorem Ipsum which looks reasonable. The generated Lorem Ipsum is therefore always free from repetition, injected humour, or non-characteristic words etc.</div>

    <div class="card card-content">Latin words, combined with a handful of model sentence structures, to generate Lorem Ipsum which looks reasonable. The generated Lorem Ipsum is therefore always free from repetition, injected humour, or non-characteristic words etc.</div>
    
        <div class="card card-content">Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book.</div>

    <div class="card card-content">It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout. </div>

    <div class="card card-content">There are many variations of passages of Lorem Ipsum available</div>

    <div class="card card-content">Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book.</div>

    <div class="card card-content">Latin words, combined with a handful of model sentence structures, to generate Lorem Ipsum which looks reasonable. The generated Lorem Ipsum is therefore always free from repetition, injected humour, or non-characteristic words etc.</div>

    <div class="card card-content">There are many variations of passages of Lorem Ipsum available</div>

    <div class="card card-content">It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout. </div>

    <div class="card card-content">Latin words, combined with a handful of model sentence structures, to generate Lorem Ipsum which looks reasonable. The generated Lorem Ipsum is therefore always free from repetition, injected humour, or non-characteristic words etc.</div>

    <div class="card card-content">Latin words, combined with a handful of model sentence structures, to generate Lorem Ipsum which looks reasonable. The generated Lorem Ipsum is therefore always free from repetition, injected humour, or non-characteristic words etc.</div>

</div>

【讨论】:

  • 我想为大屏幕设置最多 6 列,但它不起作用!
  • 只需添加 6 列类 如果您使用的是 sass 会很容易,但我会编辑我的答案!再试一次
  • 我确实更新了上面的 sn-p,但它不起作用。我错过了什么吗?
  • 您还需要在 Media Query 中设置 classes,我确实更新了我的答案检查它
  • 我做到了,似乎我做了完全相同的事情,我错过了什么!?
【解决方案2】:

我希望你正在寻找这个,请看看下面的工作 sn-p。

<link href="https://bulma.io/css/bulma-docs.min.css?v=201810132054" rel="stylesheet" />

<br>
<div class="container">
  <div class="columns is-multiline is-mobile">
    <div class="column is-one-fifth-widescreen is-one-quarter-desktop is-one-third-tablet is-half-mobile">
      <div class="card bd-klmn">
        <div class="card-content">Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book.</div>
      </div>
      <div class="card bd-klmn">
        <div class="card-content">It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout.</div>
      </div>
      <div class="card bd-klmn">
        <div class="card-content">There are many variations of passages of Lorem Ipsum available</div>
      </div>
    </div>
    <div class="column is-one-fifth-widescreen is-one-quarter-desktop is-one-third-tablet is-half-mobile">
      <div class="card bd-klmn">
        <div class="card-content">It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout.</div>
      </div>
      <div class="card bd-klmn">
        <div class="card-content">There are many variations of passages of Lorem Ipsum available</div>
      </div>
      <div class="card bd-klmn">
        <div class="card-content">Latin words, combined with a handful of model sentence structures, to generate Lorem Ipsum which looks reasonable. The generated Lorem Ipsum is therefore always free from repetition, injected humour, or non-characteristic words etc.</div>
      </div>
    </div>
    <div class="column is-one-fifth-widescreen is-one-quarter-desktop is-one-third-tablet is-half-mobile">
      <div class="card bd-klmn">
        <div class="card-content">There are many variations of passages of Lorem Ipsum available</div>
      </div>
      <div class="card bd-klmn">
        <div class="card-content">Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book.</div>
      </div>
      <div class="card bd-klmn">
        <div class="card-content">Latin words, combined with a handful of model sentence structures, to generate Lorem Ipsum which looks reasonable. The generated Lorem Ipsum is therefore always free from repetition, injected humour, or non-characteristic words etc.</div>
      </div>
    </div>
    <div class="column is-one-fifth-widescreen is-one-quarter-desktop is-one-third-tablet is-half-mobile">
      <div class="card bd-klmn">
        <div class="card-content">Latin words, combined with a handful of model sentence structures, to generate Lorem Ipsum which looks reasonable. The generated Lorem Ipsum is therefore always free from repetition, injected humour, or non-characteristic words etc.</div>
      </div>
      <div class="card bd-klmn">
        <div class="card-content">There are many variations</div>
      </div>
      <div class="card bd-klmn">
        <div class="card-content">It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout.</div>
      </div>
    </div>
  </div>
</div>

根据更新的问题要求更新答案,只需对列类进行小幅更新,我们就完成了

<link href="https://cdnjs.cloudflare.com/ajax/libs/bulma/0.7.2/css/bulma.css" rel="stylesheet"/>
<style>
  .mb-medium { margin-bottom: 1.5rem }
</style>
<br>
<div class="container">
  <div class="columns is-multiline is-mobile">
    <div class="column is-one-fifth-widescreen is-one-quarter-desktop is-one-third-tablet is-half-mobile">
      <div class="card mb-medium">
        <div class="card-content">Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book.</div>
      </div>
      <div class="card mb-medium">
        <div class="card-content">It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout.</div>
      </div>
      <div class="card mb-medium">
        <div class="card-content">There are many variations of passages of Lorem Ipsum available</div>
      </div>
    </div>
    <div class="column is-one-fifth-widescreen is-one-quarter-desktop is-one-third-tablet is-half-mobile">
      <div class="card mb-medium">
        <div class="card-content">It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout.</div>
      </div>
      <div class="card mb-medium">
        <div class="card-content">There are many variations of passages of Lorem Ipsum available</div>
      </div>
      <div class="card mb-medium">
        <div class="card-content">Latin words, combined with a handful of model sentence structures, to generate Lorem Ipsum which looks reasonable. The generated Lorem Ipsum is therefore always free from repetition, injected humour, or non-characteristic words etc.</div>
      </div>
    </div>
    <div class="column is-one-fifth-widescreen is-one-quarter-desktop is-one-third-tablet is-half-mobile">
      <div class="card mb-medium">
        <div class="card-content">There are many variations of passages of Lorem Ipsum available</div>
      </div>
      <div class="card mb-medium">
        <div class="card-content">Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book.</div>
      </div>
      <div class="card mb-medium">
        <div class="card-content">Latin words, combined with a handful of model sentence structures, to generate Lorem Ipsum which looks reasonable. The generated Lorem Ipsum is therefore always free from repetition, injected humour, or non-characteristic words etc.</div>
      </div>
    </div>
    <div class="column is-one-fifth-widescreen is-one-quarter-desktop is-one-third-tablet is-half-mobile">
      <div class="card mb-medium">
        <div class="card-content">Latin words, combined with a handful of model sentence structures, to generate Lorem Ipsum which looks reasonable. The generated Lorem Ipsum is therefore always free from repetition, injected humour, or non-characteristic words etc.</div>
      </div>
      <div class="card mb-medium">
        <div class="card-content">There are many variations</div>
      </div>
      <div class="card mb-medium">
        <div class="card-content">It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout.</div>
      </div>
    </div>
  </div>
</div>

【讨论】:

  • 感谢您的回答,但我更新了我的 sn-p 以便您查看我希望它根据我使用的设备做出响应。
  • @Cyril,请根据更新的需求查看上面的代码,希望对您有所帮助:)
  • 这是一个好的开始,但并没有按预期工作。没有办法有 5 列。有 3 列,有一些非预期的差距。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-05
  • 1970-01-01
  • 1970-01-01
  • 2017-05-23
  • 1970-01-01
  • 2014-12-13
相关资源
最近更新 更多