Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用swiper js创建一个历史时间线,每年有多张幻灯片_Javascript_Html_History_Swiper - Fatal编程技术网

Javascript 使用swiper js创建一个历史时间线,每年有多张幻灯片

Javascript 使用swiper js创建一个历史时间线,每年有多张幻灯片,javascript,html,history,swiper,Javascript,Html,History,Swiper,我正在使用Swiper JS,我正在努力找到一种方法,可以从分页中删除重复项。我希望每年都有一张幻灯片,里面有内容,但在特定年份也有多张幻灯片——但只为它写一个页码(导航/滑动工作) 因此,如果幻灯片的位置: 1989、1990、1992、1992、1992 然后分页将显示为: 1989、1990、1992 (此外,滑动和左/右箭头将与此配合使用,并滚动浏览所有幻灯片,不丢失任何幻灯片,但每次重复都保持在幻灯片上) 内容 内容 内容 内容 内容 内容 var mySwiper=new Swi

我正在使用Swiper JS,我正在努力找到一种方法,可以从分页中删除重复项。我希望每年都有一张幻灯片,里面有内容,但在特定年份也有多张幻灯片——但只为它写一个页码(导航/滑动工作)

因此,如果幻灯片的位置:

1989、1990、1992、1992、1992

然后分页将显示为:

1989、1990、1992

(此外,滑动和左/右箭头将与此配合使用,并滚动浏览所有幻灯片,不丢失任何幻灯片,但每次重复都保持在幻灯片上)


内容
内容
内容
内容
内容
内容
var mySwiper=new Swiper(“.Swiper container”{
//如果我们需要分页
分页:{
el:“.swiper分页”,
可点击:正确,
renderBullet:函数(索引、类名){
返回“”+(菜单[索引])+“”;
},
},
//导航箭头
导航:{
nextEl:“.swiper按钮下一步”,
prevEl:“.swiper按钮prev”,
},
})
下面是一个重复年份的清晰示例:

到目前为止我已经尝试过的事情:

找到重复的年份并将其从菜单中删除-现在的主要问题是跳过了该幻灯片

删除重复的dom分页元素-这在滑动时看起来会被破坏,因为有一点没有分页突出显示


有人能帮我理解我是如何做到这一点的吗?

您可以通过实现自己的逻辑来实现这一点。这意味着您可以处理对上一个、下一个和年份元素的单击

您使用的版本很旧,这就是我在
.timeline
元素上使用
触发器的原因。新版本的swiperjs具有
slideChange
事件,您可以利用该事件实现相同的结果

你可以在这里找到小提琴:

下面是一个例子:

var年数=[];
设slideIndex=0;
设currentSlide=0;
var timelineSwiper=新的Swiper('.timeline.Swiper容器'{
方向:'垂直',
循环:false,
速度:1600,
分页:'.swiper分页',
分页BulletRender:函数(swiper、索引、类名){
设el=swiper.slides[索引];
var yearValue=el.getAttribute('year');
如果(!年包括(年值)){
//将数据属性设置为幻灯片以链接到年份元素
el.setAttribute(“数据父项”,索引);
//在下一次迭代中使用此变量对类似幻灯片进行分组
slideIndex=指数;
年。推送(年值);
让clsName=index==0?“swiper分页项目符号自定义swiper分页项目符号自定义活动”:“swiper分页项目符号自定义”;
返回`${yearValue}`;
}
el.setAttribute(“数据父对象”,slideIndex);
返回“”;
},
分页可点击:false,
断点:{
768: {
方向:'水平',
}
}
});
//如果未到达滑块末端,则单击下一个箭头
$(“.swiper按钮下一步”)。在(“单击”,函数(){
如果(!timelineSwiper.isEnd){
timelineSwiper.slideTo(++currentSlide);
$(“.timeline”).trigger(“slideChange”);
}
});
//如果未到达滑块的开头,则单击上一个箭头
$(.swiper button prev”)。在(“单击”,函数()上{
如果(!timelineSwiper.isBeging){
timelineSwiper.slideTo(--currentSlide);
$(“.timeline”).trigger(“slideChange”);
}
});
//处理点击年份
$(“.swiper分页范围”)。在(“单击”,函数(){
设el=$(此);
设pageIndex=el.attr(“数据索引”);
timelineSwiper.slideTo(页面索引);
$(“.timeline”).trigger(“slideChange”);
当前幻灯片=页面索引;
});
//幻灯片更改时,将活动类移动到相关元素
$(“.timeline”)。在(“slideChange”,函数()上{
$(“.swiper分页项目符号自定义活动”).removeClass(“swiper分页项目符号自定义活动”);
让active=timelineSwiper.activeIndex;
让index=timelineSwiper.slides[active].getAttribute(“数据父项”);
$(`.swiper分页span[data index=“${index}”]`).addClass(“swiper分页项目符号自定义活动”);
});
html,
身体,
.集装箱{
身高:100%;
}
身体{
字体系列:“开放式Sans”,无衬线;
字体大小:14px;
}
.集装箱{
显示器:flex;
证明内容:中心;
对齐项目:居中;
背景色:#fff;
弯曲方向:立柱;
}
.头衔{
字号:38px;
颜色:#6161;
字体:斜体;
字号:800;
}
.时间表{
宽度:100%;
背景色:#fff;
盒影:0 5px25px 5pxRGBA(0,0,0,0.2);
}
.timeline.swiper容器{
高度:600px;
宽度:100%;
位置:相对位置;
}
.timeline.swiper包装器{
过渡:2s立方贝塞尔(0.68,-0.4,0.27,1.34)0.2s;
}
.时间线.滑动滑梯{
位置:相对位置;
颜色:#fff;
溢出:隐藏;
背景尺寸:封面;
背景重复:无重复;
背景位置:中心;
}
.timeline.swiper幻灯片::之后{
内容:“;
位置:绝对位置;
z指数:1;
右图:-115%;
底部-10%;
宽度:100%;
身高:100%;
背景色:rgba(0,0,0,0.7);
盒影:-230px 0 150px 60vw rgba(0,0,0,0.7);
边界半径:100%;
}
.timeline.swiper幻灯片内容{
位置:绝对位置;
文本对齐:居中;
宽度:80%;
最大宽度:310px;
右:50%;
最高:13%;
转换:转换(50%,0);
字体大小:12px;
z指数:2;
}
.时间线.泳衣幻灯片.时间线年份{
显示:块;
字体:斜体;
字体大小:42px;
边缘底部:50px;
变换:translate3d(20px,0,0);
颜色:#d4a024;
字体大小:300;
不透明度:0;
过渡:0.2s缓解0.4s;
}
.时间线.滑水器幻灯片.时间线标题{
字号:800;
字体大小:34px;
利润率:0.30px;
不透明度:0;
变换:translate3d(20px,0,0);
过渡:0.2秒缓解0.5秒;
}
.timel
<div class="swiper-container">
    <!-- Additional required wrapper -->
    <div class="swiper-wrapper">
        <!-- Slides -->
        <div class="swiper-slide" year="1989">Content</div>
      <div class="swiper-slide" year="1990">Content</div>
      <div class="swiper-slide" year="1992">Content</div>
                  <div class="swiper-slide" year="1992">Content</div>
                  <div class="swiper-slide" year="1992">Content</div>
               <div class="swiper-slide" year="1993">Content</div>
    </div>
    <!-- If we need pagination -->
    <div class="swiper-pagination"></div>

    <!-- If we need navigation buttons -->
    <div class="swiper-button-prev"></div>
    <div class="swiper-button-next"></div>
</div>
var mySwiper = new Swiper ('.swiper-container', {
    // If we need pagination
    pagination: {
      el: '.swiper-pagination',
            clickable: true,
        renderBullet: function (index, className) {
          return '<span class="' + className + '">' + (menu[index]) + '</span>';
        },
    },

    // Navigation arrows
    navigation: {
      nextEl: '.swiper-button-next',
      prevEl: '.swiper-button-prev',
    },
  })