我对flexslider有疑问 我正在尝试使用flexslider构建一个滑块,以便
这是一个示例代码 https://codepen.io/hellouniverse/pen/LLJzgM
我几乎工作了。在移动设备中,我看到2×2网格中的4个图像。但是,在桌面设备中,我看到第一张幻灯片有6张图片。对于随后的幻灯片,我还预计会有6张图片,就像第一张图片一样。但是我看到剩下的全部了。
我正在将它切成如下并包裹ul
// Wrap uls
for (var i = 0; i < item.length; i += dataItem) {
item.slice(i, i + dataItem).wrapAll('<ul class="items"></ul>');
}
然而,我认为我的切片肯定是错误的。请问有人可以看看是否可以这样做,在桌面上我们每个幻灯片水平放置6张图像,保留其他所有内容。
我的HTML看起来像
<div id="flexslider" class="flexslider" data-item="4">
<ul class="slides">
<li class="item"> <img src="http://placehold.it/1200x600" alt="placeholder image"></li>
<li class="item"> <img src="http://placehold.it/1200x600" alt="placeholder image"></li>
<li class="item"> <img src="http://placehold.it/1200x600" alt="placeholder image"></li>
<li class="item"> <img src="http://placehold.it/1200x600" alt="placeholder image"></li>
<li class="item"> <img src="http://placehold.it/1200x600" alt="placeholder image"></li>
<li class="item"> <img src="http://placehold.it/1200x600" alt="placeholder image"></li>
<li class="item"> <img src="http://placehold.it/1200x600" alt="placeholder image"></li>
<li class="item"> <img src="http://placehold.it/1200x600" alt="placeholder image"></li>
<li class="item"> <img src="http://placehold.it/1200x600" alt="placeholder image"></li>
<li class="item"> <img src="http://placehold.it/1200x600" alt="placeholder image"></li>
<li class="item"> <img src="http://placehold.it/1200x600" alt="placeholder image"></li>
<li class="item"> <img src="http://placehold.it/1200x600" alt="placeholder image"></li>
<li class="item"> <img src="http://placehold.it/1200x600" alt="placeholder image"></li>
<li class="item"> <img src="http://placehold.it/1200x600" alt="placeholder image"></li>
<li class="item"> <img src="http://placehold.it/1200x600" alt="placeholder image"></li>
<li class="item"> <img src="http://placehold.it/1200x600" alt="placeholder image"></li>
<li class="item"> <img src="http://placehold.it/1200x600" alt="placeholder image"></li>
<li class="item"> <img src="http://placehold.it/1200x600" alt="placeholder image"></li>
</ul>
</div>
我的scss代码如下所示
ul,
li {
margin: 0;
padding: 0;
}
@media screen and (max-width: 1199px) {
.flexslider {
.slides {
.items {
display: flex !important;
flex-wrap: wrap !important;
item {
border: 1px solid red;
}
}
.item {
background: #ccc;
margin: 10px;
padding: 5px;
text-align: center;
flex-basis: calc(50% - 40px);
/* Need to tweak!*/
list-style-type: none;
}
}
}
}
@media screen and (min-width: 1200px) {
.flexslider {
.slides {
.items {
display: flex !important;
//flex-wrap: wrap !important;
item {
border: 1px solid red;
}
}
.item {
background: #ccc;
margin: 10px;
padding: 5px;
text-align: center;
flex-basis: calc(100% / 6);
/* Need to tweak!*/
list-style-type: none;
}
}
}
}
我的js看起来像下面
var fs = $(".flexslider"),
dataItem = fs.data("item"),
item = fs.find(".item");
//console.log('item', item.length);
//var dataItem = $(".flexslider").attr("data-type");
if ($(window).width() >= 1200) {
var el = document.getElementById("flexslider");
el.setAttribute("data-item", "6");
dataItem = el.getAttribute("data-item");
}
console.log('dataItem', dataItem);
console.log('length of item', item.length);
// Wrap uls
for (var i = 0; i < item.length; i += dataItem) {
item.slice(i, i + dataItem).wrapAll('<ul class="items"></ul>');
}
// Initialize flexslider
$(window).load(function() {
fs.flexslider({
selector: ".slides > .items",
animation: "slide",
animationLoop: false,
directionNav: true,
slideshow: false,
smoothHeight: true,
itemMargin: 0,
minItems: 1,
maxItems: 1
});
});
答案 0 :(得分:1)
在桌面版本上,我只想看到6张图片..但我有时看到6 + 1/2,有时左右看5和1/2
最大宽度为1200像素。因此,如果您想显示6个项目,每个项目只有200px
对吗?但是在你的css代码中,你有每个项目的保证金:20px。这意味着每个项目需要240px。
对于Mobile上的2x2网格视图,我的解决方案是您将有一个新的html结构,以在每个<li>
标记上显示2个图像。
这是我的演示代码:https://codepen.io/anon/pen/qjMRdG