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 相关文章推荐
JavaScript中的事件处理
Jan 16 Javascript
获得所有表单值的JQuery实现代码[IE暂不支持]
May 24 Javascript
Javascript基础 函数“重载” 详细介绍
Oct 25 Javascript
JQuery教学之性能优化
May 14 Javascript
SpringMVC restful 注解之@RequestBody进行json与object转换
Dec 10 Javascript
Node.js模块封装及使用方法
Mar 06 Javascript
基于jQuery代码实现圆形菜单展开收缩效果
Feb 13 Javascript
纯JS单页面赛车游戏制作代码分享
Mar 03 Javascript
JavaScript原生实现观察者模式的示例
Dec 15 Javascript
JS删除数组里的某个元素方法
Feb 03 Javascript
js实现点击按钮复制文本功能
Jul 20 Javascript
vue 权限认证token的实现方法
Jul 17 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&amp;&amp;mysql)五
2006/10/09 PHP
PHP CKEditor 上传图片实现代码
2009/11/06 PHP
php实现图形显示Ip地址的代码及注释
2014/01/20 PHP
PHP生成zip压缩包的常用方法示例
2019/08/22 PHP
laravel 解决后端无法获取到前端Post过来的值问题
2019/10/22 PHP
Yii框架 session 数据库存储操作方法示例
2019/11/18 PHP
js本身的局限性 别让javascript做太多事
2010/03/23 Javascript
javascript垃圾收集机制与内存泄漏详细解析
2013/11/11 Javascript
JavaScript字符串对象substring方法入门实例(用于截取字符串)
2014/10/17 Javascript
node.js中的fs.readdir方法使用说明
2014/12/17 Javascript
JQuery选择器、过滤器大整理
2015/05/26 Javascript
JS常见简单正则表达式验证功能小结【手机,地址,企业税号,金额,身份证等】
2017/01/22 Javascript
jquery请求servlet实现ajax异步请求的示例
2017/06/03 jQuery
vue中简单弹框dialog的实现方法
2018/02/26 Javascript
Vue唯一可以更改vuex实例中state数据状态的属性对象Mutation的讲解
2019/01/18 Javascript
微信小程序使用map组件实现检索(定位位置)周边的POI功能示例
2019/01/23 Javascript
在vue中实现嵌套页面(iframe)
2020/07/30 Javascript
python网络编程学习笔记(二):socket建立网络客户端
2014/06/09 Python
Python实现将MySQL数据库表中的数据导出生成csv格式文件的方法
2018/01/11 Python
python实现飞机大战游戏
2020/10/26 Python
Python实现九宫格式的朋友圈功能内附“马云”朋友圈
2019/05/07 Python
用Python写一个自动木马程序
2019/09/17 Python
解决Tensorflow2.0 tf.keras.Model.load_weights() 报错处理问题
2020/06/12 Python
html5 css3 动态气泡按钮实例演示
2012/12/02 HTML / CSS
Hello Molly美国:女性时尚在线
2019/08/26 全球购物
结构和类有什么异同
2012/07/16 面试题
单位门卫岗位职责
2013/12/20 职场文书
高中英语演讲稿范文
2014/04/24 职场文书
小组口号大全
2014/06/09 职场文书
食品工程专业求职信
2014/06/15 职场文书
远程培训的心得体会
2014/09/01 职场文书
党课心得体会范文
2014/09/09 职场文书
2014年乡镇妇联工作总结
2014/12/02 职场文书
党支部先进事迹材料
2014/12/24 职场文书
研究生就业推荐表导师评语
2014/12/31 职场文书
通过feDisplacementMap和feImage实现水波特效
2022/04/24 HTML / CSS