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 相关文章推荐
非常好的js代码
Jun 27 Javascript
javascript下string.format函数补充
Aug 24 Javascript
利用div+jquery自定义滚动条样式的2种方法
Jul 18 Javascript
JavaScript简单获取系统当前时间完整示例
Aug 02 Javascript
Javascript中浏览器窗口的基本操作总结
Aug 18 Javascript
jQuery简单实现MD5加密的方法
Mar 03 Javascript
Angularjs Promise实例详解
Mar 15 Javascript
在小程序中使用腾讯视频插件播放教程视频的方法
Jul 10 Javascript
jQuery实现的简单拖拽功能示例【测试可用】
Aug 14 jQuery
浅谈Angular 观察者模式理解
Nov 01 Javascript
JS秒杀倒计时功能完整实例【使用jQuery3.1.1】
Sep 03 jQuery
vue自定义树状结构图的实现方法
Oct 18 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
文件上传程序的全部源码
2006/10/09 PHP
php中动态变量用法实例
2015/06/10 PHP
详解WordPress中创建和添加过滤器的相关PHP函数
2015/12/29 PHP
Yii2.0 RESTful API 基础配置教程详解
2018/12/26 PHP
PHP sdk实现在线打包代码示例
2020/12/09 PHP
关于锚点跳转及jQuery下相关操作与插件
2012/10/01 Javascript
兼容IE、firefox以及chrome的js获取时间(getFullYear)
2014/07/04 Javascript
php,js,css字符串截取的办法集锦
2014/09/26 Javascript
基于JQuery制作可编辑的表格特效
2014/12/23 Javascript
《JavaScript函数式编程》读后感
2015/08/07 Javascript
jQuery弹出下拉列表插件(实现kindeditor的@功能)
2016/08/16 Javascript
JS数组去重(4种方法)
2017/03/27 Javascript
js实现不提示直接关闭网页窗口
2017/03/30 Javascript
jquery 键盘事件的使用方法详解
2017/09/13 jQuery
Vue.js 动态为img的src赋值方法
2018/03/14 Javascript
详解vue-router 命名路由和命名视图
2018/06/01 Javascript
node使用Mongoose类库实现简单的增删改查
2018/11/08 Javascript
ES6模板字符串和标签模板的应用实例分析
2019/06/25 Javascript
bootstrap-table+treegrid实现树形表格
2019/07/26 Javascript
VScode格式化ESlint方法(最全最好用方法)
2019/09/10 Javascript
详解JavaScript编程中的window与window.screen对象
2015/10/26 Python
python 使用pdfminer3k 读取PDF文档的例子
2019/08/27 Python
Python超越函数积分运算以及绘图实现代码
2019/11/20 Python
Python限制内存和CPU使用量的方法(Unix系统适用)
2020/08/04 Python
Python实现http接口自动化测试的示例代码
2020/10/09 Python
Intimissimi德国网上商店:意大利知名内衣品牌
2018/04/03 全球购物
计算机求职信
2013/12/01 职场文书
政府门卫岗位职责
2014/04/29 职场文书
奖学金感谢信
2015/01/21 职场文书
资金申请报告范文
2015/05/14 职场文书
2016教师年度考核评语大全
2015/12/01 职场文书
《蟋蟀的住宅》教学反思
2016/02/17 职场文书
python正则表达式re.search()的基本使用教程
2021/05/21 Python
虚拟机linux端mysql数据库无法远程访问的解决办法
2021/05/26 MySQL
MySQL系列之十三 MySQL的复制
2021/07/02 MySQL
Vue监视数据的原理详解
2022/02/24 Vue.js