【问题标题】:50% width on masonry elements砖石元素的 50% 宽度
【发布时间】:2020-09-11 05:05:07
【问题描述】:

目前我正在尝试使用 Masonry.desanto 将砌体布局应用到我的网站

如果我需要前两个块的大小为总父宽度的 50%,但我无法使用这个库来做到这一点。秒元素总是低于第一个元素。无论我是否使用像宽度这样的 CSS:calc(50% - 100px)。 在此处查看示例:https://codepen.io/josebelisario/pen/JjXvPKL

// external js: masonry.pkgd.js

$('.grid').masonry({
  itemSelector: '.grid-item',
  columnWidth: '.grid-sizer',
  percentPosition: true,
  horizontalOrder: true,
  gutter: 15
});
* { box-sizing: border-box; }

body { font-family: sans-serif; }

/* ---- grid ---- */

.grid {
  background: #EEE;
  max-width: 1200px;
}

/* clearfix */
.grid:after {
  content: '';
  display: block;
  clear: both;
}

/* ---- grid-item ---- */

.grid-sizer,
.grid-item {
  width: calc(33.33% - 30px);
}

.grid-item {
  color: white;
  height: 120px;
  float: left;
  background: #D26;
  border: 2px solid #333;
  border-color: hsla(0, 0%, 0%, 0.5);
  border-radius: 5px;
  margin-bottom: 15px;
}

.grid-item--height2 { height: 200px; }
.grid-item--height3 { height: 260px; }
.grid-item--height4 { height: 360px; }

.item-40 { width: calc(40% - 30px); }
.item-50 { width: calc(50% - 30px); }
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script src="https://masonry.desandro.com/masonry.pkgd.js"></script>
<h1>Masonry - fluid columnWidth</h1>

<div class="grid">
  <div class="grid-sizer"></div>
  <div class="grid-item item-50">1</div>
  <div class="grid-item item-50">2</div>
  <div class="grid-item grid-item--height2">3</div>
  <div class="grid-item grid-item--height3">4</div>
  <div class="grid-item grid-item--height2">5</div>
  <div class="grid-item item-40">6</div>
  <div class="grid-item">7</div>
  <div class="grid-item">8</div>
  <div class="grid-item grid-item--height2">9</div>
  <div class="grid-item item-40 grid-item--height3">10</div>
  <div class="grid-item">11</div>
  <div class="grid-item grid-item--height2">12</div>
  <div class="grid-item">13</div>
  <div class="grid-item item-50 grid-item--height2">14</div>
  <div class="grid-item item-40">15</div>
  <div class="grid-item">16</div>
  <div class="grid-item grid-item--height2">17</div>
  <div class="grid-item">18</div>
  <div class="grid-item">19</div>
  <div class="grid-item grid-item--height3">20</div>
  <div class="grid-item grid-item--height2">21</div>
  <div class="grid-item">22</div>
  <div class="grid-item">23</div>
  <div class="grid-item grid-item--height2">24</div>
  <div class="grid-item">25</div>
</div>

【问题讨论】:

    标签: javascript jquery-masonry


    【解决方案1】:

    对于您的具体示例,您需要为.grid-sizer 类考虑最小公分母(想想分数)。 (在这种情况下,您的网格看起来应该是 6 列,其中 50% 的框占 3/6,常规的 .grit-item 框占 2/6。为了安全地计算砖石网格中的宽度,我也从不四舍五入 %,所以你的 .grid-sizer 宽度可能应该是 width:calc(16.66% - 15px)

    还有一件事要注意...如果您希望垂直和水平装订线空间均匀,请从您的等式中减去相同的像素值(而不是 33.33% - 30px 尝试 33.33% - 15px。这会给它真正的砖石网格外观。

    我在下面为您的示例提供了更新的 CSS。将其复制并粘贴到您的 CodePen 中,您应该会看到很大的改进。

    * { box-sizing: border-box; }
    
    body { font-family: sans-serif; }
    
    /* ---- grid ---- */
    
    .grid {
      background: #EEE;
      max-width: 1200px;
    }
    
    /* clearfix */
    .grid:after {
      content: '';
      display: block;
      clear: both;
    }
    
    /* ---- grid-item ---- */
    
    .grid-sizer{
      width: calc(16.66% - 15px);
    }
    .grid-item {
      width: calc(33.33% - 15px);
    }
    
    .grid-item {
      color: white;
      height: 120px;
      float: left;
      background: #D26;
      border: 2px solid #333;
      border-color: hsla(0, 0%, 0%, 0.5);
      border-radius: 5px;
      margin-bottom: 15px;
    }
    
    .grid-item--height2 { height: 200px; }
    .grid-item--height3 { height: 260px; }
    .grid-item--height4 { height: 360px; }
    
    .item-40 { width: calc(40% - 15px); }
    .item-50 { width: calc(50% - 15px); }
    

    如果这个答案对你有用,请告诉我! :)

    【讨论】:

    • 将其标记为已接受,因为它解决了我的问题,但就我而言,我最终重写了一个更简单的砌体脚本,其行为完全符合我的要求。谢谢
    • 很高兴你让它在你需要的地方工作! :)
    猜你喜欢
    • 2020-10-09
    • 1970-01-01
    • 1970-01-01
    • 2015-03-18
    • 1970-01-01
    • 2018-04-25
    • 1970-01-01
    • 1970-01-01
    • 2019-07-29
    相关资源
    最近更新 更多