DIV 跟随屏幕滚动

这篇博客讲述了一个小孩喜欢听故事的经历,通过一系列和尚的故事填充内容,并使用JavaScript实现故事滚动显示和返回顶部功能。
<!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>  
    <title></title>   
    <script src="jquery-1.7.1.min.js" type="text/javascript"></script>   
     <style type="text/css">  
        #test  
        {  
            border: 1px #8aae44 solid;  
            background-color: #eee;  
            padding:20px 10px 20px 10px;  
            margin: 0 0 0 0px;   
            position: absolute;  
            cursor: pointer;    
        }  
        p{  
        color:GrayText;  
        font-size:22pt;  
        font-family:华文彩云;  
        }  
    </style>   
      
 <script type="text/javascript">  
     $(document).ready(function() {  
         //滚动条事件  
         $(window).scroll(function() {  
             //获取窗口一半的高度+滚动条高度  
             var offsetTop = $(window).scrollTop() + $(window).height() / 2;  
             //改变样式 显示   
             $("#test").show();  
             //改变样式 top 高度  
             $("#test").animate({ top: offsetTop + "px" }, { duration: 600, queue: false });  
             //改变left 位置  
             $("#test").animate({ left: $(window).width() - 40 + "px" }, { duration: 600, queue: false });  
         });  
  
         //讲故事 填充测试数据  
         for (var i = 1; i < 999; i++) {  
             $("#content").append("<h2 >" + i + "个和尚!!!</h2> ");  
         }  
         $("#content").append("<h2>" + i + "</h2> 那么多和尚在干吗呢 ? 预知后事如何,君请听下回分解!!!");  
  
         //返回顶部  
         $("#test").click(function() {  
             $("#test").animate({ top: "0px" }, { duration: 600, queue: false });  
             $(window).scrollTop(0, 0);  
         });  
  
     });  
   
 </script>  
</head>  
<body style="height:3000px;text-align:center">     
  
<div id="test" style="display:none" >顶<br />部</div>   
  
<p >从前有个小孩喜欢听故事  !</p>  
<p style="color:Gray">故事大概是这样的 从前有座山 山上有很多和尚 !</p>   
  
<div id="content" style="width:80%;text-align:center" ></div>   
  
</body>  
</html> 

一、遇顶固定的例子 我一直以为是某个div或层随屏幕滚动,遇顶则固定,离开浏览器顶部又还原这样的例子其实不少,其实它的名字叫“层的智能浮动效果”。目前我们在国内的商业网站上就常常看到这样的效果了。例如淘宝网的搜索结果页的排序水平条,在默认状态时,该工具条是跟随页面滚动的,如下图: 而当我们下拉滚动条,随着页面向下滚动,当此工具条接触到浏览器的上边缘时,这时就会独立出来固定在顶部,不跟随页面滚动滚动了,如下图: 类似的例子效果我们在别的网站上都有看到过,例如腾讯微博首页上,当我们下拉屏幕浏览最新微博时,工具条也会出现这个效果,如下图: 这个效果看上去方便,贴心,也许还带推动广告的促销呢。原理其实很简单,本文展示两种方法。 二、智能浮动效果的实现原理 它分两种状态,一是默认状态,二是浮动固顶状态。 默认状态就是默认状态,什么也不用做,保持原有的CSS就好。无论有没有对它做定位,做了absolute也好,没做也好,都行。 关键是当浏览器屏幕滚动时,该对象div层要移除浏览器界面视区的时候,是要修改它的position属性,让它浮动在窗口的上沿显示就行了。最好的position属性是fixed,可以在IE6+和其他浏览器浮动层平滑的固定定位,由于IE6老大哥不支持fixed属性,所以可以另外赋予它absolute属性。当然也会产生副作用——滚动不平滑。不过也无所谓了,在微软公布不再修补更新XP漏洞,在中国360安全卫士的帮助下虽然大家仍然使用XP,但IE的用户已经是少之又少了。 那接下来,如何判断当前div层与浏览器窗口的上边缘接触了呢?遇到浏览器顶部了呢? 当浮动层div与浏览器窗口上边缘接触的一瞬间,其页面垂直偏移值与页面的滚动高度是一致的,所以我们就用这个进行判断。那如何获得页面上元素距离页面的垂直距离呢? 这里则是使用javaScript库实现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值