Javascript 滑动条-如何保持活动分页(点)始终居中
我正在努力实现一些迄今为止在网络上还没有实现的目标。我希望平滑滑块中的活动分页点始终位于中心 这是预期的结果: 换句话说,我希望加载的页面显示第一张幻灯片,但是第一张幻灯片的分页点应该居中 如果用户通过滑动单击下一张幻灯片,则点应再次移动到中间,活动幻灯片始终位于分页的中心。关于实现这一目标的最佳方法有什么想法 下面是我到目前为止所做工作的示例和代码Javascript 滑动条-如何保持活动分页(点)始终居中,javascript,jquery,html,css,slick.js,Javascript,Jquery,Html,Css,Slick.js,我正在努力实现一些迄今为止在网络上还没有实现的目标。我希望平滑滑块中的活动分页点始终位于中心 这是预期的结果: 换句话说,我希望加载的页面显示第一张幻灯片,但是第一张幻灯片的分页点应该居中 如果用户通过滑动单击下一张幻灯片,则点应再次移动到中间,活动幻灯片始终位于分页的中心。关于实现这一目标的最佳方法有什么想法 下面是我到目前为止所做工作的示例和代码 $('.slider')。光滑({ 无限:是的, 点:是的, 箭头:假 }); 滑块{ 宽度:200px; } .幻灯片图像{ 显示:块; 宽
$('.slider')。光滑({
无限:是的,
点:是的,
箭头:假
});代码>
滑块{
宽度:200px;
}
.幻灯片图像{
显示:块;
宽度:100%;
高度:自动;
}
.圆点{
显示器:flex;
证明内容:中心;
保证金:0;
填充:1rem0;
列表样式类型:无;
}
.圆点李{
保证金:0.25雷姆;
}
.圆点按钮{
显示:块;
宽度:1em;
高度:1公厘;
填充:0;
边界:无;
边界半径:100%;
背景颜色:灰色;
文本缩进:-9999px;
}
.slick dots li.slick-active按钮{
背景颜色:蓝色;
}
像这样的
为此,您必须根据我的代码片段添加一个滑块,并使用滑块同步功能绑定两个滑块
下面是一个有效的例子
$(文档).ready(函数(){
$(“.main_滑块”).光滑({
无限:是的,
点:错,
箭头:错,
asNavFor:'.slider_dots',
幻灯片放映:1,
幻灯片滚动:1,
});
$('.slider_dots')。光滑({
无限:是的,
幻灯片放映:3,
幻灯片滚动:1,
asNavFor:“.main_滑块”,
箭头:错,
点:错,
centerMode:对,
焦点选择:正确,
中心填充:“20%”,
});
});代码>
.main\u滑块,
.圆点{
宽度:200px;
}
.幻灯片图像{
显示:块;
宽度:100%;
高度:自动;
}
.圆点{
显示器:flex;
证明内容:中心;
保证金:0;
填充:1rem0;
列表样式类型:无;
}
.圆点李{
保证金:0.25雷姆;
}
.圆点按钮{
显示:块;
宽度:1em;
高度:1公厘;
填充:0;
边界:无;
边界半径:100%;
背景颜色:灰色;
文本缩进:-9999px;
}
.slick dots li.slick-active按钮{
背景颜色:蓝色;
}
.滑块\点.滑块\导航器{
高度:20px;
背景色:#9E9E9E;
边界半径:50%;
利润率:10px;
变换:比例(0.4);
大纲:无;
光标:指针;
}
.slider_dots.slider_navigators.slick-active{
变换:比例(0.70);
}
.slider_navigators.slick-active.slick-current{
变换:比例(1);
背景色:#00f;
}
演示页
如果您需要正确地实现这一点,那么您可以尝试阿披实潘迪解决方案
如果你只需要快速解决它,那么你可以尝试像这样的快捷方式
使滑块从幻灯片3开始,而不是从幻灯片1开始
由于您的滑块导航只是没有数字的点,站点用户不会意识到滑块是从幻灯片3开始的。下面是一个使用jQuery操作现有幻灯片点样式的示例。可在此处找到工作代码的另一个示例:
唯一需要注意的是,包含点的
标记必须具有相同的宽度才能计算出数学结果。此解决方案适用于单行中任意数量的点
const$slideShow=$('.slider');
函数偏移点(slideNum){
const$slickDots=$slideShow.find(“.slickDots”),
numDots=$slickDots.find('li')。长度,
dotWidth=$slickDots.find('li:first')。outerWidth(true),
偏移量=点宽度*滑动枚举;
//将“点”容器偏移到当前幻灯片点的中心
$slickDots.css('marginLeft',offset*-1-Math.ceil(dotWidth/2));
//清除现有的辅助点类
$slickDots.find('li').removeClass('slick-secondary');
//将辅助点类添加到之前的幻灯片点
如果(slideNum>0){
$slickDots.find('li:n类型('+slideNum+')).addClass('slick-secondary');
}
//将辅助点类添加到下一个幻灯片点
if(slideNum
.demo包装器{
宽度:200px;
位置:相对位置;
}
.幻灯片图像{
显示:块;
宽度:100%;
高度:自动;
}
.圆点{
位置:绝对位置;
左:50%;
显示:内联flex;
保证金:0;
填充:1rem0;
列表样式类型:无;
}
.圆点李{
宽度:12px;
利润率:0.3倍;
}
.圆点按钮{
显示:块;
宽度:6px;
高度:6px;
填充:0;
保证金:0自动;
边界:无;
边界半径:100%;
背景颜色:灰色;
文本缩进:-9999px;
}
.slick dots li.slick-active按钮{
背景颜色:蓝色;
宽度:12px;
高度:12px;
利润上限:-4px
}
.光滑圆点li.光滑辅助按钮{
宽度:8px;
高度:8px;
页边顶部:-1px;
}
您可以使用自定义事件在更改之前
和在更改之后
来启动css动画。动画看起来怎么样,我不知道。但是你可以为当前位置添加一个类如果你有偶数个e怎么办
.on('beforeChange', function(event, slick, currentSlide, nextSlide){
//appedn the bullet on center
});