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 StringBuilder类实现
Dec 22 Javascript
基于jQuery图片平滑连续滚动插件
Apr 27 Javascript
原生javascript实现获取指定元素下所有后代元素的方法
Oct 28 Javascript
酷炫jQuery全屏3D焦点图动画效果
Mar 22 Javascript
jQuery ajax 当async为false时解决同步操作失败的问题
Nov 18 Javascript
JS验证字符串功能
Feb 22 Javascript
angular bootstrap timepicker TypeError提示怎么办
Jun 13 Javascript
jquery实现二级导航下拉菜单效果实例
May 14 jQuery
layui table 列宽百分比显示的实现方法
Sep 28 Javascript
vue 使用原生组件上传图片的实例
Sep 08 Javascript
原生JavaScript实现轮播图
Jan 10 Javascript
一起来看看Vue的核心原理剖析
Mar 24 Vue.js
初步了解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
帅气的琦玉老师
2020/03/02 日漫
php中FTP函数ftp_connect、ftp_login与ftp_chmod用法
2014/11/18 PHP
PHP实现无限极分类图文教程
2014/11/25 PHP
简单理解PHP的面向对象编程方式
2016/05/17 PHP
Yii2第三方类库插件Imagine的安装和使用
2017/07/06 PHP
php加速缓存器opcache,apc,xcache,eAccelerator原理与配置方法实例分析
2020/03/02 PHP
Prototype使用指南之ajax
2007/01/10 Javascript
基于JQuery实现滚动到页面底端时自动加载更多信息
2014/01/31 Javascript
ie 7/8不支持trim的属性的解决方案
2014/05/23 Javascript
js动态往表格的td中添加图片并注册事件
2014/06/12 Javascript
java和javascript获取word文档的书签位置对比
2014/06/19 Javascript
js处理php输出时间戳对不上号的解决方法
2014/06/20 Javascript
jQuery实现Tab选项卡切换效果简单演示
2015/11/23 Javascript
五种js判断是否为整数类型方式
2015/12/03 Javascript
深入浅析AngularJS和DataModel
2016/02/16 Javascript
JS不用正则验证输入的字符串是否为空(包含空格)的实现代码
2016/06/14 Javascript
详解React-Todos入门例子
2016/11/08 Javascript
移动端效果之IndexList详解
2017/10/20 Javascript
vue-router 组件复用问题详解
2018/01/22 Javascript
对angular 监控数据模型变化的事件方法$watch详解
2018/10/09 Javascript
给localStorage设置一个过期时间的方法分享
2018/11/06 Javascript
玩转Koa之koa-router原理解析
2018/12/29 Javascript
详解js获取video任意时间的画面截图
2019/04/17 Javascript
three.js 如何制作魔方
2020/07/31 Javascript
JS删除对象中某一属性案例详解
2020/09/08 Javascript
[01:56]无止竞 再出发——中国军团出征2017年DOTA2国际邀请赛
2017/07/05 DOTA
python实现合并两个数组的方法
2015/05/16 Python
Python下载指定页面上图片的方法
2016/05/12 Python
Python编程之微信推送模板消息功能示例
2017/08/21 Python
手写一个python迭代器过程详解
2019/08/27 Python
思想品德自我鉴定
2013/10/12 职场文书
高中毕业生个人自我鉴定
2013/11/24 职场文书
政府采购方案
2014/06/12 职场文书
2015年国培研修感言
2015/08/01 职场文书
学习心得体会
2019/06/20 职场文书
详解nodejs内置模块
2021/05/06 NodeJs