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 操作XML入门
Dec 25 Javascript
页面载入结束自动调用js函数示例
Sep 23 Javascript
Jquery动态添加及删除页面节点元素示例代码
Jun 16 Javascript
ext前台接收action传过来的json数据示例
Jun 17 Javascript
JavaScript解析json格式数据简单示例
Dec 09 Javascript
JS基于ocanvas插件实现的简单画板效果代码(附demo源码下载)
Apr 05 Javascript
JavaScript鼠标事件,点击鼠标右键,弹出div的简单实例
Aug 03 Javascript
AngularJS中run方法的巧妙运用
Jan 04 Javascript
jQuery实现别踩白块儿网页版小游戏
Jan 18 Javascript
微信小程序表单验证WxValidate的使用
Nov 27 Javascript
详解vue中v-on事件监听指令的基本用法
Jul 22 Javascript
微信小程序实现可长按移动控件
Nov 01 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基于工厂模式实现的计算器实例
2015/07/16 PHP
PHP多进程编程总结(推荐)
2016/07/18 PHP
JS链式调用的实现方法
2013/03/07 Javascript
jQuery+formdata实现上传进度特效遇到的问题
2016/02/24 Javascript
jQuery的Each比JS原生for循环性能慢很多的原因
2016/07/05 Javascript
js从输入框读取内容,比较两个数字的大小方法
2017/03/13 Javascript
浅谈Webpack 持久化缓存实践
2018/03/22 Javascript
小程序实现授权登陆的解决方案
2018/12/02 Javascript
解决Vue router-link绑定事件不生效的问题
2020/07/22 Javascript
Nuxt的动态路由和参数校验操作
2020/11/09 Javascript
[01:57]DOTA2上海特锦赛小组赛解说单车采访花絮
2016/02/27 DOTA
[03:23:49]2016.12.17日完美“圣”典全回顾
2016/12/19 DOTA
Python ljust rjust center输出
2008/09/06 Python
python根据路径导入模块的方法
2014/09/30 Python
Python实现截屏的函数
2015/07/25 Python
python+tkinter编写电脑桌面放大镜程序实例代码
2018/01/16 Python
Python函数的参数常见分类与用法实例详解
2019/03/30 Python
Pycharm 字体大小调整设置的方法实现
2019/09/27 Python
使用sklearn对多分类的每个类别进行指标评价操作
2020/06/11 Python
python定义类的简单用法
2020/07/24 Python
Python爬虫之Selenium下拉框处理的实现
2020/12/04 Python
使用layui框架实现点击左侧导航切换右侧内容且右侧选项卡跟随变化的效果
2020/11/10 HTML / CSS
国际会议邀请函范文
2014/01/16 职场文书
总经理文秘岗位职责
2014/02/03 职场文书
六五普法规划实施方案
2014/03/21 职场文书
低碳生活倡议书
2014/04/14 职场文书
党支部对照检查材料
2014/08/25 职场文书
单位未婚证明范本
2014/11/25 职场文书
三八妇女节慰问信
2015/02/14 职场文书
材料采购员岗位职责
2015/04/03 职场文书
2015年公司国庆放假通知
2015/07/30 职场文书
祝福语集锦:给满月宝宝的祝福语
2019/11/20 职场文书
护士年终工作总结不会写?各科护士模板总结
2020/01/02 职场文书
jdbc使用PreparedStatement批量插入数据的方法
2021/04/27 MySQL
golang 实现对Map进行键值自定义排序
2021/04/28 Golang
winserver2019安装软件一直卡在应用程序正在为首次使用做准备
2022/06/10 Servers