JavaScript实现跟随滚动缓冲运动广告框


Posted in Javascript onJuly 15, 2017

当我们浏览一些网页时我们会发现页面的的边上会有广告图片,当滚动滚动条的时候这些广告图片会跟随性的随页面一起运动(这里我叫它为广告框)。一些网页的广告框是固定在浏览器上的用background:fixed;便可实现。这里我用JavaScript简单的制作了一个随滚动缓冲运动的广告框。

JavaScript实现跟随滚动缓冲运动广告框

制作的原理比较简单,大家都有一个完美的js运动框架,这里的缓冲运动需要用到。这里的广告框设定的是跟随滚动条缓冲运动并运动到浏览器的中间位置。需要理解的是运动距离的计算和一些细节上的处理(一些BUG的预防)

这是我在这里使用的一个js运动框架,传递的参数只有一个并不是完美运动框架。传递的参数是广告框的运动距离,因此我在运动框架内又获取了一次对象。

var timer=null;
    function startMover(iTarget){
      var oDiv=document.getElementById('div1');
      clearInterval(timer);
      timer=setInterval(function(){
          var ispeed=(iTarget-oDiv.offsetTop)/8;
          //速度设置为逐渐减小
          ispeed=ispeed>0?Math.ceil(ispeed):Math.floor(ispeed);
          //避免速度产生小数点
          if(oDiv.offsetTop==iTarget){
            clearInterval(timer);
          }
          else{
          oDiv.style.top=oDiv.offsetTop+ispeed+"px";
          }

    },30);
    };

样式和布局代码

<style>
    #div1{
      width: 100px;
      height: 100px;
      background: #ccc;
      position: absolute;
      //使用绝对定位让其处于右上方
      right: 0;
      top: 0;
  </style>

  <body style="height: 2000px;">
    <div id="div1"></div>
  </body>

js代码

这里增加了.onscroll属性目的是当滚动滚动条的时候也加载页面,广告框就能随着滚动条一起运动了。还增加了.onresize属性,由于我要实现广告框一直是运动到浏览器的中间位置,然而当我改变浏览器高度的时候也要实现广告框的运动,所以增加该属性,当浏览器大小改变时加载。

<script>
    window.onload=window.onscroll=window.onresize=function(){

      var oDiv=document.getElementById('div1');
      var scrolltop=document.documentElement.scrollTop||document.body.scrollTop;
"scrolltop"是滚动条滚动的距离,这里有一个兼容chrome不支持document.documentElement.scrollTop获取语句,其他浏览器支持。          
      var t=(document.documentElement.clientHeight-oDiv.offsetHeight)/2;
"t"为让广告框处于中间位置的高度距离,(获取浏览器的总高度-广告框自身高度)/2      
      startMover(parseInt(t+scrolltop));
"parseIn"返回一个整数,避免小数生成。这里广告框的总移动距离为(t+scrolltop)    
    };

    var timer=null;
    function startMover(iTarget){
      var oDiv=document.getElementById('div1');
      clearInterval(timer);
      timer=setInterval(function(){
          var ispeed=(iTarget-oDiv.offsetTop)/8;

          ispeed=ispeed>0?Math.ceil(ispeed):Math.floor(ispeed);

          if(oDiv.offsetTop==iTarget){
            clearInterval(timer);
          }
          else{
          oDiv.style.top=oDiv.offsetTop+ispeed+"px";
          }

    },30);
    };

  </script>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
如何在Web页面上直接打开、编辑、创建Office文档
Mar 12 Javascript
javascript操作文本框readOnly
May 15 Javascript
javascript new后的constructor属性
Aug 05 Javascript
Extjs4 类的定义和扩展实例
Jun 28 Javascript
微信小程序 Storage API实例详解
Oct 02 Javascript
vue中for循环更改数据的实例代码(数据变化但页面数据未变)
Sep 15 Javascript
web前端vue之vuex单独一文件使用方式实例详解
Jan 11 Javascript
微信小程序用户位置权限的获取方法(拒绝后提醒)
Nov 15 Javascript
vue实现移动端悬浮窗效果
Dec 01 Javascript
Vue入门之数量加减运算操作示例
Dec 11 Javascript
Vue性能优化的方法
Jul 30 Javascript
VUE Elemen-ui之穿梭框使用方法详解
Jan 19 Javascript
Javascript实现基本运算器
Jul 15 #Javascript
基于AngularJS的拖拽文件上传的实例代码
Jul 15 #Javascript
Javascript实现时间倒计时效果
Jul 15 #Javascript
JavaScript实现的可变动态数字键盘控件方式实例代码
Jul 15 #Javascript
JavaScript实现时间表动态效果
Jul 15 #Javascript
详解基于Node.js的微信JS-SDK后端接口实现代码
Jul 15 #Javascript
JavaScript实现三级联动效果
Jul 15 #Javascript
You might like
PHP个人网站架设连环讲(二)
2006/10/09 PHP
php数组使用规则分析
2015/02/27 PHP
PHP获取远程图片并保存到本地的方法
2015/05/12 PHP
jQuery 1.0.4 - New Wave Javascript(js源文件)
2007/01/15 Javascript
定义select的边框颜色
2008/04/28 Javascript
cnblogs TagCloud基于jquery的实现代码
2010/06/11 Javascript
JavaScript性能陷阱小结(附实例说明)
2010/12/28 Javascript
页面刷新时记住滚动条的位置jquery代码
2014/06/17 Javascript
JavaScript实现单击下拉框选择直接跳转页面的方法
2015/07/02 Javascript
理解javascript中的原型和原型链
2015/07/30 Javascript
JavaScript实现标题栏文字轮播效果代码
2015/10/24 Javascript
AngularJS extend用法详解及实例代码
2016/11/15 Javascript
JS常用加密编码与算法实例总结
2016/12/22 Javascript
详解Vue中添加过渡效果
2017/03/20 Javascript
Node.js实现连接mysql数据库功能示例
2017/09/15 Javascript
JavaScript实现省市联动过程中bug的解决方法
2017/12/04 Javascript
使用FileReader API创建Vue文件阅读器组件
2018/04/03 Javascript
JavaScript中click和onclick本质区别与用法分析
2018/06/07 Javascript
vue移动端弹框组件的实例
2018/09/25 Javascript
在element-ui的el-tree组件中用render函数生成el-button的实例代码
2018/11/05 Javascript
详解javascript中var与ES6规范中let、const区别与用法
2020/01/11 Javascript
Python的地形三维可视化Matplotlib和gdal使用实例
2017/12/09 Python
python+matplotlib绘制简单的海豚(顶点和节点的操作)
2018/01/02 Python
python-sys.stdout作为默认函数参数的实现
2020/02/21 Python
Python2.7:使用Pyhook模块监听鼠标键盘事件-获取坐标实例
2020/03/14 Python
python中urllib.request和requests的使用及区别详解
2020/05/05 Python
利用python爬取有道词典的方法
2020/12/08 Python
Python关于拓扑排序知识点讲解
2021/01/04 Python
美国现代家具购物网站:LexMod
2019/01/09 全球购物
澳大利亚购买健身器材网站:Gym Direct
2019/12/19 全球购物
毕业自我鉴定书
2014/03/24 职场文书
辞职信如何写
2015/02/27 职场文书
就业证明函
2015/06/17 职场文书
平凡的世界读书笔记
2015/06/25 职场文书
Python实现Telnet自动连接检测密码的示例
2021/04/16 Python
Java常用函数式接口总结
2021/06/29 Java/Android