我想在移动设备中显示3个缩略图,在flex滑块中显示4个缩略图。为此,我使用的是带有动态最小/最大范围版本的flex slider的轮播。如果调整该页面的大小,则会看到根据浏览器窗口宽度更改的Thmubanils数量。但是,当我在我的网站或JSFIDDLE中使用相同的代码或无效的任何地方时使用相同的代码。这是JSFIDDLE的证明和相同的代码:
(function() {
// store the slider in a local variable
var $window = $(window),
flexslider = {
vars: {}
};
// tiny helper function to add breakpoints
function getGridSize() {
return (window.innerWidth < 600) ? 2 :
(window.innerWidth < 900) ? 3 : 4;
}
$window.load(function() {
$('.flexslider').flexslider({
animation: "slide",
animationLoop: false,
itemWidth: 210,
itemMargin: 5,
minItems: getGridSize(), // use function to pull in initial value
maxItems: getGridSize() // use function to pull in initial value
});
});
// check grid size on resize event
$window.resize(function() {
var gridSize = getGridSize();
flexslider.vars.minItems = gridSize;
flexslider.vars.maxItems = gridSize;
});
}());
.container {
width: 70%;
max-width: 1100px;
margin: auto;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/flexslider/2.6.3/jquery.flexslider.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/flexslider/2.6.3/flexslider.min.css" rel="stylesheet" />
<div class="container">
<div class="flexslider">
<ul class="slides">
<li>
<img src="http://flexslider.woothemes.com/images/kitchen_adventurer_cheesecake_brownie.jpg" />
</li>
<li>
<img src="http://flexslider.woothemes.com/images/kitchen_adventurer_lemon.jpg" />
</li>
<li>
<img src="http://flexslider.woothemes.com/images/kitchen_adventurer_donut.jpg" />
</li>
<li>
<img src="http://flexslider.woothemes.com/images/kitchen_adventurer_caramel.jpg" />
</li>
<!-- items mirrored twice, total of 12 -->
</ul>
</div>
我正在考虑将其报告为GitHub上的问题,但我对为什么在实际Flex Slider网站上工作的原因很谨慎。
奇怪的是,这个滑块的官方文档缺少这些关键信息。您必须在启动或加载时将滑块的实例设置为flexslider
全局变量。
工作示例。
(function() {
// store the slider in a local variable
var $window = $(window),
flexslider = {
vars: {}
};
// tiny helper function to add breakpoints
function getGridSize() {
return (window.innerWidth < 600) ? 2 :
(window.innerWidth < 900) ? 3 : 4;
}
$window.ready(function() {
$('.flexslider').flexslider({
animation: "slide",
animationLoop: false,
itemWidth: 210,
itemMargin: 5,
minItems: getGridSize(), // use function to pull in initial value
maxItems: getGridSize(),
start: function(slider){
//set slider instance to flexslider variable
flexslider = slider;
}
});
});
// check grid size on resize event
$window.resize(function() {
var gridSize = getGridSize();
flexslider.vars.minItems = gridSize;
flexslider.vars.maxItems = gridSize;
});
}());
.container {
width: 70%;
max-width: 1100px;
margin: auto;
}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>JS Bin</title>
</head>
<body>
<div class="container">
<div id="carousel" class="flexslider">
<ul class="slides">
<li>
<img src="http://flexslider.woothemes.com/images/kitchen_adventurer_cheesecake_brownie.jpg" />
</li>
<li>
<img src="http://flexslider.woothemes.com/images/kitchen_adventurer_lemon.jpg" />
</li>
<li>
<img src="http://flexslider.woothemes.com/images/kitchen_adventurer_donut.jpg" />
</li>
<li>
<img src="http://flexslider.woothemes.com/images/kitchen_adventurer_caramel.jpg" />
</li>
<!-- items mirrored twice, total of 12 -->
</ul>
</div>
</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/flexslider/2.6.3/jquery.flexslider.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/flexslider/2.6.3/flexslider.min.css" rel="stylesheet" />
</body>
</html>
这是Min-Max动态范围的工作示例。
var $window = jQuery(window),
flexslider = {
vars: {}
};
function getGridSize() {
return (window.innerWidth <= 767) ? 2 : (window.innerWidth <= 900) ? 2 : (window.innerWidth <= 1024) ? 3 : (window.innerWidth > 1025) ? 5 : 5;
}
$window.ready(function() {
jQuery('.flexslider').flexslider({
animation: "slide",
slideshow: false,
itemWidth: 248,
itemMargin: 5,
minItems: 2,
maxItems: getGridSize(),
controlNav: false
});