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 相关文章推荐
Jquery跨域获得Json时invalid label错误的解决办法
Jan 11 Javascript
js清除input中type等于file的值域(示例代码)
Dec 24 Javascript
jQuery获取对象简单实现方法小结
Oct 30 Javascript
Ionic默认的Tabs模板使用实例
Aug 29 Javascript
AngularJS ngModel实现指令与输入直接的数据通信
Sep 21 Javascript
Bootstrap基本组件学习笔记之缩略图(13)
Dec 08 Javascript
几种tab切换详解
Feb 03 Javascript
Layui组件Table绑定行点击事件和获取行数据的方法
Aug 19 Javascript
vue-cli 使用vue-bus来全局控制的实例讲解
Sep 15 Javascript
细说Vue组件的服务器端渲染的过程
May 30 Javascript
关于vue2强制刷新,解决页面不会重新渲染的问题
Oct 29 Javascript
在vue中嵌入外部网站的实现
Nov 13 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使用mb_check_encoding检查字符串在指定的编码里是否有效
2013/11/07 PHP
smarty内置函数capture用法分析
2015/01/22 PHP
老司机传授Ubuntu下Apache+PHP+MySQL环境搭建攻略
2016/03/20 PHP
Yii2中SqlDataProvider用法示例
2016/09/22 PHP
centos下file_put_contents()无法写入文件的原因及解决方法
2017/04/01 PHP
图片完美缩放
2006/09/07 Javascript
cument.execCommand()用法深入理解
2012/12/04 Javascript
用jquery方法操作radio使其默认选项是否
2013/09/10 Javascript
jQuery事件绑定和委托实例
2014/11/25 Javascript
举例讲解AngularJS中的模块
2015/06/17 Javascript
JavaScript判断按钮被点击的方法
2015/12/13 Javascript
jQuery 如何给Carousel插件添加新的功能
2016/04/18 Javascript
AngularJS在IE8的不支持的解决方法
2016/05/13 Javascript
关于Javascript回调函数的一个妙用
2016/08/29 Javascript
jQuery获取this当前对象子元素对象的方法
2016/11/29 Javascript
Vuejs 组件——props数据传递的实例代码
2017/03/07 Javascript
JavaScript瀑布流布局实现代码
2017/05/06 Javascript
jquery实现图片轮播器
2017/05/23 jQuery
JavaScript 基础表单验证示例(纯Js实现)
2017/07/20 Javascript
jQuery+Cookie实现切换皮肤功能【附源码下载】
2018/03/25 jQuery
VUE 组件转换为微信小程序组件的方法
2019/11/06 Javascript
解决echarts数据二次渲染不成功的问题
2020/07/20 Javascript
vue radio单选框,获取当前项(每一项)的value值操作
2020/09/10 Javascript
vue使用video插件vue-video-player详解
2020/10/23 Javascript
WebStorm无法正确识别Vue3组合式API的解决方案
2021/02/18 Vue.js
python清除字符串里非数字字符的方法
2015/07/02 Python
python select.select模块通信全过程解析
2017/09/20 Python
Python实现高斯函数的三维显示方法
2018/12/29 Python
Numpy一维线性插值函数的用法
2020/04/22 Python
浅谈PyTorch中in-place operation的含义
2020/06/27 Python
html5简单示例_动力节点Java学院整理
2017/07/07 HTML / CSS
阿玛瑞酒店中文官方网站:Amari.com
2018/02/13 全球购物
运动会班级口号
2014/06/09 职场文书
安装工程师岗位职责
2015/02/13 职场文书
大学生个人简历自我评价
2015/03/11 职场文书
解决linux下redis数据库overcommit_memory问题
2022/02/24 Redis