滚动 - 单击时无法滚动固定侧边栏中的自定义滚动

Posted

技术标签:

【中文标题】滚动 - 单击时无法滚动固定侧边栏中的自定义滚动【英文标题】:Scroll - On click not able to scroll the custom scroll inside fixed sidebar 【发布时间】:2019-01-17 16:02:29 【问题描述】:

我制作了一个固定的侧边栏并应用了自定义滚动条 (iemcustomscrollbar) 但我希望在单击锚标记时(手风琴内部)我想滚动侧边栏顶部的手风琴,为此我如果侧边栏不粘以将正文或 html 滚动到单击的元素顶部位置,我正在使用相同的代码。

我做错了什么?

不粘

如果侧边栏不粘,这里是代码

$('.card > .collapse').on('shown.bs.collapse', function(e)
    e.preventDefault();  
    e.stopPropagation();
  console.log('click');

  var scrollToCategory = $(this).parent().offset().top;


  var body = $("html, body");
  body.stop().animate(scrollTop:scrollToCategory, 500, 'swing', function()  
     // alert("Finished animating");
  );

)

粘性

如果侧边栏是粘性的,这里是代码

$('.card > .collapse').on('shown.bs.collapse', function(e)
    e.preventDefault();  
    e.stopPropagation();
  console.log('click');

  var scrollToCategory = $(this).parent().offset().top;


  var body = $("#sidebar-wrapper");
  body.stop().animate(scrollTop:scrollToCategory, 500, 'swing', function()  
     // alert("Finished animating");
  );

)

这里是 jsfiddle 链接

Non sticky

Sticky

注意: Sticky 示例在 jsfiddle 中似乎不起作用,请将示例复制并粘贴到另一个自定义文件中:)

【问题讨论】:

【参考方案1】:

最后,

经过大量搜索,我成功了。它只是 m.custom 滚动条中的一段代码

解决办法如下:

$('.card > .collapse').on('shown.bs.collapse', function(e)

   e.preventDefault();
   e.stopPropagation();

   var childPos = $(this).parent().offset();
   var parentPos = $('#sidebar').offset();
   var childOffset = 
       top: childPos.top - parentPos.top,
       left: childPos.left - parentPos.left
   

   $("#sidebar-wrapper").mCustomScrollbar('scrollTo', '-='+childOffset.top);
);

【讨论】:

以上是关于滚动 - 单击时无法滚动固定侧边栏中的自定义滚动的主要内容,如果未能解决你的问题,请参考以下文章

粘性侧边栏:向下滚动时固定在底部,向上滚动时固定在顶部

onDraw 滚动视图中的自定义视图

支持 UITableView 的自定义 UIScrollView

QScrollArea 中的自定义小部件仅在滚动时严重重绘

UITableView 中的自定义单元格使图像在滚动时重叠

UITableView 的自定义滚动条