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 时间比较实现代码
Oct 28 Javascript
js 模拟气泡屏保效果代码
Jul 10 Javascript
广泛收集的jQuery拖放插件集合
Apr 09 Javascript
JavaScript 用Node.js写Shell脚本[译]
Sep 20 Javascript
原生javascript兼容性测试实例
Jul 01 Javascript
fullpage.js全屏滚动插件使用实例
Sep 06 Javascript
简单的js表格操作
Sep 24 Javascript
angularJs中$http获取后台数据的实例讲解
Aug 08 Javascript
es6 symbol的实现方法示例
Apr 02 Javascript
基于JavaScript 实现拖放功能
Sep 12 Javascript
微信分享invalid signature签名错误踩过的坑
Apr 11 Javascript
js实现验证码干扰(动态)
Feb 23 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 flv视频时间获取函数
2010/06/29 PHP
Codeigniter+PHPExcel实现导出数据到Excel文件
2014/06/12 PHP
CI框架安全类Security.php源码分析
2014/11/04 PHP
PHP异常处理浅析
2015/05/12 PHP
PHP快速排序quicksort实例详解
2016/09/28 PHP
Bootstrap+PHP实现多图上传功能实例详解
2018/04/08 PHP
PHP实现文件上传操作和封装
2020/03/04 PHP
js的event详解。
2006/09/06 Javascript
JS Array对象入门分析
2008/10/30 Javascript
常用的jQuery前端技巧收集
2014/12/24 Javascript
jQuery实现动态添加和删除一个div
2015/08/12 Javascript
javascript实现在指定元素中垂直水平居中
2015/09/13 Javascript
jQuery实现判断控件是否显示的方法
2017/01/11 Javascript
jQuery仿IOS弹出框插件
2017/02/18 Javascript
利用HBuilder打包前端开发webapp为apk的方法
2017/11/13 Javascript
常用的9个JavaScript图表库详解
2017/12/19 Javascript
vue2.0实现音乐/视频播放进度条组件
2018/06/06 Javascript
js实现文件上传功能 后台使用MultipartFile
2018/09/08 Javascript
详解vue-cli 3.0 build包太大导致首屏过长的解决方案
2018/11/10 Javascript
Node.js的进程管理的深入理解
2019/01/09 Javascript
基于vue中的scoped坑点解说
2020/09/04 Javascript
[15:23]教你分分钟做大人:虚空假面
2014/10/30 DOTA
[23:18]Spirit vs Liquid Supermajor小组赛A组 BO3 第二场 6.2
2018/06/03 DOTA
django的model操作汇整详解
2019/07/26 Python
python numpy 反转 reverse示例
2019/12/04 Python
tensorflow常用函数API介绍
2020/04/19 Python
python Protobuf定义消息类型知识点讲解
2021/03/02 Python
某公司的.net工程师面试题笔试题
2013/11/22 面试题
软件测试工程师笔试题带答案
2015/03/27 面试题
证券期货行业个人的自我评价
2013/12/26 职场文书
班级道德讲堂实施方案
2014/02/24 职场文书
2014年银行员工年终自我评价
2014/09/19 职场文书
2014年内部审计工作总结
2014/12/09 职场文书
离婚上诉状范文
2015/05/23 职场文书
雷锋的故事观后感
2015/06/10 职场文书
2016母亲节感恩话语
2015/12/09 职场文书