Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.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
Jquery 水平滚动内容_Jquery_Html_Css_Scroll - Fatal编程技术网

Jquery 水平滚动内容

Jquery 水平滚动内容,jquery,html,css,scroll,Jquery,Html,Css,Scroll,我正在尝试做一个网站,其中有一个部分,当你点击菜单按钮时,内容必须水平滚动,它也有方向导航,我想我是通过方向导航得到的,但我不知道如何跟踪我的div的位置,以便在每次点击它们时移动它们。我正在尝试使用offset();使用jquery,但无法使其工作。如果有人能帮助我实现这一目标,我将不胜感激。我会给你们留下一些代码和一把js小提琴,这样你们就可以看到我到目前为止所做的 html代码: <nav> <ul> <li id="1" class=

我正在尝试做一个网站,其中有一个部分,当你点击菜单按钮时,内容必须水平滚动,它也有方向导航,我想我是通过方向导航得到的,但我不知道如何跟踪我的div的位置,以便在每次点击它们时移动它们。我正在尝试使用offset();使用jquery,但无法使其工作。如果有人能帮助我实现这一目标,我将不胜感激。我会给你们留下一些代码和一把js小提琴,这样你们就可以看到我到目前为止所做的

html代码:

<nav>
    <ul>
        <li id="1" class="active-state">1</li>
        <li id="2">2</li>
        <li id="3">3</li>
        <li id="4">4</li>
        <li id="5">5</li>
    </ul>
</nav>

<section id="content">
    <div id="wrapper">
        <div class="content" id="yellow"></div>
        <div class="content" id="blue"></div>
        <div class="content" id="red"></div>
        <div class="content" id="purple"></div>
        <div class="content" id="green"></div>
    </div>
</section>
<ul id="directionNav">
    <li id="left">left</li>
    <li id="right">right</li>
</ul>
这是小提琴:


非常感谢大家

我认为您编写的代码太多了

为HTML标记及其链接页面赋予属性:

<li frame='1' class='nav'>page 1</li>
对于下一个/上一个链接,只需检查当前所在的页面并添加/删除1。我在2函数中完成了它,以获得更清晰的代码

单击时,选中已单击的位置:

function navigFrame(){
    switch(this.id){
        case 'left' : doNavig(-1); break;
        case 'right' : doNavig(1); break;
    }
}
以下是onNavig的代码:

function doNavig(direction){
    var newPage = parseInt($('.active-state').attr('frame'))+direction;
    if(newPage < $('.nav').length && newPage >= 0){
        $('#wrapper').animate({left : newPage*-600});
        $('.active-state').removeClass('active-state')
        $('.nav:nth-child('+String(newPage + 1)+')').addClass('active-state')
    }
}
功能doNavig(方向){
var newPage=parseInt($('.activestate').attr('frame'))+方向;
如果(新页<$('.nav')。长度和新页>=0){
$('#wrapper').animate({left:newPage*-600});
$('.active state').removeClass('active-state'))
$('.nav:n个子('+String(newPage+1)+')).addClass('active-state'))
}
}
代码可以更优化,但我希望您做一些工作:)


以下是完整的代码:

我认为已经有很多插件可用于此目的。试试看,我只是在学习javascript和jquery,这就是我为什么要编写这么多代码的原因:p但我感谢你的帮助我会学习代码,以便理解你所做的一切!非常感谢你!真有用!这是我的荣幸。如果你需要帮助来理解我做了什么(函数或其他什么),请随意提问。我实际上有一个问题,我仍然不明白它如何在一个方向上设置-600的动画,但是当它到达它的位置时,它应该设置+600而不是-600的动画,对吗?你是如何做到这一点的?只有不到几行-600(这是单元格宽度的负值)*attr“frame”包含一个数字(检查html节点)。因为我设置了左侧位置的动画,所以它必须是负数,否则它会转到另一侧。是的,我理解,但当你按下按钮5时,它会到达该位置,当你再次按下1时,它应该转到+600而不是-600?:/啊哈
function navigFrame(){
    switch(this.id){
        case 'left' : doNavig(-1); break;
        case 'right' : doNavig(1); break;
    }
}
function doNavig(direction){
    var newPage = parseInt($('.active-state').attr('frame'))+direction;
    if(newPage < $('.nav').length && newPage >= 0){
        $('#wrapper').animate({left : newPage*-600});
        $('.active-state').removeClass('active-state')
        $('.nav:nth-child('+String(newPage + 1)+')').addClass('active-state')
    }
}