平滑滚动绝对定位内容

时间:2015-06-18 02:58:33

标签: javascript jquery html css smooth-scrolling

我正在使用此Page scroller.js为我的页面提供平滑滚动效果。 但它不会起作用。

问题是我的目标是具有位置的div:绝对;我仍然需要这个div有绝对的位置,并且还有平滑的滚动工作。

这是我的Html

<div id="wrapper">
<nav id="globalNav">
  <h1><a href="#"><img src="img/logo.png" alt="SHISEIDO" /></a></h1>
  <ul class="subMenu">
    <li><img src="img/seperator.png" alt=""></li>
    <li><a href="#works">TOP</a></li>
    <li><a href="#concept">CONCEPT</a></li>
    <li><a href="#contact">CONTACT</a></li>
    <li><img src="img/seperator.png" alt=""></li>
    <li><img src="img/seperator.png" alt=""></li>
    <li><p class="copyright">Copyright © KOOGEN 2015<br>All rights reserved.</p></li>
  </ul>
  <div id="fbFeed">
    <p></p>
  </div>
</nav>

<div class="col-sm-8" id="left">
  <div class="set">
  </div><!-- set -->
</div>

<div class="col-sm-4" id="right">
    <div id="inner1">
      <div id="works"></div>
      <div id="concept"></div>
      <div id="contact"></div> 
    </div><!-- inner -->
</div>


</div><!-- #wrapper -->

所以,#left #right divs有绝对位置来创建3列布局。 我添加了锚点链接到我的globalNav,这样当我点击时,#right div内的内容将顺利滚动。

继承人我的css已加入#left和#right divs。

      #left {
    position: absolute;
    top: 0px;
    bottom: 0;
    left: 218px;
    width: 186px;
    overflow-y: scroll;
    background-color: rgba(255, 255, 255, 0.45);
    padding-left: 6px;
  }
 #left .set{
  padding-top: 230px;
 }
  #right {
    position: absolute;
    top: 0;
    bottom: 0;
    right: 0;
    overflow-y: scroll;
    width: 67.5%;
  }
 #right #works{
  padding-top: 230px;
 }
 #right .inner{
  position: relative;
 }

任何帮助将不胜感激! 谢谢你的时间!

更新: 这是小提琴。 http://jsfiddle.net/hirohito/Ls3jwpm9/

当窗口的宽度非常窄时,它可以正常工作,但是当我将其拉伸到理想的窗口大小时,平滑的滚动停止工作。

1 个答案:

答案 0 :(得分:0)

您可以使用平滑滚动

    $(document).on('click', 'a[href^="#"]', function(e) {
        var id = $(this).attr('href');
        var $id = $(id);
        if ($id.size() === 0) {
        return;
        }
        e.preventDefault();
        var pos = $(id).offset().top;
        pos = pos-95;   
        $('body, html').animate({scrollTop: pos});
    });