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在vs2008及js文件中的无智能提示的解决方法
Dec 30 Javascript
jWiard 基于JQuery的强大的向导控件介绍
Oct 28 Javascript
基于jQuery的输入框在光标位置插入内容, 并选中
Oct 29 Javascript
JS this作用域以及GET传输值过长的问题解决方法
Aug 06 Javascript
js光标定位文本框回车表单提交问题的解决方法
May 11 Javascript
javascript中的五种基本数据类型
Aug 26 Javascript
详解javascript实现自定义事件
Jan 19 Javascript
Knockoutjs 学习系列(二)花式捆绑
Jun 07 Javascript
JS控制静态页面之间传递参数获取参数并应用的简单实例
Aug 10 Javascript
详解React Native开源时间日期选择器组件(react-native-datetime)
Sep 13 Javascript
JS实现数组简单去重及数组根据对象中的元素去重操作示例
Jan 05 Javascript
vant 时间选择器--开始时间和结束时间实例
Nov 04 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
mysql数据库差异比较的PHP代码
2012/02/05 PHP
php实现数组按指定KEY排序的方法
2015/03/30 PHP
php结合正则批量抓取网页中邮箱地址
2015/05/19 PHP
给PHP开发者的编程指南 第一部分降低复杂程度
2016/01/18 PHP
php ActiveMQ的安装与使用方法图文教程
2020/02/23 PHP
8款非常棒的响应式jQuery 幻灯片插件推荐
2012/02/02 Javascript
javascript学习笔记(七) js函数介绍
2012/06/19 Javascript
jQuery.event兼容各浏览器的event详细解析
2013/12/18 Javascript
判断及设置浏览器全屏模式
2014/04/20 Javascript
js delete 用法(删除对象属性及变量)
2014/08/24 Javascript
轻松创建nodejs服务器(9):实现非阻塞操作
2014/12/18 NodeJs
jQuery插件slides实现无缝轮播图特效
2015/04/17 Javascript
jquery中添加属性和删除属性
2015/06/03 Javascript
jQuery实现的产品自动360度旋转展示特效源码分享
2015/08/21 Javascript
jQuery密码强度检测插件passwordStrength用法实例分析
2015/10/30 Javascript
JS+CSS实现闪烁字体效果代码
2016/04/05 Javascript
JavaScript与ActionScript3两者的同性与差异性
2016/09/22 Javascript
jquery Form轻松实现文件上传
2017/05/24 jQuery
vue axios数据请求及vue中使用axios的方法
2018/09/10 Javascript
ES6基础之展开语法(Spread syntax)
2019/02/21 Javascript
微信小程序嵌入腾讯视频源过程详解
2019/08/08 Javascript
基于node+websocket+html实现腾讯课堂聊天室聊天功能
2020/03/04 Javascript
[01:35]辉夜杯战队访谈宣传片—LGD
2015/12/25 DOTA
[00:59]DOTA2荣耀之路1:Doom is back!weapon X!
2018/05/22 DOTA
Python实现简单状态框架的方法
2015/03/19 Python
python django生成迁移文件的实例
2019/08/31 Python
python numpy之np.random的随机数函数使用介绍
2019/10/06 Python
HTML5超炫酷粒子效果的进度条的实现示例
2019/08/23 HTML / CSS
伦敦高级内衣品牌:Agent Provocateur(大内密探)
2016/08/23 全球购物
国外平面设计素材网站:The Hungry JPEG
2017/03/28 全球购物
纽约州一群才华横溢的金匠制作而成:Hearth Jewelry
2019/03/22 全球购物
在加拿大在线租赁和购买电子游戏:Game Access
2019/09/02 全球购物
核心价值观演讲稿
2014/05/13 职场文书
希特勒的演讲稿
2014/05/23 职场文书
中国梦演讲稿范文
2014/08/28 职场文书
如何利用pygame实现打飞机小游戏
2021/05/30 Python