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 相关文章推荐
ExtJS GridPanel 根据条件改变字体颜色
Mar 08 Javascript
简短几句jquery代码的实现一个图片向上滚动切换
Sep 02 Javascript
js中unicode转码方法详解
Oct 09 Javascript
jQuery插件jquery-barcode实现条码打印的方法
Nov 25 Javascript
基于JavaScript实现 网页切出 网站title变化代码
Apr 03 Javascript
Bootstrap每天必学之响应式导航、轮播图
Apr 25 Javascript
jQuery pager.js 插件动态分页功能实例分析
Aug 02 jQuery
JS中的算法与数据结构之字典(Dictionary)实例详解
Aug 20 Javascript
Vue防止白屏添加首屏动画的实例
Oct 31 Javascript
微信小程序网络请求实现过程解析
Nov 06 Javascript
JavaScript计算出两个数的差值
Mar 19 Javascript
JS 基本概念详细介绍
Oct 16 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
四月新番又没了,《Re:从零开始的异世界生活》第二季延期至7月播出
2020/05/06 日漫
PHP 杂谈《重构-改善既有代码的设计》之四 简化条件表达式
2012/04/09 PHP
浅析关于PHP位运算的简单权限设计
2013/06/30 PHP
CodeIgniter使用phpcms模板引擎
2013/11/12 PHP
PHP+shell实现多线程的方法
2015/07/01 PHP
深入解析Laravel5.5中的包自动发现Package Auto Discovery
2017/09/13 PHP
phpstorm激活码2020附使用详细教程
2020/09/25 PHP
TNC vs BOOM BO3 第二场2.13
2021/03/10 DOTA
Alliance vs Liquid BO3 第二场2.13
2021/03/10 DOTA
JavaScript脚本性能的优化方法
2007/02/02 Javascript
jQuery源码分析-02正则表达式 RegExp 常用正则表达式
2011/11/14 Javascript
JQuery中使用on方法绑定hover事件实例
2014/12/09 Javascript
AngularJS 如何在控制台进行错误调试
2016/06/07 Javascript
js轮播图代码分享
2016/07/14 Javascript
node.js中fs文件系统目录操作与文件信息操作
2018/02/24 Javascript
vue如何将v-for中的表格导出来
2018/05/07 Javascript
Vue动态获取width的方法
2018/08/22 Javascript
vue 项目地址去掉 #的方法
2018/10/20 Javascript
基于JS实现简单滑块拼图游戏
2019/10/12 Javascript
基于element-ui封装可搜索的懒加载tree组件的实现
2020/05/22 Javascript
JavaScript实现点击图片换背景
2020/11/20 Javascript
[01:22:28]DOTA2-DPC中国联赛 正赛 SAG vs RNG BO3 第一场 1月18日
2021/03/11 DOTA
利用Python实现简单的相似图片搜索的教程
2015/04/23 Python
python通过ssh-powershell监控windows的方法
2015/06/02 Python
Python 对输入的数字进行排序的方法
2018/06/23 Python
python 利用文件锁单例执行脚本的方法
2019/02/19 Python
django 通过url实现简单的权限控制的例子
2019/08/16 Python
详解Python3 中的字符串格式化语法
2020/01/15 Python
Flask中sqlalchemy模块的实例用法
2020/08/02 Python
简述python Scrapy框架
2020/08/17 Python
HTML5超文本标记语言的实现方法
2020/09/24 HTML / CSS
Unineed中文官网:高端护肤美妆与时尚配饰,英国直邮
2020/07/23 全球购物
毕业生机械建模求职信
2013/10/14 职场文书
优质护理服务演讲稿
2014/05/07 职场文书
水污染治理工程专业自荐信
2014/06/21 职场文书
初中数学教学反思范文
2016/02/17 职场文书