关于#当前页#的问题,如何解决?

多个折叠面板,长度超过当前页面出现滚动条,手风琴模式,点开折叠面板时,其中某个折叠面板的内容部分太多,当点击其下方的折叠面板时,他由于关闭,他下方展开的折叠面板上移,导致展开的折叠面板滚出了当前屏幕,如何让每个折叠面板展开时都显示在屏幕上,而不受滚动条和收起的折叠面板的影响

这个可能是数据过多挤压的,折叠面板可以做个分页试一下,打开面板的时候分页,不显示滚动条

为了让每个折叠面板展开时都显示在屏幕上,可以使用JavaScript来实现自动滚动。具体来说,可以在每个折叠面板展开时,使用JavaScript获取该面板的位置信息,然后计算出滚动的距离,最后通过JavaScript的scrollTo方法来实现自动滚动。
参考代码示例:

function scrollToPanel(panelId) {
  // 获取面板元素
  var panel = document.getElementById(panelId);
  
  // 获取面板在页面中的位置
  var panelTop = panel.offsetTop;
  
  // 计算滚动的距离
  var scrollDistance = panelTop - window.innerHeight / 2;
  
  // 执行滚动
  window.scrollTo({ top: scrollDistance, behavior: 'smooth' });
}

这段代码中的scrollToPanel函数接受一个折叠面板的ID作为参数,然后获取该面板在页面中的位置信息,并计算出滚动的距离,最后通过scrollTo方法实现自动滚动。可以在每个折叠面板展开时调用该函数来确保该面板显示在屏幕上。
另外,需要在点击其他折叠面板时,将已展开的面板收起,这样可以避免多个折叠面板同时展开导致的滚动问题。可以通过添加事件监听器来实现这一点,例如:

// 获取所有的折叠面板元素
var panels = document.querySelectorAll('.panel');

// 为每个折叠面板添加事件监听器
panels.forEach(function(panel) {
  // 获取面板的标题元素
  var title = panel.querySelector('.panel-title');

  // 添加点击事件监听器
  title.addEventListener('click', function() {
    // 收起所有已展开的面板
    panels.forEach(function(otherPanel) {
      if (otherPanel !== panel && otherPanel.classList.contains('expanded')) {
        otherPanel.classList.remove('expanded');
      }
    });

    // 切换当前面板的展开状态
    panel.classList.toggle('expanded');

    // 如果当前面板展开,则自动滚动到该面板
    if (panel.classList.contains('expanded')) {
      scrollToPanel(panel.id);
    }
  });
});

这段代码中,首先获取所有的折叠面板元素,并为每个面板的标题元素添加点击事件监听器。在点击事件中,首先将所有已展开的面板收起,然后切换当前面板的展开状态,并在展开时自动滚动到该面板。这样可以确保每个面板在展开时都显示在屏幕上,并且不受滚动条和收起的面板的影响。