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 相关文章推荐
JScript内置对象Array中元素的删除方法
Mar 08 Javascript
获取HTML DOM节点元素的方法的总结
Aug 21 Javascript
jQuery学习5 jQuery事件模型
Feb 07 Javascript
ExtJs使用总结(非常详细)
Mar 22 Javascript
分享8款优秀的 jQuery 加载动画和进度条插件
Oct 24 Javascript
使用jQuery解决IE与FireFox下createElement方法的差异
Nov 14 Javascript
JavaScript中的函数的两种定义方式和函数变量赋值
May 12 Javascript
jQuery往textarea中光标所在位置插入文本的方法
Jun 26 Javascript
jQuery搜索框效果实现代码(百度关键词联想)
Feb 25 Javascript
Bootstrap基本组件学习笔记之缩略图(13)
Dec 08 Javascript
jquery图片预览插件实现方法详解
Jul 18 jQuery
在vue项目中使用codemirror插件实现代码编辑器功能
Aug 27 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模板原理讲解
2013/11/13 PHP
使用php验证复选框有效性的示例
2013/11/13 PHP
PHP文件读写操作相关函数总结
2014/11/18 PHP
php统计数组元素个数的方法
2015/07/02 PHP
分享PHP-pcntl 实现多进程代码
2016/09/30 PHP
Laravel框架实现的rbac权限管理操作示例
2019/01/16 PHP
判断浏览器的javascript版本的代码
2010/09/03 Javascript
javascript 正则表达式相关应介绍
2012/11/27 Javascript
JS 数字转换研究总结
2013/12/26 Javascript
jQuery实现table隔行换色和鼠标经过变色的两种方法
2014/06/15 Javascript
js图片轮播效果实现代码
2020/04/18 Javascript
jQuery实现右下角可缩放大小的层完整实例
2016/06/20 Javascript
微信小程序 定义全局数据、函数复用、模版等详细介绍
2016/10/27 Javascript
xmlplus组件设计系列之文本框(TextBox)(3)
2017/05/03 Javascript
React学习笔记之事件处理(二)
2017/07/02 Javascript
微信小程序之多列表的显示和隐藏功能【附源码】
2018/08/06 Javascript
Vue自定义指令写法与个人理解
2019/02/09 Javascript
countUp.js实现数字滚动效果
2019/10/18 Javascript
java遇到微信小程序 &quot;支付验证签名失败&quot; 问题解决
2019/12/22 Javascript
Python入门篇之条件、循环
2014/10/17 Python
Python中取整的几种方法小结
2017/01/06 Python
Python第三方库xlrd/xlwt的安装与读写Excel表格
2017/01/21 Python
Python中PyQt5/PySide2的按钮控件使用实例
2019/08/17 Python
python 命令行传入参数实现解析
2019/08/30 Python
django中使用事务及接入支付宝支付功能
2019/09/15 Python
详解Python Opencv和PIL读取图像文件的差别
2019/12/27 Python
Python实现在Windows平台修改文件属性
2020/03/05 Python
Python获取对象属性的几种方式小结
2020/03/12 Python
Python3基于plotly模块保存图片表格
2020/08/03 Python
Annoushka英国官网:英国奢侈珠宝品牌
2018/10/20 全球购物
介绍一下except的用法和作用
2015/01/22 面试题
运动会广播稿30字
2014/01/21 职场文书
最美家庭活动方案
2014/08/31 职场文书
预防艾滋病宣传活动总结
2015/05/09 职场文书
javaScript Array api梳理
2021/03/31 Javascript
OpenCV中resize函数插值算法的实现过程(五种)
2021/06/05 Python