【问题标题】:Javascript for scrolling to the top of selected panel in customised accordion用于在自定义手风琴中滚动到选定面板顶部的 Javascript
【发布时间】:2014-09-30 00:30:17
【问题描述】:

我有一个带有垂直滚动条的大型手风琴。当用户单击它时,我需要一个 javascript 来将选定的面板及其内容平滑地滚动到手风琴的顶部。单击面板 1,然后单击面板 2。面板 2 中途显示其内容。

我在这个网站和 jsfiddle.net 上看到了几个与 jQuery ui 手风琴和插件相关的答案,但我的手风琴的结构与 jQuery 中的不相似。 这是我的第一个网站,我是 javascript 和 jQuery 的新手。

我有一个可以很好地使用滑动功能的 javascript,并且非常希望保留它。在我自信地学会如何使用之前,我不喜欢使用任何 jQuery 插件。 有人可以修改我的javascript以适应滚动功能吗?已尝试阅读许多内容,例如获取面板的内容高度和使用滚动功能等,但经过漫长的三天后,我仍在努力编写一个有效的脚本。请在附件中找到我的 html 和 javascript 代码。 非常感谢您的帮助和帮助。

enter code here

/*jQuery time*/
$(document).ready(function() {
  $("#accordian h3").click(function() {
    //slide up all the link lists
    $("#accordian ul ul").slideUp();
    //slide down the link list below the h3 clicked - only if its closed
    if (!$(this).next().is(":visible")) {
      $(this).next().slideDown();
    }
  })
})
* {
  margin: 0;
  padding: 0;
}
#description {
  position: relative;
  top: 200px;
  width: 300px;
  height: 400px;
  border: 2px solid blue;
}
#accordian {
  font-family: arial, helvetica, sans-serif;
  background: #006F70;
  position: relative;
  top: 10px;
  width: 250px;
  margin: 0px 16px 0 16px;
  color: white;
}
<html>

<head>
  <link href="accordianFABtest-GS.css" type="text/css" rel="stylesheet" />
</head>

<body>
  <div id="description">
    <div id="accordian">
      <ul>
        <li>
          <h3>Panel 1</h3>
          <ul>
            <li><a href="#">Content 1</a>
            </li>
            <li><a href="#">Content 1</a>
            </li>
            <li><a href="#">Content 1</a>
            </li>
            <li><a href="#">Content 1</a>
            </li>
            <li><a href="#">Content 1</a>
            </li>
            <li><a href="#">Content 1</a>
            </li>
            <li><a href="#">Content 1</a>
            </li>
            <li><a href="#">Content 1</a>
            </li>
            <li><a href="#">Content 1</a>
            </li>
            <li><a href="#">Content 1</a>
            </li>
            <li><a href="#">Content 1</a>
            </li>
            <li><a href="#">Content 1</a>
            </li>
            <li><a href="#">Content 1</a>
            </li>
            <li><a href="#">Content 1</a>
            </li>
            <li><a href="#">Content 1</a>
            </li>
            <li><a href="#">Content 1</a>
            </li>
            <li><a href="#">Content 1</a>
            </li>
            <li><a href="#">Content 1</a>
            </li>
          </ul>
        </li>
        <li>
          <h3>Panel 2</h3>
          <ul>
            <li><a href="#">Content 2</a>
            </li>
            <li><a href="#">Content 2</a>
            </li>
            <li><a href="#">Content 2</a>
            </li>
            <li><a href="#">Content 2</a>
            </li>
            <li><a href="#">Content 2</a>
            </li>
            <li><a href="#">Content 2</a>
            </li>
            <li><a href="#">Content 2</a>
            </li>
            <li><a href="#">Content 2</a>
            </li>
            <li><a href="#">Content 2</a>
            </li>
            <li><a href="#">Content 2</a>
            </li>
            <li><a href="#">Content 2</a>
            </li>
            <li><a href="#">Content 2</a>
            </li>
            <li><a href="#">Content 2</a>
            </li>
            <li><a href="#">Content 2</a>
            </li>
          </ul>
        </li>
        <li>
          <h3>Panel 3</h3>
          <ul>
            <li><a href="#">Content 3</a>
            </li>
            <li><a href="#">Content 3</a>
            </li>
            <li><a href="#">Content 3</a>
            </li>
            <li><a href="#">Content 3</a>
            </li>
            <li><a href="#">Content 3</a>
            </li>
            <li><a href="#">Content 3</a>
            </li>
          </ul>
        </li>
        <li>
          <h3>Panel 4</h3>
          <ul>
            <li><a href="#">Content 4</a>
            </li>
            <li><a href="#">Content 4</a>
            </li>
            <li><a href="#">Content 4</a>
            </li>
            <li><a href="#">Content 4</a>
            </li>
            <li><a href="#">Content 4</a>
            </li>
            <li><a href="#">Content 4</a>
            </li>
            <li><a href="#">Content 4</a>
            </li>
            <li><a href="#">Content 4</a>
            </li>
            <li><a href="#">Content 4</a>
            </li>
            <li><a href="#">Content 4</a>
            </li>
            <li><a href="#">Content 4</a>
            </li>
            <li><a href="#">Content 4</a>
            </li>
            <li><a href="#">Content 4</a>
            </li>
            <li><a href="#">Content 4</a>
            </li>
            <li><a href="#">Content 4</a>
            </li>
            <li><a href="#">Content 4</a>
            </li>
            <li><a href="#">Content 4</a>
            </li>
          </ul>
        </li>
      </ul>
    </div>
  </div>
  <script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script>
  <script src="accordian1.js" type="text/javascript"></script>
</body>

</html>

【问题讨论】:

  • 非常感谢您查看我的代码。我希望实现的是当用户单击面板 2 时,脚本应该折叠面板 1 的内容(如果它已打开)并滚动顶部面板 1 标题,即将其推到上方并将面板 2 标题带到顶部手风琴盒并显示其内容。我希望手风琴的整个高度为 400 像素。类似于stampede-design.com/blog/demo/shaiful/large-accordion/… 中描述的效果。我很抱歉没有让自己清楚。谢谢。

标签: javascript html scroll accordion


【解决方案1】:

我编辑了您的 CSS 并为您的面板内容设置了最小高度。请参阅下面的代码 sn-p。我希望这会有所帮助!

/*jQuery time*/
$(document).ready(function() {
  $("#accordian h3").click(function() {
    //slide up all the link lists
    $("#accordian ul ul").slideUp();
    //slide down the link list below the h3 clicked - only if its closed
    if (!$(this).next().is(":visible")) {
      $(this).next().slideDown();
    }
  })
})
* {
  margin: 0;
  padding: 0;
}
#description {
  position: relative;
  top: 200px;
  width: 300px;
  height: 400px;
  border: 2px solid blue;
}
#accordian {
  font-family: arial, helvetica, sans-serif;
  background: #006F70;
  position: relative;
  padding: 10px 0px;
  width: 250px;
  color: white;
}
// added line
#accordian ul li ul{
  max-height: 200px;
  overflow-y: auto;
}
<html>

<head>
  <link href="accordianFABtest-GS.css" type="text/css" rel="stylesheet" />
</head>

<body>
  <div id="description">
    <div id="accordian">
      <ul>
        <li>
          <h3>Panel 1</h3>
          <ul>
            <li><a href="#">Content 1</a>
            </li>
            <li><a href="#">Content 1</a>
            </li>
            <li><a href="#">Content 1</a>
            </li>
            <li><a href="#">Content 1</a>
            </li>
            <li><a href="#">Content 1</a>
            </li>
            <li><a href="#">Content 1</a>
            </li>
            <li><a href="#">Content 1</a>
            </li>
            <li><a href="#">Content 1</a>
            </li>
            <li><a href="#">Content 1</a>
            </li>
            <li><a href="#">Content 1</a>
            </li>
            <li><a href="#">Content 1</a>
            </li>
            <li><a href="#">Content 1</a>
            </li>
            <li><a href="#">Content 1</a>
            </li>
            <li><a href="#">Content 1</a>
            </li>
            <li><a href="#">Content 1</a>
            </li>
            <li><a href="#">Content 1</a>
            </li>
            <li><a href="#">Content 1</a>
            </li>
            <li><a href="#">Content 1</a>
            </li>
          </ul>
        </li>
        <li>
          <h3>Panel 2</h3>
          <ul>
            <li><a href="#">Content 2</a>
            </li>
            <li><a href="#">Content 2</a>
            </li>
            <li><a href="#">Content 2</a>
            </li>
            <li><a href="#">Content 2</a>
            </li>
            <li><a href="#">Content 2</a>
            </li>
            <li><a href="#">Content 2</a>
            </li>
            <li><a href="#">Content 2</a>
            </li>
            <li><a href="#">Content 2</a>
            </li>
            <li><a href="#">Content 2</a>
            </li>
            <li><a href="#">Content 2</a>
            </li>
            <li><a href="#">Content 2</a>
            </li>
            <li><a href="#">Content 2</a>
            </li>
            <li><a href="#">Content 2</a>
            </li>
            <li><a href="#">Content 2</a>
            </li>
          </ul>
        </li>
        <li>
          <h3>Panel 3</h3>
          <ul>
            <li><a href="#">Content 3</a>
            </li>
            <li><a href="#">Content 3</a>
            </li>
            <li><a href="#">Content 3</a>
            </li>
            <li><a href="#">Content 3</a>
            </li>
            <li><a href="#">Content 3</a>
            </li>
            <li><a href="#">Content 3</a>
            </li>
          </ul>
        </li>
        <li>
          <h3>Panel 4</h3>
          <ul>
            <li><a href="#">Content 4</a>
            </li>
            <li><a href="#">Content 4</a>
            </li>
            <li><a href="#">Content 4</a>
            </li>
            <li><a href="#">Content 4</a>
            </li>
            <li><a href="#">Content 4</a>
            </li>
            <li><a href="#">Content 4</a>
            </li>
            <li><a href="#">Content 4</a>
            </li>
            <li><a href="#">Content 4</a>
            </li>
            <li><a href="#">Content 4</a>
            </li>
            <li><a href="#">Content 4</a>
            </li>
            <li><a href="#">Content 4</a>
            </li>
            <li><a href="#">Content 4</a>
            </li>
            <li><a href="#">Content 4</a>
            </li>
            <li><a href="#">Content 4</a>
            </li>
            <li><a href="#">Content 4</a>
            </li>
            <li><a href="#">Content 4</a>
            </li>
            <li><a href="#">Content 4</a>
            </li>
          </ul>
        </li>
      </ul>
    </div>
  </div>
  <script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script>
  <script src="accordian1.js" type="text/javascript"></script>
</body>

</html>

【讨论】:

    猜你喜欢
    • 2016-10-11
    • 2014-03-24
    • 1970-01-01
    • 2021-06-26
    • 2016-06-29
    • 1970-01-01
    • 2017-01-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多