gpt4 book ai didi

javascript - 使 Flickity 图像适合

转载 作者:太空宇宙 更新时间:2023-11-04 11:03:01 27 4
gpt4 key购买 nike

我正在创建一个 Flickity幻灯片显示图像应适合包含元素的位置,这样就无需滚动即可查看所有图像。目前我有它,所以图像会填充可用宽度,但你会垂直滚动。

我在 jsFiddle 上创建了一个示例我正在尝试做的事情。我也在使用 LazySizes插件并使用 srcsetsizesPicturefill ,但我认为问题与这些问题无关,因为问题似乎是 Flickity 通过内联样式向 flickity-viewport 元素添加了一个高度,该元素是根据自然高度计算的图片的高度,而不是它的缩放高度。

HTML

 <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

.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

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 docs似乎建议我应该能够在 CSS 中设置 100% 的高度,但每当我向 CSS 添加高度或使用 setGallerySize: false 时,我的图库都没有高度。

最佳答案

我不确定这是否是您正在寻找的答案,但您可以在父容器(在本例中为正文)上设置一个高度,以便幻灯片放映的 100% 高度实际上有一个高度.

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

在这种情况下,我添加了这个 css

body, html {
height: 100%;
}

关于javascript - 使 Flickity 图像适合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34169304/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com