Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/436.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/88.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 将滚动位置调整到最近的容器_Javascript_Jquery_Scroll_Positioning - Fatal编程技术网

Javascript 将滚动位置调整到最近的容器

Javascript 将滚动位置调整到最近的容器,javascript,jquery,scroll,positioning,Javascript,Jquery,Scroll,Positioning,我目前正在寻找一个JavaScript(例如Jquery lib)解决方案来调整滚动到特定css类的位置。目标是在最近的容器上重新定位滚动条 如本网站所示: 感谢JUJU如果您使用JQuery,如果我正确理解您的问题,那么这样做相对容易实现。 以下是我大致的做法: function scrollTo(a){ //Get current scroll position var current = (document.all ? document.scrollTop : window

我目前正在寻找一个JavaScript(例如Jquery lib)解决方案来调整滚动到特定css类的位置。目标是在最近的容器上重新定位滚动条

如本网站所示:


感谢JUJU

如果您使用JQuery,如果我正确理解您的问题,那么这样做相对容易实现。 以下是我大致的做法:

function scrollTo(a){
    //Get current scroll position
    var current = (document.all ? document.scrollTop : window.pageYOffset);
    //Define variables for data collection
    var target = undefined;
    var targetpos = undefined;
    var dif = 0;
    //check each selected element to see witch is closest
    $(a).each(function(){
        //Save the position of the element to avoid repeated property lookup
        var t = $(this).position().top;
        //check if there is an element to check against
        if (target != undefined){
            //save the difference between the current element's position and the current scroll position to avoid repeated calculations
            var tdif = Math.abs(current - t);
            //check if its closer than the selected element
            if(tdif < dif){
                //set the current element to be selected
                target = this;
                targetpos = t;
                dif = tdif;
            }
        } else {
            //set the current element to be selected
            target = this;
            targetpos = t;
            dif = Math.abs(current - t);
        }
    });
    //check if an element has been selected
    if (target != undefined){
        //animate scroll to the elements position
        $('html,body').animate({scrollTop: targetpos}, 2000);
    }
}
函数滚动至(a){
//获取当前滚动位置
当前变量=(document.all?document.scrollTop:window.pageYOffset);
//定义数据收集的变量
var目标=未定义;
var targetpos=未定义;
var-dif=0;
//检查每个选定元素以查看开关是否最近
$(a).每个(函数(){
//保存元素的位置以避免重复查找属性
var t=$(this).position().top;
//检查是否有要检查的元素
如果(目标!=未定义){
//保存当前元素位置和当前滚动位置之间的差值,以避免重复计算
var tdif=数学abs(电流-t);
//检查其是否比所选图元更接近
如果(tdif

这可能不是最好的方法,但应该有效。只需调用函数并将JQuery选择作为第一个参数传递。

如果您使用JQuery,如果我正确理解您的问题,那么这样做相对容易实现。 以下是我大致的做法:

function scrollTo(a){
    //Get current scroll position
    var current = (document.all ? document.scrollTop : window.pageYOffset);
    //Define variables for data collection
    var target = undefined;
    var targetpos = undefined;
    var dif = 0;
    //check each selected element to see witch is closest
    $(a).each(function(){
        //Save the position of the element to avoid repeated property lookup
        var t = $(this).position().top;
        //check if there is an element to check against
        if (target != undefined){
            //save the difference between the current element's position and the current scroll position to avoid repeated calculations
            var tdif = Math.abs(current - t);
            //check if its closer than the selected element
            if(tdif < dif){
                //set the current element to be selected
                target = this;
                targetpos = t;
                dif = tdif;
            }
        } else {
            //set the current element to be selected
            target = this;
            targetpos = t;
            dif = Math.abs(current - t);
        }
    });
    //check if an element has been selected
    if (target != undefined){
        //animate scroll to the elements position
        $('html,body').animate({scrollTop: targetpos}, 2000);
    }
}
函数滚动至(a){
//获取当前滚动位置
当前变量=(document.all?document.scrollTop:window.pageYOffset);
//定义数据收集的变量
var目标=未定义;
var targetpos=未定义;
var-dif=0;
//检查每个选定元素以查看开关是否最近
$(a).每个(函数(){
//保存元素的位置以避免重复查找属性
var t=$(this).position().top;
//检查是否有要检查的元素
如果(目标!=未定义){
//保存当前元素位置和当前滚动位置之间的差值,以避免重复计算
var tdif=数学abs(电流-t);
//检查其是否比所选图元更接近
如果(tdif

这可能不是最好的方法,但应该有效。只需调用函数并将JQuery选择作为第一个参数传递。

现在试试,只需将$('.cover2')作为您案例中的第一个参数传递即可。我已经在您的网站上对其进行了测试,效果很好。我在编辑过程中错放了一个结束括号。现在试试,只要把$('.cover2')作为你案例中的第一个参数就可以了。我已经在你的网站上对它进行了测试,它对我有效。我在编辑时放错了右括号。