gpt4 book ai didi

javascript - 如何在flexslider的每张幻灯片中显示6张图片?

转载 作者:太空宇宙 更新时间:2023-11-04 08:28:34 24 4
gpt4 key购买 nike

我有一个关于 flexslider 的问题我正在尝试使用 flexslider 构建一个 slider ,这样

  • 对于桌面(窗口屏幕大小 >= 1200 像素),我在每张幻灯片中有六个水平图像
    • 对于手机或平板电脑(屏幕尺寸 < 1200 像素),我在每张幻灯片中有四张图片,这四张图片始终位于 2 x 2 的网格中

这是一个示例代码笔 https://codepen.io/hellouniverse/pen/LLJzgM

我几乎可以正常工作了。在移动设备中,我在 2 x 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
});
});

最佳答案

On desktop versions, I only want to see 6 images.. But I see 6 + 1/2 of 7 sometimes and sometimes 5 and 1/2 of left and right

最大宽度为 1200 像素。所以如果你想显示 6 个元素,每个元素将只有 200px正确的?但是在你的 css 代码中,你有 margin: 20px for each item.That means each item will take 240px.

对于移动设备上的 2x2 GridView ,我的解决方案是您将拥有一个新的 html 结构以在每个 <li> 上显示 2 个图像标签。

这是我的演示代码:https://codepen.io/anon/pen/qjMRdG

关于javascript - 如何在flexslider的每张幻灯片中显示6张图片?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44963733/

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