JS实现兼容性较好的随屏滚动效果


Posted in Javascript onNovember 09, 2015

本文实例讲述了JS实现兼容性较好的随屏滚动效果。分享给大家供大家参考,具体如下:

代码中的参数解释如下:

id 你要滚动的内容的id
l 横坐标的位置 不写为紧贴右边
t 你要放在页面的那个位置默认是贴着底边 0是贴着顶边
f 1表示固定 不写或者0表示滚动。

本代码滚动时不会出现抖动,随着屏幕大小而变动

运行效果截图如下:

JS实现兼容性较好的随屏滚动效果

在线演示地址如下:

具体代码如下:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gbk" />
<title>随屏滚动</title>
<style>
 html,body{
  padding:0;
  margin:0;
 }
</style>
</head>
<body>
 <div id="aa" style="width:200px;height:200px;background:#c0c0c0;" >我在随屏滚</div>
 <div id="bb" style="width:200px;height:200px;background:#c0c0c0;" >我静止不动</div>
 <div style="width:100%;height:500px;background:#000"></div>
 <div style="width:100%;height:500px;background:green"></div>
 <div style="width:100%;height:500px;background:red"></div>
</body>
</html>
<script>
function scroll(p){
 var d = document,dd = d.documentElement,db = d.body,w = window,o = d.getElementById(p.id),ie = /msie/i.test(navigator.userAgent),style;
  if(o){
  o.style.cssText +=";position:"+(p.f&&!ie?'fixed':'absolute')+";"+(p.l==undefined?'right:0;':'left:'+p.l+'px;')+(p.t!=undefined?'top:'+p.t+'px':'bottom:0');
   if(p.f&&ie){
   o.style.cssText +=';left:expression(body.scrollLeft + '+(p.l==undefined?db.clientWidth-o.offsetWidth:p.l)+' + "px");top:expression(body.scrollTop +'+(p.t==undefined?db.clientHeight-o.offsetHeight:p.t)+'+ "px" );'
    db.style.cssText +=";background-image:url(about:blank);background-attachment:fixed;"
   }else{
    if(!p.f){
     w.onresize = w.onscroll = function(){
      var timer,timer1;
      return function(){
       if(timer)
        clearTimeout(timer);
       timer = setTimeout(function(){
        timer1 = setInterval(function(){
         var st = db.scrollTop,c;
         c = st - o.offsetTop + (p.t!=undefined?p.t:(w.innerHeight||db.clientHeight)-o.offsetHeight);
         if(c!=0){
          o.style.top = o.offsetTop + Math.ceil(Math.abs(c)/10)*(c<0?-1:1) + 'px';
         }else{
          clearInterval(timer1);  
         }
        },10)
       },100)//控制滚动的频率越大频率越慢
      }
     }()
    }
   }
  } 
 }
 scroll({
  id:'aa'
 })
  scroll({
  id:'bb',
  l:0,
  t:200,
  f:1
  })
</script>

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
JavaScript 事件属性绑定带参数的函数
Mar 13 Javascript
JavaScript 函数调用规则
Sep 14 Javascript
各浏览器对document.getElementById等方法的实现差异解析
Dec 05 Javascript
巧用jquery解决下拉菜单被Div遮挡的相关问题
Feb 13 Javascript
javascript模拟订火车票和退票示例
Apr 24 Javascript
纯js实现手风琴效果代码
Apr 17 Javascript
微信小程序图表插件(wx-charts)实例代码
Jan 17 Javascript
JavaScript基础之流程控制语句的用法
Aug 31 Javascript
深入理解ES7的async/await的用法
Sep 09 Javascript
微信小程序loading组件显示载入动画用法示例【附源码下载】
Dec 09 Javascript
vue从一个页面跳转到另一个页面并携带参数的解决方法
Aug 12 Javascript
JavaScript中isPrototypeOf函数
Nov 07 Javascript
初步了解javascript面向对象
Nov 09 #Javascript
js面向对象之常见创建对象的几种方式(工厂模式、构造函数模式、原型模式)
Nov 09 #Javascript
JS实现网页每隔3秒弹出一次对话框的方法
Nov 09 #Javascript
fastclick插件导致日期(input[type=&quot;date&quot;])控件无法被触发该如何解决
Nov 09 #Javascript
JavaScript实现同时调用多个函数的方法
Nov 09 #Javascript
javascript实现的登陆遮罩效果汇总
Nov 09 #Javascript
jquery实现简易的移动端验证表单
Nov 08 #Javascript
You might like
php 随机生成10位字符代码
2009/03/26 PHP
PHP自定义函数实现格式化秒的方法
2016/09/14 PHP
php 判断字符串编码是utf-8 或gb2312实例
2016/11/01 PHP
在Yii2特定页面如何禁用调试工具栏Debug Toolbar详解
2017/08/07 PHP
Laravel框架自定义分页样式操作示例
2020/01/26 PHP
MooTools 1.2中的Drag.Move来实现拖放
2009/09/15 Javascript
JavaScript Timer实现代码
2010/02/17 Javascript
菜鸟javascript基础资料整理3 正则
2010/12/06 Javascript
24款非常有用的 jQuery 插件分享
2011/04/06 Javascript
JS获取图片高度宽度的方法分享
2015/04/17 Javascript
iframe中子父类窗口调用JS的方法及注意事项
2015/08/25 Javascript
Js制作点击输入框时默认文字消失的效果
2015/09/05 Javascript
JavaScript位置与大小(1)之正确理解和运用与尺寸大小相关的DOM属性
2015/12/26 Javascript
喜大普奔!jQuery发布 3.0 最终版
2016/06/12 Javascript
Vue中的v-cloak使用解读
2017/03/27 Javascript
简单的JS控制button颜色随点击更改的实现方法
2017/04/17 Javascript
利用原生js实现html5小游戏之打砖块(附源码)
2018/01/03 Javascript
JS数据类型STRING使用实例解析
2019/12/18 Javascript
Python的一些用法分享
2012/10/07 Python
python之wxPython应用实例
2014/09/28 Python
编写Python脚本来获取Google搜索结果的示例
2015/05/04 Python
python采用django框架实现支付宝即时到帐接口
2016/05/17 Python
Python实现DDos攻击实例详解
2019/02/02 Python
如何通过python画loss曲线的方法
2019/06/26 Python
Python 实现黑客帝国中的字符雨的示例代码
2020/02/20 Python
Python语言编写智力问答小游戏功能
2020/10/13 Python
幼儿园实习自我鉴定
2013/12/15 职场文书
大学生创业计划书的用途
2014/01/08 职场文书
简短证婚人证婚词
2014/01/09 职场文书
小学生学习感言
2014/03/10 职场文书
主题党日活动总结
2014/07/08 职场文书
Golang表示枚举类型的详细讲解
2021/09/04 Golang
springboot 自定义配置 解决Boolean属性不生效
2022/03/18 Java/Android
win10清理dns缓存
2022/04/19 数码科技
MySQL的prepare使用以及遇到的bug
2022/05/11 MySQL
Nginx使用ngx_http_upstream_module实现负载均衡功能示例
2022/08/05 Servers