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 相关文章推荐
jquery的颜色选择插件实例代码
Oct 02 Javascript
防止页面被iframe(兼容IE,Firefox火狐)
Jul 04 Javascript
基于Jquery的文字滚动跑马灯插件(一个页面多个滚动区)
Jul 26 Javascript
javascript检测浏览器flash版本的实现代码
Dec 06 Javascript
js实现消息滚动效果
Jan 18 Javascript
IntelliJ IDEA 安装vue开发插件的方法
Nov 21 Javascript
vue2.0.js的多级联动选择器实现方法
Feb 09 Javascript
Vue微信项目按需授权登录策略实践思路详解
May 07 Javascript
koa router 多文件引入的方法示例
May 22 Javascript
vue中使用vue-print.js实现多页打印
Mar 05 Javascript
JS删除数组指定值常用方法详解
Jun 04 Javascript
让你30分钟快速掌握vue3教程
Oct 26 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
ajax php传递和接收变量实现思路及代码
2012/12/19 PHP
无刷新动态加载数据 滚动条加载适合评论等页面
2013/10/16 PHP
PHP入门教程之数组用法汇总(创建,删除,遍历,排序等)
2016/09/11 PHP
php基于自定义函数记录log日志方法
2017/07/21 PHP
html读出文本文件内容
2007/01/22 Javascript
Javascript YUI 读码日记之 YAHOO.util.Dom - Part.3
2008/03/22 Javascript
javascript 操作select下拉列表框的一点小经验
2010/03/20 Javascript
Jquery知识点一 Jquery的ready和Dom的onload的区别
2011/01/15 Javascript
基于jQuery判断两个元素是否有重叠部分的代码
2012/07/25 Javascript
基于jQuery实现的百度导航li拖放排列效果,即时更新数据库
2012/07/31 Javascript
使用node.js 获取客户端信息代码分享
2014/11/26 Javascript
js实现文本框支持加减运算的方法
2015/08/19 Javascript
javascript实现图片轮播效果
2016/01/20 Javascript
浅谈JavaScript 函数参数传递到底是值传递还是引用传递
2016/08/23 Javascript
javascript实现获取指定精度的上传文件的大小简单实例
2016/10/25 Javascript
基于pako.js实现gzip的压缩和解压功能示例
2017/06/13 Javascript
vue init webpack 建vue项目报错的解决方法
2018/09/29 Javascript
bootstrap table实现合并单元格效果
2018/12/24 Javascript
[01:16:16]DOTA2-DPC中国联赛定级赛 RNG vs Phoenix BO3第二场 1月8日
2021/03/11 DOTA
在Python中操作字典之clear()方法的使用
2015/05/21 Python
python+Django+apache的配置方法详解
2016/06/01 Python
Python list列表中删除多个重复元素操作示例
2019/02/27 Python
python的re模块使用方法详解
2019/07/26 Python
pandas实现excel中的数据透视表和Vlookup函数功能代码
2020/02/14 Python
Windows 下python3.8环境安装教程图文详解
2020/03/11 Python
Python加速程序运行的方法
2020/07/29 Python
财务会计专业个人求职信范本
2014/01/08 职场文书
《十六年前的回忆》教学反思
2014/02/14 职场文书
高中军训感言500字
2014/02/24 职场文书
《春雨》教学反思
2014/04/24 职场文书
学校查摆问题整改措施
2014/09/28 职场文书
2015最新民情日记范文
2015/06/26 职场文书
运动会通讯稿300字
2015/07/20 职场文书
python实现自动清理文件夹旧文件
2021/05/10 Python
ConstraintValidator类如何实现自定义注解校验前端传参
2021/06/18 Java/Android
详解Python requests模块
2021/06/21 Python