【问题标题】:masonry - Show images in one column if page resizesmasonry - 如果页面调整大小,则在一列中显示图像
【发布时间】:2018-12-03 05:32:48
【问题描述】:

关于这里的演示:imagesLoadedDemo

    <div class="grid">
      <div class="grid-sizer"></div>
      <div class="grid-item">
        <img src="https://s3-us-west-2.amazonaws.com/s.cdpn.io/82/orange-tree.jpg" />
      </div>
      <div class="grid-item">
        <img src="https://s3-us-west-2.amazonaws.com/s.cdpn.io/82/submerged.jpg" />
      </div>
      <div class="grid-item">
        <img src="https://s3-us-west-2.amazonaws.com/s.cdpn.io/82/look-out.jpg" />
      </div>
      <div class="grid-item">
        <img src="https://s3-us-west-2.amazonaws.com/s.cdpn.io/82/one-world-trade.jpg" />
      </div>
      <div class="grid-item">
        <img src="https://s3-us-west-2.amazonaws.com/s.cdpn.io/82/drizzle.jpg" />
      </div>
      <div class="grid-item">
        <img src="https://s3-us-west-2.amazonaws.com/s.cdpn.io/82/cat-nose.jpg" />
      </div>
      <div class="grid-item">
        <img src="https://s3-us-west-2.amazonaws.com/s.cdpn.io/82/contrail.jpg" />
      </div>
      <div class="grid-item">
        <img src="https://s3-us-west-2.amazonaws.com/s.cdpn.io/82/golden-hour.jpg" />
      </div>
      <div class="grid-item">
        <img src="https://s3-us-west-2.amazonaws.com/s.cdpn.io/82/flight-formation.jpg" />
      </div>
    </div>

css代码:

    .grid {
      background: #DDD;
    }

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

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

    .grid-sizer,
    .grid-item {
      width: 33.333%;
    }

    .grid-item {
      float: left;
    }

    .grid-item img {
      display: block;
      width: 100%;
    }

当我调整页面大小时,图像会变小并相应调整。但是图像总是以三列呈现。

待办事项:如果页面调整为非常小的布局,我希望将其呈现在一列中。

【问题讨论】:

    标签: css masonry imagesloaded


    【解决方案1】:

    使用基于屏幕尺寸的媒体查询调整grid-sizergrid-item 类的宽度。

    // external js: masonry.pkgd.js, imagesloaded.pkgd.js
    
    // init Masonry after all images have loaded
    var $grid = $('.grid').imagesLoaded( function() {
      $grid.masonry({
        itemSelector: '.grid-item',
        percentPosition: true,
        columnWidth: '.grid-sizer'
      }); 
    });
    * { box-sizing: border-box; }
    
    /* force scrollbar */
    html { overflow-y: scroll; }
    
    body { font-family: sans-serif; }
    
    /* ---- grid ---- */
    
    .grid {
      background: #DDD;
    }
    
    /* clear fix */
    .grid:after {
      content: '';
      display: block;
      clear: both;
    }
    
    /* ---- .grid-item ---- */
    
    .grid-sizer,
    .grid-item {
      width: 33.333%;
    }
    
    .grid-item {
      float: left;
    }
    
    .grid-item img {
      display: block;
      width: 100%;
    }
    
    @media only screen and (max-width: 479px) {
    	.grid-sizer, .grid-item { width: 100%; }
    }
    @media only screen and (min-width: 480px) and (max-width: 767px) {
    	.grid-sizer, .grid-item { width: calc(100% / 2); }
    }
    @media only screen and (min-width: 768px) and (max-width: 1023px) {
    	.grid-sizer, .grid-item { width: calc(100% / 3); }
    }
    <h1>Masonry - imagesLoaded callback</h1>
    
    <div class="grid">
      <div class="grid-sizer"></div>
      <div class="grid-item">
        <img src="https://s3-us-west-2.amazonaws.com/s.cdpn.io/82/orange-tree.jpg" />
      </div>
      <div class="grid-item">
        <img src="https://s3-us-west-2.amazonaws.com/s.cdpn.io/82/submerged.jpg" />
      </div>
      <div class="grid-item">
        <img src="https://s3-us-west-2.amazonaws.com/s.cdpn.io/82/look-out.jpg" />
      </div>
      <div class="grid-item">
        <img src="https://s3-us-west-2.amazonaws.com/s.cdpn.io/82/one-world-trade.jpg" />
      </div>
      <div class="grid-item">
        <img src="https://s3-us-west-2.amazonaws.com/s.cdpn.io/82/drizzle.jpg" />
      </div>
      <div class="grid-item">
        <img src="https://s3-us-west-2.amazonaws.com/s.cdpn.io/82/cat-nose.jpg" />
      </div>
      <div class="grid-item">
        <img src="https://s3-us-west-2.amazonaws.com/s.cdpn.io/82/contrail.jpg" />
      </div>
      <div class="grid-item">
        <img src="https://s3-us-west-2.amazonaws.com/s.cdpn.io/82/golden-hour.jpg" />
      </div>
      <div class="grid-item">
        <img src="https://s3-us-west-2.amazonaws.com/s.cdpn.io/82/flight-formation.jpg" />
      </div>
    </div>

    follow the reference here

    【讨论】:

    • 这确实将图像设置在调整大小的一列中,但问题是我有一些图像,例如 1024x768、400x602、24X24。这个 24x24 不是小渲染,我的意思是实际大小,它扩展到 20%。有没有一种解决方案可以让小图像完全渲染并仅对大图像进行调整大小?
    • .grid-item img { 显示:块;最大宽度:100%;这解决了我的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-18
    • 1970-01-01
    • 1970-01-01
    • 2016-02-29
    • 2017-06-21
    • 2015-03-16
    相关资源
    最近更新 更多