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/2/jquery/68.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 CSS转换,在单击时将点分页移动到左/右_Javascript_Jquery_Css_Animation - Fatal编程技术网

Javascript CSS转换,在单击时将点分页移动到左/右

Javascript CSS转换,在单击时将点分页移动到左/右,javascript,jquery,css,animation,Javascript,Jquery,Css,Animation,我试图实现某种转换CSS分页的行为 我有5个点,当用户向左或向右点击相应的按钮时,我想触发一个动画 当用户单击“左”时,点应设置向左移动的动画。 当用户单击鼠标右键时,点应设置向右移动的动画。 中间的点应该始终是中心的,并且应该总是有5个点可见,并且位置不应该改变整个分页。 因此,如果您单击“右”按钮:第四个点应向左滑动,以显示它已成为活动点,反之亦然,单击左按钮 我试图表明,当用户单击左键或右键时,分页已经移动,这就是我所面临的困难。请参阅下面的代码: $'.left'。单击函数E{ e、

我试图实现某种转换CSS分页的行为

我有5个点,当用户向左或向右点击相应的按钮时,我想触发一个动画

当用户单击“左”时,点应设置向左移动的动画。 当用户单击鼠标右键时,点应设置向右移动的动画。

中间的点应该始终是中心的,并且应该总是有5个点可见,并且位置不应该改变整个分页。 因此,如果您单击“右”按钮:第四个点应向左滑动,以显示它已成为活动点,反之亦然,单击左按钮

我试图表明,当用户单击左键或右键时,分页已经移动,这就是我所面临的困难。请参阅下面的代码:

$'.left'。单击函数E{ e、 防止违约; //此处应出现一些动画,以显示分页已更新 }; $'.right'。单击函数E{ e、 防止违约; //此处应出现一些动画,以显示分页已更新 }; 左边 .对{ 显示:内联块; 背景:2000人; 颜色:fff; 宽度:100px; 文本对齐:居中; 边缘底部:20px; } .分页{ 显示:块; 边缘底部:30px; } 多特先生{ 显示:内联块; 高度:10px; 宽度:10px; 背景:ccc; 保证金:4倍; 垂直对齐:中间对齐; 边界半径:10px; } .dot:第n个孩子{ 宽度:8px; 高度:8px; } .dot:n奇尔德{ 宽度:6px; 高度:6px; } .dot.active{ 背景:333人; 宽度:10px; 高度:10px; } 试试这个

变量长度=3; $'.left'。单击函数E{ e、 防止违约; 长度-; //控制台。对数长度; $'.active'.removeClass'active'; $.pagination.dot:n个子项+长度+.addClass'active'; iflength=5 长度=0; }; 左边 .对{ 显示:内联块; 背景:2000人; 颜色:fff; 宽度:100px; 文本对齐:居中; 边缘底部:20px; } .分页{ 显示:块; 边缘底部:30px; } 多特先生{ 显示:内联块; 高度:10px; 宽度:10px; 背景:ccc; 保证金:4倍; 垂直对齐:中间对齐; 边界半径:10px; } .dot:第n个孩子{ 宽度:8px; 高度:8px; } .dot:n奇尔德{ 宽度:6px; 高度:6px; } .dot.active{ 背景:333人; 宽度:10px; 高度:10px; 过渡:0.3s全部; } JS-Bin 试着跟随

$'.left'。单击函数E{ e、 防止违约; 如果$div.active.prev.length>0 { $div.active.removeClass'active'。prev.addClass'active'; } }; $'.right'。单击函数E{ e、 防止违约; 如果$div.active.next.length>0 { $div.active.removeClass'active'。next.addClass'active'; } }; 左边 .对{ 显示:内联块; 背景:2000人; 颜色:fff; 宽度:100px; 文本对齐:居中; 边缘底部:20px; } .分页{ 显示:块; 边缘底部:30px; } 多特先生{ 显示:内联块; 高度:10px; 宽度:10px; 背景:ccc; 保证金:4倍; 垂直对齐:中间对齐; 边界半径:10px; } .dot:第n个孩子{ 宽度:8px; 高度:8px; } .dot:n奇尔德{ 宽度:6px; 高度:6px; } .dot.active{ 背景:333人; 宽度:10px; 高度:10px; }
根据你给我的例子,运行这个片段,我认为它是你想要的

说明:

现在分页有两个分区:一个outter分区,将其视为一个窗口,始终处于相同的位置,宽度足以看到5个点。溢出:没有是非常重要的,因为窗口只显示5个点,隐藏任何不适合它的东西。还有一个包含所有点的内部div,我们将向左和向右移动

var-currentPage=2; 加工点位置; $'.left'。单击函数{currentPage-=1;}; $'.right'。单击函数{currentPage+=1;}; $”。左、。右。单击函数E{ e、 防止违约; 加工点位置; }; 函数位置{ //背景 var firstNavigableDot=2; 变量lastNavigableDot=$'.dot'.length-3; //不允许超出范围 如果currentPagelastNavigableDot currentPage=firstNavigableDot; //管理活动类 $'.dot'.removeClass'active'.removeClass'nearActive'; $'.dot'.eqcurrentPage.addClass'active'; $'.dot'.eqcurrentPage+1.addClass'nearActive'; $'.dot'.eqcurrentPage-1.addClass'nearActive'; //滑动内分区+35用于使活动点居中 var newPosition=-currentPage-2*19; $'.paginationInner.finish.animate{left:newPosition}; } 左边 .对{ 显示:内联块; 背景:2000人; 颜色:fff; 宽度:100px; 文本对齐:居中; 边缘底部:20px; } .分页器{ 显示:块; 边缘底部:30px; 左边距:50像素; 宽度:100px;/*仅显示5个点*/ 溢出:隐藏; 高度:18px; 位置:相对位置; } .paginationInner{ 位置:绝对位置; } 多特先生{ 显示:内联块; 背景 d:ccc; 保证金:4倍; 垂直对齐:中间对齐; 边界半径:10px; 过渡:高宽1s; } /*第一和第五*/ 多特先生{ 宽度:6px; 高度:6px; } /*第二和第四*/ .dot.nearActive{ 宽度:8px; 高度:8px; } /*第三*/ .dot.active{ 背景:333人; 宽度:10px; 高度:10px; }
不要使用第n个子元素给点上色,而是使用一个类,如selected,然后在单击中,您可以使用.next和.prev移动该类,并添加和删除类。但就目前的形式而言,你的问题太宽泛,因此不适合讨论SO@Pete,我已经根据您的建议调整了代码-您能建议如何实现.next和.prev吗?$'.active'.removeClass'active'.next.addClass'active'@zxynz,我不太明白。我想这里没有人知道。你问的不矛盾吗?位置不应改变,点扫。。。但是中间有活跃的点。我无法在脑海中想象你想要什么,因此我无法编码。@DamiánPabloGonzález-如果你看一下这个:,它会让你对我试图实现的目标有一些了解,但是当你循环它不起作用时-我还提到,活动点必须始终位于正确的中间,然而,它仍然没有保持活跃的点在中间?@ Zxyz我不明白为什么活跃点应该在中间,那么有那么多的点有什么用呢?只是一个问题,请不要介意。这只是一个动画,显示用户向左或向右滑动时发生的事情。这有点像这个演示,当你刷:太好了,正是我想要的,除了我想有5个点总是可见的循环。因此,如果您在代码上单击“右键”两次,您将看到5个点。我希望这是初始状态,然后继续循环。有可能吗?我编辑了代码,现在看起来更好了,而且当你点击几次时,它会移动得更平滑。但是,根据你上一次所说的:这与你最初所说的活性点总是在中间相矛盾。想一想:如果你的初始currentDot是3,你会要求它,如果用户点击左键呢?我认为如果没有视觉上的理解,很难解释。分页与上面的任何内容都没有关联。它只是向用户显示他们正在返回或前进。您的代码在逻辑上是完美的,但实际上我需要5个点才能始终在那里,当您单击“下一步”/“上一步”时,它将循环通过。。你明白我的意思吗?就是这个意思!唯一的错误是当你到达终点时,它不会进一步循环。为什么会出现错误?我本打算那样做的。当您到达最后一个可导航点并按向右键时,您希望发生什么?