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 相关文章推荐
简单的JS多重继承示例
Mar 13 Javascript
javascript 支持链式调用的异步调用框架Async.Operation
Aug 04 Javascript
ExtJs 表单提交登陆实现代码
Aug 19 Javascript
JQuery入门——用映射方式绑定不同事件应用示例
Feb 05 Javascript
阿里云ecs服务器中安装部署node.js的步骤
Oct 08 Javascript
js制作支付倒计时页面
Oct 21 Javascript
webpack常用配置项配置文件介绍
Nov 07 Javascript
jquery滚动条插件(可以自定义)
Dec 11 Javascript
详解angularjs结合pagination插件实现分页功能
Feb 10 Javascript
Bootstrap 3 按钮标签实例代码
Feb 21 Javascript
layui 优化button按钮和弹出框的方法
Aug 15 Javascript
给原生html中添加水印遮罩层的实现示例
Apr 02 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模板Smarty的初级使用方法以及心得分享
2013/06/21 PHP
PHP strip_tags()去除HTML、XML以及PHP的标签介绍
2014/02/18 PHP
JQuery 简便实现页面元素数据验证功能
2007/03/24 Javascript
用Javscript实现表单复选框的全选功能
2007/05/25 Javascript
学习面向对象之面向对象的术语
2010/11/30 Javascript
jQuery插件实现屏蔽单个元素使用户无法点击
2013/04/12 Javascript
jQuery判断复选框是否勾选的原理及示例
2014/05/21 Javascript
jquery实现的树形目录实例
2015/06/26 Javascript
理解JS绑定事件
2016/01/19 Javascript
jQuery中选择器的基础使用教程
2016/05/23 Javascript
Js类的静态方法与实例方法区分及jQuery拓展的两种方法
2016/06/03 Javascript
浅析$.getJSON异步请求和同步请求
2016/06/06 Javascript
微信+angularJS的SPA应用中用router进行页面跳转,jssdk校验失败问题解决
2016/09/09 Javascript
什么是JavaScript注入攻击?
2016/09/14 Javascript
JavaScript 继承详解(六)
2016/10/11 Javascript
详解webpack2+React 实例demo
2017/09/11 Javascript
详解组件库的webpack构建速度优化
2018/06/18 Javascript
vue+高德地图写地图选址组件的方法
2019/05/18 Javascript
Nuxt v-bind绑定img src不显示的解决
2019/12/05 Javascript
Ant Design Vue table中列超长显示...并加提示语的实例
2020/10/31 Javascript
Python二维码生成库qrcode安装和使用示例
2014/12/16 Python
详细介绍Python的鸭子类型
2016/09/12 Python
Python 移动光标位置的方法
2019/01/20 Python
python实现AES加密和解密
2019/03/27 Python
python创建学生管理系统
2019/11/22 Python
Django中modelform组件实例用法总结
2020/02/10 Python
Python实现淘宝秒杀功能的示例代码
2021/01/19 Python
幼儿园大班毕业感言
2014/02/06 职场文书
材料加工工程求职信
2014/02/19 职场文书
新手上路标语
2014/06/20 职场文书
委托书的写法
2014/08/30 职场文书
乡镇领导干部个人对照检查材料思想汇报
2014/09/23 职场文书
学习型家庭事迹材料
2014/12/20 职场文书
2015秋季开学典礼主持词
2015/07/16 职场文书
go web 预防跨站脚本的实现方式
2021/06/11 Golang
Java设计模式中的命令模式
2022/04/28 Java/Android