【问题标题】:Scrolling Tabs in Bootstrap 4Bootstrap 4 中的滚动标签
【发布时间】:2019-04-29 03:07:27
【问题描述】:

我正在处理滚动标签。下面是我的代码。我面临无法单击中间选项卡的问题。在右键单击选项卡上滚动逐渐移动它。我应该怎么做才能逐渐移动标签?请帮忙

var hidWidth;
var scrollBarWidths = 40;

var widthOfList = function() {
    var itemsWidth = 0;
    $('.list a').each(function() {
        var itemWidth = $(this).outerWidth();
        itemsWidth += itemWidth;
    });
    return itemsWidth;
};

var widthOfHidden = function() {
    return (($('.wrapper').outerWidth()) - widthOfList() - getLeftPosi()) - scrollBarWidths;
};

var getLeftPosi = function() {
    return $('.list').position().left;
};

var reAdjust = function() {
    if (($('.wrapper').outerWidth()) < widthOfList()) {
        $('.scroller-right').show().css('display', 'flex');
    } else {
        $('.scroller-right').hide();
    }

    if (getLeftPosi() < 0) {
        $('.scroller-left').show().css('display', 'flex');
    } else {
        $('.item').animate({
            left: "-=" + getLeftPosi() + "px"
        }, 'slow');
        $('.scroller-left').hide();
    }
}

reAdjust();

$(window).on('resize', function(e) {
    reAdjust();
});

$('.scroller-right').click(function() {

    $('.scroller-left').fadeIn('slow');
    $('.scroller-right').fadeOut('slow');

    $('.list').animate({
        left: "+=" + widthOfHidden() + "px"
    }, 'slow', function() {

    });
});

$('.scroller-left').click(function() {

    $('.scroller-right').fadeIn('slow');
    $('.scroller-left').fadeOut('slow');

    $('.list').animate({
        left: "-=" + getLeftPosi() + "px"
    }, 'slow', function() {

    });
});

小提琴http://jsfiddle.net/vedankita/2uswn4od/13

帮助我在按钮单击时缓慢滚动,以便我可以单击缓动选项卡。谢谢

【问题讨论】:

  • 你想做什么?从您写的内容中理解起来很混乱。
  • 当我点击右键滚动标签时,它会滚动到结束,这就是为什么我无法点击放在中间的标签
  • 我可以毫无问题地单击选项卡 8
  • 检查调整窗口大小你会明白我的问题。请最小化屏幕并检查
  • 你应该逐渐将它移动 50px,它应该可以工作。

标签: javascript jquery html css bootstrap-4


【解决方案1】:

https://embed.plnkr.co/NcdGqX/

看看这个例子。这个标签逐渐移动。你也可以使用 bootstrap 4。

希望对你有帮助。

【讨论】:

  • 感谢@Uday,但我想在没有任何插件的情况下执行此操作。谢谢
【解决方案2】:

你应该逐步移动标签“隐藏的宽度”,但不超过包装宽度......

var widthOfHidden = function(){

    var ww = 0 - $('.wrapper').outerWidth();
    var hw = (($('.wrapper').outerWidth())-widthOfList()-getLeftPosi())-scrollBarWidths;

    if (ww>hw) {
        return ww;
    }
    else {
        return hw;
    }

};

var getLeftPosi = function(){

    var ww = 0 - $('.wrapper').outerWidth();
    var lp = $('.list').position().left;

    if (ww>lp) {
        return ww;
    }
    else {
        return lp;
    }
};

然后在每次移动后“重新调整”以确定滚动箭头是否还需要显示...

$('.scroller-right').click(function() {

  $('.scroller-left').fadeIn('slow');
  $('.scroller-right').fadeOut('slow');

  $('.list').animate({left:"+="+widthOfHidden()+"px"},'slow',function(){
    reAdjust();
  });
});

$('.scroller-left').click(function() {

    $('.scroller-right').fadeIn('slow');
    $('.scroller-left').fadeOut('slow');

    $('.list').animate({left:"-="+getLeftPosi()+"px"},'slow',function(){
        reAdjust();
    });
}); 

演示:https://www.codeply.com/go/Loo3CqsA7T


此外,您可以改进最后一个选项卡的位置,方法是确保它的正确位置永远不会小于包装宽度,以使其与右边缘对齐...

var widthOfHidden = function(){

    var ww = 0 - $('.wrapper').outerWidth();
    var hw = (($('.wrapper').outerWidth())-widthOfList()-getLeftPosi())-scrollBarWidths;
    var rp = $(document).width() - ($('.nav-item.nav-link').last().offset().left + $('.nav-item.nav-link').last().outerWidth());

    if (ww>hw) {
        return (rp>ww?rp:ww);
    }
    else {
        return (rp>hw?rp:hw);
    }
};

【讨论】:

  • 嗨@Zim。我已经实现了您的代码工作正常,但是当我连续单击左右按钮然后 tablist 离开区域时遇到一个问题。有时它不能正常工作。你能帮忙吗
猜你喜欢
  • 2019-10-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-20
  • 1970-01-01
  • 1970-01-01
  • 2018-10-02
相关资源
最近更新 更多