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 相关文章推荐
关于query Javascript CSS Selector engine
Apr 12 Javascript
JavaScript通过RegExp实现客户端验证处理程序
May 07 Javascript
js实现点小图看大图效果的思路及示例代码
Oct 28 Javascript
JavaScript中统计Textarea字数并提示还能输入的字符
Jun 10 Javascript
jQuery取消ajax请求的方法
Jun 09 Javascript
JavaScript访问字符串中单个字符的两种方法
Jul 03 Javascript
JS打字效果的动态菜单代码分享
Aug 21 Javascript
详解利用 Express 托管静态文件的方法
Sep 18 Javascript
vue-router+vuex addRoutes实现路由动态加载及菜单动态加载
Sep 28 Javascript
利用jQuery+localStorage实现一个简易的计时器示例代码
Dec 25 jQuery
浅谈vux之x-input使用以及源码解读
Nov 04 Javascript
Vue+Element ui 根据后台返回数据设置动态表头操作
Sep 21 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实现递归复制整个文件夹的类实例
2015/08/03 PHP
jValidate 基于jQuery的表单验证插件
2009/12/12 Javascript
Jquery中删除元素的实现代码
2011/12/29 Javascript
javascript 实现简单的table排序及table操作练习
2012/12/28 Javascript
jquery中邮箱地址 URL网站地址正则验证实例代码
2013/09/15 Javascript
jquery1.9 下检测浏览器类型和版本的方法
2013/12/26 Javascript
js中各种类型的变量在if条件中是true还是false
2014/07/16 Javascript
JavaScript获得url所有参数键值表的方法
2015/03/21 Javascript
js实现跨域访问的三种方法
2015/12/09 Javascript
使用jquery.form.js实现图片上传的方法
2016/05/05 Javascript
JavaScript 字符串常用操作小结(非常实用)
2016/11/30 Javascript
详解数组Array.sort()排序的方法
2020/05/09 Javascript
js实现数字递增特效【仿支付宝我的财富】
2017/05/05 Javascript
使用async、enterproxy控制并发数量的方法详解
2018/01/02 Javascript
vue.js使用代理和使用Nginx来解决跨域的问题
2018/02/03 Javascript
vue中render函数的使用详解
2018/10/12 Javascript
小程序获取周围IBeacon设备的方法
2018/10/31 Javascript
three.js实现炫酷的全景3D重力感应
2018/12/30 Javascript
小程序实现背景音乐播放和暂停
2020/06/19 Javascript
javascript局部自定义鼠标右键菜单
2020/12/08 Javascript
[48:56]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 VG vs KG
2018/03/31 DOTA
对于Python的框架中一些会话程序的管理
2015/04/20 Python
详解C++编程中一元运算符的重载
2016/01/19 Python
python3学习笔记之多进程分布式小例子
2018/02/13 Python
对python中array.sum(axis=?)的用法介绍
2018/06/28 Python
详解python如何在django中为用户模型添加自定义权限
2018/10/15 Python
python操作gitlab API过程解析
2019/12/27 Python
味多美官网:蛋糕订购,100%使用天然奶油
2017/11/10 全球购物
高级护理实习生自荐信
2013/09/28 职场文书
办理生育手续介绍信
2014/01/14 职场文书
岗位说明书标准范本
2014/07/30 职场文书
模范教师材料大全
2014/12/16 职场文书
2015年幼儿园国庆节活动总结
2015/07/30 职场文书
Python中常见的反爬机制及其破解方法总结
2021/06/10 Python
R9700摩机记
2022/04/05 无线电
Java由浅入深通关抽象类与接口(上篇)
2022/04/26 Java/Android