javascript - 将 Accordion 选项卡滑动到浏览器顶部

标签 javascript jquery css accordion

我有一个内容很长的 Accordion 菜单。所以我需要在 Accordion 内容打开时实现滑动效果。

目前,如果您打开前两个菜单项,那么最后一个元素会显示视口(viewport)下方的内容,因此我需要为 Accordion 菜单项设置向上滑动效果。

这是我的代码

$(document).ready(function () {
    //Accordion
    $(".menu_body").hide();
    //toggle the componenet with class menu_body
    $(".menu_head").click(function(){
        $(this).next(".menu_body").slideToggle(400); 
        var plusmin;
        plusmin = $(this).children(".plusminus").text();

        $(this).children("span.down-arrow").toggleClass("up-arrow");        
    });

});

DEMO

解释:

看到会有 N 个 Accordion 菜单项,表格数据很长。它应该允许我们打开多个选项卡。

目前它工作正常,但问题是当您单击页面底部的菜单项时,它会向下显示内容,因此您将无法看到它,除非您手动向下滚动。

这就是为什么我需要菜单来自动滑动滚动到浏览器的顶部,以便一眼就能看到内容。

最佳答案

我会计算点击按钮的偏移量并将整个页面滚动到那个位置 为了美观而减去一些像素 (100):

DEMO

$(function () {

    //Accordion
    $(".menu_body").hide();
    //toggle the componenet with class menu_body
    $(".menu_head").click(function(){
        var thisPOsTop = $(this).offset().top - 100;
        $(this).next(".menu_body").slideToggle(400); 
        var plusmin = $(this).find(".plusminus").text();        
        $(this).find("span.down-arrow").toggleClass("up-arrow");
      $('html, body').stop().animate({scrollTop: thisPOsTop});
    });

});

关于javascript - 将 Accordion 选项卡滑动到浏览器顶部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20367496/

相关文章:

javascript - 跟踪用户事件,同时考虑用户在新选项卡中打开的时间

javascript - 如何将本指南实现到 headless 浏览器 https ://www. npmjs.com/package/user-agents#contributing

javascript - 单击按钮不单击到表行

jquery - 用于 j2ee 应用程序的可编辑 Java 语法荧光笔

css - 如何在悬停时停止悬 float 画

javascript - 将 Javascript 文件添加到 BigCommerce 模板

jquery - 如何制作一个输入自动增长的表单?

html - 更改 Bootstrap 4 轮播控件颜色

css - 将 Logo 与文本对齐 - 二十一个 child 主题 (Wordpress)

javascript - 在ajax回调函数之外使用变量