javascript - 自动滚动到可滚动 div 中的元素

标签 javascript jquery css

我有 5 个元素位于比屏幕大的 div 中(在手机上)。

我希望用户能够单击其中一个元素并将该元素滚动到屏幕中央。

我自己尝试用 jQuery 写这个,但我似乎无法完全正确地理解逻辑。我有点动了,但所选元素没有到达屏幕中央。

这是我目前所做工作的 fiddle :http://jsfiddle.net/geQ64/1/

这也是来自 fiddle 的 JS:

$(window).on('load', function() {

    $('.tab-3').trigger('click');

    var width = $(window).width();
    if (width < 651) {

        $('.ul-wrap').scrollLeft( $('.tab-3').offset().left );
    }    

});



$('.single-tabs').on('click', function() {

    var offset = $('.tabs').width();
    offset = offset/5;
    var center = offset/2;

    var tab = $(this).data('tab');
    $('.tabs-content').hide();
    $('.tab'+ tab +'').show();

    var width = $(window).width();
    if (width > 650) {

        var arrow = tab*20-12;
        $('.arrow-up').css('margin-left', '' + arrow + '%');

    } else {
        tab = tab - 1;
        var position = offset * tab - center;
        $('.ul-wrap').scrollLeft(position);

    }



});

最佳答案

已找到修复程序,这是任何人都需要的 JS。

var position 中的 - 55 是一个箭头,它位于我使用此脚本移动的元素下方的页面中心。

$(window).on('load', function() {

        $('.tab-3').trigger('click');

        var width = $(window).width();
        if (width < 651) {

            var offset = $('.tabs').width();
            offset = offset/7;
            var center = offset/2;
            var position = offset * 2 + center - 50;

            $('.ul-wrap').animate({
                scrollLeft: position
            }, 200);
        }

    });



    $('.single-tabs').on('click', function() {

        var offset = $('.tabs').width();
        offset = offset/7;
        var center = offset/2;

        var tab = $(this).data('tab');
        $('.tabs-content').hide();
        $('.tab'+ tab +'').show();

        var width = $(window).width();
        if (width > 650) {

            var arrow = tab*20-12;
            $('.arrow-up').css('margin-left', '' + arrow + '%');

        } else {
            tab = tab - 1;
            var position = offset * tab + center - 50;
            $('.ul-wrap').animate({
                scrollLeft: position
            }, 200);

        }

关于javascript - 自动滚动到可滚动 div 中的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22811163/

相关文章:

javascript - 使用 Angular ng-repeat 访问第三层 JSON

javascript - 如何在 2 个输入之间交换值(value)

javascript - ionic /javascript : text with < a > tag can't be clicked in the HTML

javascript - knockout 复杂数据模型绑定(bind)

javascript - jQuery click() 事件;如何防止鼠标右键单击时发生此事件?

javascript - 使用变量作为键和值创建对象

jquery - 在具有特定 css 类 angular2 等同于 jquery 的元素上调用函数

javascript - 如何使用 Bootstrap 将图像显示为弹出窗口

javascript - 单击某个按钮时我需要更改文本

css - 如何设置:before horizontal sizing fixed?