效果图:

文件位置摆放:

插件的js代码:

  1. $.extend({
  2. pfAdv:function(options){
  3. var defaults={
  4. count:1,
  5. startTop:200,
  6. startLeft:200,
  7. width:140,//ͼƬС
  8. height:180,
  9. imageSrc:"pfAdvPic.jpg",
  10. step:1,
  11. delay:30,
  12. idStr:"pfAdv"
  13. }
  14. options= $.extend(defaults,options);
  15. var html="";
  16. html+="<div id="+options.idStr+" class='pfAdv'>";
  17. html+="<div class='plCloseDiv'></div>";
  18. html+="<div><img src="+options.imageSrc+"></div>";
  19. html+="</div>";
  20. $("body").append(html);//html
  21. var advBoxObj=$("#"+options.idStr);//
  22. advBoxObj.css({"position":"absolute","z-index":998}).width(options.width).height(options.height);//涨λ
  23. $("img",advBoxObj).width(options.width).height(options.height);
  24. var advH=advBoxObj.outerHeight();//ĸ߶
  25. var advW=advBoxObj.outerWidth();//Ŀ
  26. var advMaxTop=0;//top
  27. var advMaxLeft=0;//left
  28. var stepMashionX=1;//1,ʾˮƽstep,-1ʾˮƽstep
  29. var stepMashionY=1;//1,ʾֱstep,-1ʾֱstep
  30. var currentX=0;//ǰλ
  31. var currentY=0;
  32. var divToBrowTop=options.startTop;
  33. var divToBrowLeft=options.startLeft;
  34. function getScroll(){
  35. var scrollTop=$(window).scrollTop();//뿪߶
  36. var scrollLeft=$(window).scrollLeft();//
  37. return {x:scrollLeft,y:scrollTop};
  38. }
  39. function move(){
  40. var browW=$(window).width();//
  41. var browH=$(window).height();//߶
  42. var scroll=getScroll();
  43. currentX=divToBrowLeft+scroll.x;//top
  44. currentY=divToBrowTop+scroll.y;//left
  45. advMaxTop=browH-advH+scroll.y;//top,
  46. advMaxLeft=browW-advW+scroll.x;//left,
  47.  
  48. if(currentY>=advMaxTop){
  49. stepMashionY=-1;
  50. currentY=divToBrowTop-options.step;
  51. }
  52. else if(currentY>scroll.y&&currentY<advMaxTop){
  53. if(stepMashionY==-1)
  54. currentY=divToBrowTop-options.step;
  55.  
  56. else if(stepMashionY==1)
  57. currentY=divToBrowTop+options.step;
  58. else alert("ֱϵstepMashionY");
  59. }
  60. else if(currentY<=scroll.y){
  61. stepMashionY=1;
  62. currentY=divToBrowTop+options.step;
  63. }
  64. else {
  65. alert("ֱϱȽ");
  66. }
  67. if(currentX>=advMaxLeft){
  68. stepMashionX=-1;
  69. currentX=divToBrowLeft-options.step;
  70. }
  71. else if(currentX>scroll.x&&currentX<advMaxLeft){
  72. if(stepMashionX==-1){
  73. currentX=divToBrowLeft-options.step;
  74. }
  75. else if(stepMashionX==1){
  76. currentX=divToBrowLeft+options.step;
  77. }
  78. else alert("ˮƽϵstepMashionX")
  79. }
  80. else if(currentX<=scroll.x){
  81. stepMashionX=1;
  82. currentX=divToBrowLeft+options.step;
  83. }
  84. else {
  85. alert("ˮƽϱȽ");
  86. }
  87. divToBrowLeft=currentX;
  88. divToBrowTop=currentY;
  89. //var scroll=getScroll();
  90. currentX+=scroll.x;
  91. currentY+=scroll.y;
  92. advBoxObj.css({top:currentY+"px",left:currentX+"px"});
  93. }
  94. $(".plCloseDiv",advBoxObj).on("click",function(){advBoxObj.remove()})
  95. //$(window).resize(function(){initNum();});
  96. var moveMashion=null;
  97. advBoxObj.bind("mouseover",function(){clearTimeout(moveMashion);}).bind("mouseleave",function(){moveMashion=setInterval(move,options.delay);})
  98. moveMashion=setInterval(move,options.delay);
  99. move();
  100. }
  101. });

css代码:

  1. .pfAdv{ }
  2. .plCloseDiv{ width:16px; height:16px; background-image:url(pfAdvPicClose.jpg); background-repeat:no-repeat; position:absolute; top:; right:; cursor:pointer;}
  3. .plCloseA{ color:#102a49; font-size:14px; font-family:""; text-decoration:none; }

插件的调用:

  1. $(function(){
  2. $.pfAdv({});
  3. })

自己写的jQuery浮动广告插件的更多相关文章

  1. jQuery 浮动标签插件,帮助你提升表单用户体验

    浮动标签模式(Float Label Pattern)是最新流行的一种表单输入域的内容提示方式,当用户在输入框输入内容的时候,原先占位符的内容向上移动,显示在输入的内容的上面.这里推荐的这款 jQue ...

  2. 自己写的一个jQuery对联广告插件

    效果图: 文件的位置摆放: 插件的代码: ;(function($){ $.extend({ dLAdv:function(options){ var defaults={ leftType:0,// ...

  3. 亲手用模块化方式写一个jquery QQ表情插件。

    在回复或是评论的时候,很多时间都需要有回复表情的功能,然后而需要插入QQ表情可以是最常见的. 插件也写多很多个了,这次写插件就下了一个决定.就是使用模块化来开发. 最后在我的源代码中有这样子一段: v ...

  4. JQuery浮动对象插件

    写了个插件,用来固定表的头部和尾部. /*! * smartFloat v1.0.1 * Copyright 2019- Richard * Licensed under MIT */ $.fn.ex ...

  5. 自己写的jquery 弹框插件

    html部分 <!DOCTYPE html> <html> <head lang="en"> <meta charset="UT ...

  6. 非常强大的jQuery万能浮动框插件

    支持hover, click, focus以及无事件触发:支持多达12种位置的定位,出界自动调整:支持页面元素加载,Ajax加载,下拉列表,提示层效果,tip类效果等:可自定义装载容器:内置UI不错的 ...

  7. jQuery手风琴广告展示插件

    效果说明:当鼠标移动到已折叠广告的标题后,折叠当前已展开的广告,并同步展开相应的折叠广告.这种Accordion效果,看似简单,但因为存在动画同步的问题,不能简单地用两个animate()来实现.必须 ...

  8. 用jQuery写了一个模态框插件

    用jQuery写了一个模态框插件 大家觉得下面的框框好看么, 水印可以去掉(这个任务交给你们了(- o -)~zZ); "info"框 $("div").con ...

  9. 自己写的一个jQuery轮播插件

    大概是四月初开始写的,中间停了有一个月吧.这是我在Github的第一个项目.项目地址:https://github.com/linzb93/jquery.slide.js. 轮播应该是最好写的插件了, ...

随机推荐

  1. Linux中MySQL中文乱码问题

    一. 问题描述 登录后查看mysql默认编码: mysql> show variables like 'character%'; +--------------------------+---- ...

  2. C高级第四次作业

    作业要求一 最简单的wordcount 具体要求:http://www.cnblogs.com/xinz/p/7426280.html 1.设计思路: 0.0版本设计思路: 第一步:读入用户想要操作的 ...

  3. OK335xS canutils deal with compile error

    /************************************************************************************** * OK335xS ca ...

  4. No.02——第一次使用Android Studio,并创建出Hello World

    1.第一次打开Studio 2.点击创建新项目 然后填上相关信息,注意在Company Domain(公司域名)地方的填写,不同于Eclipse对应实际电脑中文件夹,而是在你所选择的Project文件 ...

  5. FZU OJ 1056 :扫雷游戏

    Problem 1056 扫雷游戏 Accept: 2624    Submit: 6903Time Limit: 1000 mSec    Memory Limit : 32768 KB  Prob ...

  6. hdu 5312 dp(背包)、二分图或其他姿势

    题意:给出一个二分图(不一定连通),问最多能加多少边,使它仍然是二分图 BC周年庆第四题,貌似终判再终判之后数据还是有问题``` 据说貌似可以用bitset搞,而且姿势优美是正解```然而我还是用的d ...

  7. benthos 几个方便的帮助命令

    benthos 的命令行帮助做的是比较方便的,基本上就是一个自包含的帮助文档 全部命令 benthos --help 查询系统支持的caches benthos -list-caches 说明 使用帮 ...

  8. 转 JavaScript中判断对象类型的种种方法

    我们知道,JavaScript中检测对象类型的运算符有:typeof.instanceof,还有对象的constructor属性: 1) typeof 运算符 typeof 是一元运算符,返回结果是一 ...

  9. Spring Cloud Netflix项目进入维护模式

    任何项目都有其生命周期,Spring Could Netflix也不例外,官宣已进入维护模式,如果在新项目开始考虑技术选型时要考虑到这点风险,并考虑绕道的可能性. 原创: itmuch  IT牧场 这 ...

  10. commonJS模块规范 和 es6模块规范 区别

    ES6 模块与 CommonJS 模块的差异 CommonJS 模块输出的是一个值的拷贝,ES6 模块输出的是值的引用. CommonJS 模块是运行时加载,ES6 模块是编译时输出接口. Commo ...