Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 平滑滚动端定位_Javascript_Jquery_Html_Scroll_Smooth Scrolling - Fatal编程技术网

Javascript 平滑滚动端定位

Javascript 平滑滚动端定位,javascript,jquery,html,scroll,smooth-scrolling,Javascript,Jquery,Html,Scroll,Smooth Scrolling,我有一个漂亮平滑的动画滚动条,根据你在导航上点击的内容上下移动(多亏了!)。现在,这一切都很好,但我有一个导航,它粘在浏览器窗口的顶部,当它向下滚动时,会妨碍部分标题。在我的一生中,我找不到任何人可能对一个非常简单的函数有过类似的问题 以下是我粘贴到HTML中的JS: <script type="text/javascript"> $(document).ready(function() { function filterPath(string) { return strin

我有一个漂亮平滑的动画滚动条,根据你在导航上点击的内容上下移动(多亏了!)。现在,这一切都很好,但我有一个导航,它粘在浏览器窗口的顶部,当它向下滚动时,会妨碍部分标题。在我的一生中,我找不到任何人可能对一个非常简单的函数有过类似的问题

以下是我粘贴到HTML中的JS:

<script type="text/javascript">
$(document).ready(function() {
  function filterPath(string) {
  return string
    .replace(/^\//,'')
    .replace(/(index|default).[a-zA-Z]{3,4}$/,'')
    .replace(/\/$/,'');
  }
  var locationPath = filterPath(location.pathname);
  var scrollElem = scrollableElement('html', 'body');

   $('a[href*=#]').each(function() {
    var thisPath = filterPath(this.pathname) || locationPath;
    if (  locationPath == thisPath
    && (location.hostname == this.hostname || !this.hostname)
    && this.hash.replace(/#/,'') ) {
      var $target = $(this.hash), target = this.hash;
      if (target) {
        var targetOffset = $target.offset().top;
        $(this).click(function(event) {
          event.preventDefault();
          $(scrollElem).animate({scrollTop: targetOffset}, 800, function() {
            location.hash = target;
          });
        });
      }
    }
  });

  // use the first element that is "scrollable"
  function scrollableElement(els) {
    for (var i = 0, argLength = arguments.length; i <argLength; i++) {
      var el = arguments[i],
          $scrollElement = $(el);
      if ($scrollElement.scrollTop()> 0) {
         return el;
      } else {
        $scrollElement.scrollTop(1);
        var isScrollable = $scrollElement.scrollTop()> 0;
        $scrollElement.scrollTop(0);
        if (isScrollable) {
          return el;
        }
      }
    }
    return [];
  }

});</script>

$(文档).ready(函数(){
函数筛选器路径(字符串){
返回字符串
.替换(/^\/,'')
.replace(/(索引|默认值)。[a-zA-Z]{3,4}$/,“”)
.替换(/\/$/,'');
}
var locationPath=filterPath(location.pathname);
var scrolleem=scrollableElement('html','body');
$('a[href*=#]')。每个(函数(){
var thisPath=filterPath(this.pathname)| | locationPath;
如果(locationPath==此路径
&&(location.hostname==this.hostname | |!this.hostname)
&&this.hash.replace(/#/,''){
var$target=$(this.hash),target=this.hash;
如果(目标){
var targetOffset=$target.offset().top;
$(此)。单击(函数(事件){
event.preventDefault();
$(scrollElem).animate({scrollTop:targetOffset},800,function(){
location.hash=目标;
});
});
}
}
});
//使用第一个“可滚动”的元素
函数可滚动元素(els){

对于(var i=0,argLength=arguments.length;i

获取jquery.scrollTo.js的副本 从

这是控制滚动项目位置的功能

 $.scrollTo( 0, 500); 
如果设置更高的数字,0将显示在页面顶部 它会占据页面的下部,在我的示例中,我有5个部分想要滚动到。根据需要进行更改

我在标题部分使用了这个:

 <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.js" type="text/javascript"></script>


 <script type="text/javascript" src="javascripts/jquery.scrollTo.js"></script>
 <script type="text/javascript">
 $(document).ready(function()
 {
 // scroll to top
 $('a.topOfPage').click(function(){
 $.scrollTo( 0, 500);
 return false;
 });
 // scroll to top
 $('a.twoOfPage').click(function(){
 $.scrollTo( 570, 500);
 return false;
 });
 // scroll to top
 $('a.threeOfPage').click(function(){
 $.scrollTo( 1175, 500);
 return false;
 });
 // scroll to top
 $('a.fourOfPage').click(function(){
 $.scrollTo( 1790, 500);
 return false;
 });
 // scroll to top
 $('a.fiveOfPage').click(function(){
 $.scrollTo( 2385, 500);
 return false;
 });
 });
 </script>

$(文档).ready(函数()
{
//滚动到顶部
$('a.topOfPage')。单击(函数(){
$.scrollTo(0,500);
返回false;
});
//滚动到顶部
$('a.twoOfPage')。单击(函数(){
$.scrollTo(570500);
返回false;
});
//滚动到顶部
$('a.threeOfPage')。单击(函数(){
$.scrollTo(1175500);
返回false;
});
//滚动到顶部
$('a.fourOfPage')。单击(函数(){
$.scrollTo(1790500);
返回false;
});
//滚动到顶部
$('a.fiveOfPage')。单击(函数(){
$.scrollTo(2385500);
返回false;
});
});
在相应导航的车身部分:

 <ul class="pagination">

   <li><a href="" class="topOfPage">1</a></li>
   <li><a href="" class="twoOfPage">2</a></li>
   <li><a href="" class="threeOfPage">3</a></li>
   <li><a href="" class="fourOfPage">4</a></li>
   <li><a href="" class="fiveOfPage">5</a></li>

 </ul>  
如果你需要更多的参考,我通过

我希望这对你有帮助

干杯
V

我觉得你发布的JS没有多大帮助。你提到了一个nav,它妨碍了我,那么它当前的CSS属性是什么?如果你知道的话,可能是什么妨碍了它?@Matthew道歉,在看了几个小时的代码后,我昨晚失去了输入的意愿:)这是我的测试页面:nathanlangley.co.uk/main_site_6/index.html,当你在导航栏上选择“Gallery”时,你可以看到标题部分被导航栏遮住了。我确信有一个值需要修改,但我在代码中看不到。谢谢。嘿,V谢谢你的回复。我不认为我解释得很好。如果你查看我的测试并缩小浏览器(假设你有一个更大的屏幕)选择“推荐”你会明白我的意思。滚动条工作正常,但粘性导航覆盖标题。嘿-我知道你想要“标题”从较低的位置开始,这样导航覆盖就不会在顶部重叠。如果是这样的话,上面的代码将允许您确定页面向下滚动的距离。我的工作也有同样的问题,我有一个固定的导航顶部部分,它与您的站点完全相同。我已经为您和zip文件夹提供了一个示例,其中包含使用了e代码。嘿,对不起,回复时间太长了,现在就尝试一下!你我的朋友是一个传奇人物。工作了一顿。非常感谢你花时间来帮助我。非常感谢!)