首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使Flickity图像适合

使Flickity图像适合
EN

Stack Overflow用户
提问于 2015-12-09 01:37:00
回答 2查看 7.2K关注 0票数 0

我正在创建一个轻盈幻灯片,其中的图像应该适合包含的元素,这样就不需要滚动来查看所有的图像。目前,我有它,所以图像填补了可用的宽度,但你得到垂直滚动。

我在jsFiddle上创建了一个例子来说明我想要做的事情。我也在使用LazySizes插件,在皮图中使用srcsetsizes,但我不认为这个问题与任何问题有关,因为问题似乎是,Flickity通过内联样式向flickity-viewport元素添加了一个高度,该元素是根据图像的自然高度计算的,而不是其缩放的高度。

代码语言:javascript
复制
 <div class="gallery js-flickity" data-flickity-options='{
    "cellAlign": "left",
    "contain": true,
    "wrapAround": true,
    "freeScroll": true,
    "pageDots": false,
    "imagesLoaded": true
  }'>
<div class="gallery-cell">
  <div class="ratio-box">
    <img data-src="http://lorempixel.com/320/238/sports/cell-1a/" data-srcset="http://lorempixel.com/320/238/sports/cell-1a/ 320w,
        http://lorempixel.com/480/357/sports/cell-1a/ 480w,
        http://lorempixel.com/600/446/sports/cell-1a/ 600w,
        http://lorempixel.com/768/571/sports/cell-1a/ 768w" data-sizes="(min-aspect-ratio: 13/9.6) 74.29vh" alt="" class="lazyload">
  </div>
</div>
<div class="gallery-cell">
  <div class="ratio-box">
    <img data-src="http://lorempixel.com/320/238/sports/cell-1b/" data-srcset="http://lorempixel.com/320/238/sports/cell-1b/ 320w,
        http://lorempixel.com/480/357/sports/cell-1b/ 480w,
        http://lorempixel.com/600/446/sports/cell-1b/ 600w,
        http://lorempixel.com/768/571/sports/cell-1b/ 768w" data-sizes="(min-aspect-ratio: 13/9.6) 74.29vh" alt="" class="lazyload">
  </div>
</div>
<div class="gallery-cell">
  <div class="ratio-box">
    <img data-src="http://lorempixel.com/320/238/sports/cell-1c/" data-srcset="http://lorempixel.com/320/238/sports/cell-1c/ 320w,
        http://lorempixel.com/480/357/sports/cell-1c/ 480w,
        http://lorempixel.com/600/446/sports/cell-1c/ 600w,
        http://lorempixel.com/768/571/sports/cell-1c/ 768w" data-sizes="(min-aspect-ratio: 13/9.6) 74.29vh" alt="" class="lazyload">
  </div>
</div>

SCSS

代码语言:javascript
复制
.gallery,
.gallery-cell {
  /* height: 100%; 
  enabling this in conjunction with 
  'setGallerySize: false' means the gallery has no height */
}

.gallery-cell {
  width: 100%;
  visibility: hidden;
}

.flickity-slider > .gallery-cell {
  visibility: visible;
}

.ratio-box {
  height: 0;
  width: 100%;
  padding-bottom: 74.3648961%;
  position: relative;
  img {
    display: block;
    width: 100%;
    height: 100%;
    position: absolute;
    top: 0;
    left: 0;
  }
}

CSS的其余部分来自flickity.css

JS

代码语言:javascript
复制
window.lazySizesConfig = window.lazySizesConfig || {};
window.lazySizesConfig.loadMode = 1;
window.lazySizesConfig.expand = 222;
window.lazySizesConfig.expFactor = 1.6;

(function() {
var oldFlickityCreate = window.Flickity.prototype._create;

window.Flickity.prototype._create = function() {
  var that = this;
  if (this.element.addEventListener) {
    this.element.addEventListener('load', function() {
      that.onresize();
    }, true);
  }
  this._create = oldFlickityCreate;
  return oldFlickityCreate.apply(this, arguments);
};
})();

Flickity文档似乎建议我应该能够在CSS中设置100%的高度,但是每当我向CSS添加一个高度或使用setGallerySize: false时,我的图库就没有高度。

EN

回答 2

Stack Overflow用户

发布于 2015-12-09 03:42:33

我不确定这是否是您想要的答案,但是您可以在父容器上设置一个高度(在本例中是身体),这样幻灯片的100%的高度实际上就会有一个高度。

这里可以看到一个例子。http://jsfiddle.net/jm82g4yr/

在这个例子中,我添加了这个css

代码语言:javascript
复制
body, html {
  height: 100%;
}
票数 0
EN

Stack Overflow用户

发布于 2016-08-14 19:31:33

当Flickity出现时,尝试选项adaptiveHeight。这对我有帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34169304

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档