jquery 锚点 滚动 动画

下载例子地址  http://www.jb51.net/jiaoben/125246.html

学习:http://www.w3school.com.cn/jquery/css_scrolltop.asp


scrollTop(a) a为离到该元素top的距离(即高度),而不是滚动的长度

offset() 则是该元素距离文档顶部的的距离。这里一定要注意是文档的顶部的距离,而不是说浏览器顶部的距离。(计算时只对可视元素有效,被滚动下拉隐藏的部分不算在内)如一个页面中间放了个div A(A含滚动条,屏幕滚动条隐藏)里面包含了abc三个div依次垂直排放,下拉后a被遮掉,则c.offset.top()计算的值为A的高度加上b的长度。

所以如果这时要锚a的话,可能会出现偏移量为负值的情况(a的位置已经跳出屏幕外,负值的绝对值为跳出屏幕外的高度,如果没有跳出屏幕,则计算的是隐藏位置的高度)。




但如果是在整个body上滚动,滚动条下拉隐藏的部分会计算被遮掉的部分的值。见下载的例子。




自己例子:scrollTop范围是相对于自己的元素,offset是相对于整个屏幕。

contactList_是一个位于屏幕中间的div,里面有个滚动条。


$("#contactList_").offset().top获取的是可视contactList_ 这个Div在屏幕页面的高度,所以它是固定值,即这个div到屏幕顶的距离。

$("#index_" + index).offset().top计算获取#index_" + index在这个屏幕的可视高度

height_scrollTop就是要滚动的距离

$("#contactList_").scrollTop()当前为滚动是这个contactList_ Div里面当前元素的高度

height_scrollTop + $("#contactList_").scrollTop()即为#index_" + index在contactList_里面的高度

要锚到contactList_  Div 里面的index-,获取的时这个

/** 快捷锚点链接点击 */
    $(".keyword").click(function(e) {
    //   alert($("#contactList_").scrollTop())
    alert($("#contactList_").offset().top)//相对于浏览器固定的偏移高度
        var index = this.title=="#"?"0":this.title; // 数字锚点“#”为JQ关键字,用“0”转义
        // 跳转至页面对应锚点位置// html,body
        alert($("#index_" + index).offset().top)
        var height_scrollTop = $("#index_" + index).offset().top - $("#contactList_").offset().top;
        alert(height_scrollTop)
        alert(height_scrollTop + $("#contactList_").scrollTop())
        $("#contactList_").animate({
            scrollTop : height_scrollTop + $("#contactList_").scrollTop()
        }, 600);
    });
    
    /** 置顶锚点链接点击 */
    $("#toTop").click(function(e) {
        $("#contactList_").animate({scrollTop : 0}, 600);
    });


下载学习例子


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>jQuery锚点带动画跳转特效</title>
<script src="js/jquery.min.js" type="text/javascript"></script>
<link href="css/christmas.css" rel="stylesheet" type="text/css" />
<script type="text/javascript">
  jQuery(document).ready(function($) {
   $(".index_nav li a").click(function(event) {
      var index=this.title
      var id='#'+'index_'+index
      alert($(id).offset().top)
     $("html,body").animate({scrollTop: $(id).offset().top}, 1000);
   });
   $(".taoba").click(function(event) {
      var index=this.title
      var id='#'+'index_'+index
      alert($(id).offset().top)
     $("html,body").animate({scrollTop: $(id).offset().top}, 1000);
   });
   function a(x,y){
    l = $('#main').offset().left;
    w = $('#main').width();
    $('#tbox').css('left',(l + w + x) + 'px');
    $('#tbox').css('bottom',y + 'px');
}//获取#tbox的div距浏览器底部和页面内容区域右侧的距离函数#main为页面的可视宽度
$(function() {  
    $(window).scroll(function(){
    t = $(document).scrollTop();
    if(t>500){
      $('#tbox').show();
    }else{
      $('#tbox').hide();
    }
    if(t > 50){
        $('#gotop').fadeIn('slow');
    }else{
        $('#gotop').fadeOut('slow');
    }       
})   
    a(10,100);//#tbox的div距浏览器底部和页面内容区域右侧的距离
    $('#gotop').click(function(){
        $('body,html').animate({
            scrollTop: 0
        },
        800);//点击回到顶部按钮,缓懂回到顶部,数字越小越快
        return false;  
    })
});
  });
</script>
</head>
<body>
<div class="indexnav_wrap" >
  <ul class="index_nav">
    <li><a href="javascript:void(0)" title="1"><i>活动</i><strong>1</strong></a></li>
    <li><a href="javascript:void(0)" title="2"><i>活动</i><strong>2</strong></a></li>
    <li><a href="javascript:void(0)" title="3"><i>活动</i><strong>3</strong></a></li>
    <li><a href="javascript:void(0)" title="4"><i>活动</i><strong>4</strong></a></li>
    <li><a href="javascript:void(0)" title="5"><i>活动</i><strong>5</strong></a></li>
  </ul>
</div>
<div class="h50"></div>
<div class="row" id="main">
  <h2 id="index_1">这是第一个活动页</h2>
 
  <div class="mainpage mainpage1">
    </div>
 
</div>
<div class="h15"></div>
<div class="row">
  <h2 id="index_2">这是第二个活动页</h2>
 
  <div class="mainpage mainpage2">
   
    </div>
 
</div>
<div class="h15"></div>
<div class="row">
  <h2 id="index_3">这是第三个活动页</h2>
 
  <div class="mainpage mainpage3">
   
    </div>
 
</div>
<div class="h15"></div>
<div class="row">
  <h2 id="index_4">这是第四个活动页</h2>
 
  <div class="mainpage mainpage4">
   
    </div>
 
</div>
<div class="h15"></div>
<div class="row">
  <h2 id="index_5">这是第五个活动页</h2>
 
  <div class="mainpage mainpage5">
   
    </div>
 
</div>
<div id="tbox"><!-- 这个必须有  id="tbox"-->
    <a class="taoba" href="javascript:void(0)" title="1">1</a>
    <a class="taoba" href="javascript:void(0)" title="2">2</a>
    <a class="taoba" href="javascript:void(0)" title="3">3</a>
    <a class="taoba" href="javascript:void(0)" title="4">4</a>
    <a class="taoba" href="javascript:void(0)" title="5">5</a>
    <a id="gotop" href="javascript:void(0)" title="回到顶部">回到顶部</a> <!-- 这个也是id="gotop"  -->
</div>
</div>
</body>
</html>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章