我的情况是:
1) 在 Firefox 上,carouFredSel carousal 中的图像是响应式的,即当我们改变窗口大小时,可以在 caroufredsel_wrapper 上将图像调整为新的宽度和高度。
2) 在 Chrome 上,不显示 carousal 中的图像。但是,当我们改变屏幕尺寸时,哪怕是一点点,图像都会以非物质形式出现并具有响应性。
var $j = jQuery.noConflict();
/**
* Init media gallery. Init carousel. Init zoom.
*/
function initMediaGallery() {
...
$j('#prod-gal').carouFredSel({
direction : "left",
responsive : true,
width : "100%",
height : "null",
prev : ".slick-prev",
next : ".slick-next",
items : {
display : "block",
float : "left",
height : "706",
visible : 2,
start : 0
},
scroll : {
items : {
visible:
{
min: 2,
max: 2
}
},
easing : "swing",
duration : 150,
pauseOnHover : true
},
auto : {
play : false,
timeoutDuration : 2000,
},
pagination: {
container : ".pagination",
anchorBuilder : false
},
});
}
** 据我了解,在我的情况下,图像高度可以是“可变的”或一个固定值,例如 706。这只是初始全屏尺寸,当我们设置“responsive: ture”时,carouFredSel 应该可以自动计算所有图像的尺寸。但是为什么会这样呢??
查看源代码,我们可以在 Chrome 上看到 .caroufredsel_wrapper height=0。一旦我们稍微改变浏览器大小,它将是 height=706(例如,在我的情况下)。
我尝试使用 resize 事件(如下所示)将包装器设置为初始大小,但它不起作用,除非我设置了固定值,例如 706。但如果我们设置一个固定值,它将始终是这个高度。
onCreate: function () {
var self = this;
$j(window).on('resize', function () {
$j(self).parent().height($j(self).children().first().height());
}).trigger('resize');
}
我们可以调试js,看到返回的高度默认为0,即使我们在初始化时为每个项目图像设置了一个固定值。
console.log($j(self).children().first().height());
到目前为止,我们可以假设在初始化 carouFredSel 对象时,carouFreSel js 无法正确创建高度。最后,我尝试进行此更改,因为在 Chrome 上启动时计算图像高度时 carouFredSel 看起来有一些“错误”(我猜)。
<script type="text/javascript">
//jQuery(document).ready(function(){
jQuery(window).load(function(){ /* */
initMediaGallery();
});
</script>