效果图:

文件位置摆放:

插件的js代码:

 $.extend({
pfAdv:function(options){
var defaults={
count:1,
startTop:200,
startLeft:200,
width:140,//ͼƬС
height:180,
imageSrc:"pfAdvPic.jpg",
step:1,
delay:30,
idStr:"pfAdv"
}
options= $.extend(defaults,options);
var html="";
html+="<div id="+options.idStr+" class='pfAdv'>";
html+="<div class='plCloseDiv'></div>";
html+="<div><img src="+options.imageSrc+"></div>";
html+="</div>";
$("body").append(html);//html
var advBoxObj=$("#"+options.idStr);//
advBoxObj.css({"position":"absolute","z-index":998}).width(options.width).height(options.height);//涨λ
$("img",advBoxObj).width(options.width).height(options.height);
var advH=advBoxObj.outerHeight();//ĸ߶
var advW=advBoxObj.outerWidth();//Ŀ
var advMaxTop=0;//top
var advMaxLeft=0;//left
var stepMashionX=1;//1,ʾˮƽstep,-1ʾˮƽstep
var stepMashionY=1;//1,ʾֱstep,-1ʾֱstep
var currentX=0;//ǰλ
var currentY=0;
var divToBrowTop=options.startTop;
var divToBrowLeft=options.startLeft;
function getScroll(){
var scrollTop=$(window).scrollTop();//뿪߶
var scrollLeft=$(window).scrollLeft();//
return {x:scrollLeft,y:scrollTop};
}
function move(){
var browW=$(window).width();//
var browH=$(window).height();//߶
var scroll=getScroll();
currentX=divToBrowLeft+scroll.x;//top
currentY=divToBrowTop+scroll.y;//left
advMaxTop=browH-advH+scroll.y;//top,
advMaxLeft=browW-advW+scroll.x;//left, if(currentY>=advMaxTop){
stepMashionY=-1;
currentY=divToBrowTop-options.step;
}
else if(currentY>scroll.y&&currentY<advMaxTop){
if(stepMashionY==-1)
currentY=divToBrowTop-options.step; else if(stepMashionY==1)
currentY=divToBrowTop+options.step;
else alert("ֱϵstepMashionY");
}
else if(currentY<=scroll.y){
stepMashionY=1;
currentY=divToBrowTop+options.step;
}
else {
alert("ֱϱȽ");
}
if(currentX>=advMaxLeft){
stepMashionX=-1;
currentX=divToBrowLeft-options.step;
}
else if(currentX>scroll.x&&currentX<advMaxLeft){
if(stepMashionX==-1){
currentX=divToBrowLeft-options.step;
}
else if(stepMashionX==1){
currentX=divToBrowLeft+options.step;
}
else alert("ˮƽϵstepMashionX")
}
else if(currentX<=scroll.x){
stepMashionX=1;
currentX=divToBrowLeft+options.step;
}
else {
alert("ˮƽϱȽ");
}
divToBrowLeft=currentX;
divToBrowTop=currentY;
//var scroll=getScroll();
currentX+=scroll.x;
currentY+=scroll.y;
advBoxObj.css({top:currentY+"px",left:currentX+"px"});
}
$(".plCloseDiv",advBoxObj).on("click",function(){advBoxObj.remove()})
//$(window).resize(function(){initNum();});
var moveMashion=null;
advBoxObj.bind("mouseover",function(){clearTimeout(moveMashion);}).bind("mouseleave",function(){moveMashion=setInterval(move,options.delay);})
moveMashion=setInterval(move,options.delay);
move();
}
});

css代码:

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

插件的调用:

 $(function(){
$.pfAdv({});
})

自己写的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. grafana+influxdb+telegraf监控服务器cpu,内存和硬盘

    随便抄了一篇,目前我们的项目也在用,这个是linux和windows通吃的一种监控方案,非常有效,详细和优美,需要监控什么具体的业务内容,自己向influxdb中插入就行了. 监控服务器状态是运维必不 ...

  2. 成为java高级程序员需要掌握哪些

    section 1 1.Core Java,就是Java基础.JDK的类库,很多童鞋都会说,JDK我懂,但是懂还不足够,知其然还要知其所以然,JDK的源代码写的非常好,要经常查看,对使用频繁的类,比如 ...

  3. How to convert int [12] to array<int, 12>

    code: // array::data #include <iostream> #include <cstring> #include <array> int m ...

  4. TypeScript 编译器源码研究(一)

    TypeScript (以下简称 TS)是一个非常强大的语言,其编译器源码超过 10000 行. 源码在 Github 可以找到:https://github.com/Microsoft/TypeSc ...

  5. CodeForces - 1093F:Vasya and Array (DP&计数)

    题意:N,K,L,以及给定长度为N的序列,表示其对应的颜色,-1表示还没有涂色,现在让你去涂色,使得最后没有大于等于L的连续的同色的情况. 思路:我们用dp[i][j]表示第i个位置颜色为j的合法方案 ...

  6. PHP 7.0 升级备注

    PHP 7.0.0 beta1 发布了,在带来了引人注目的性能提升的同时,也带来了不少语言特性方面的改变.以下由 LCTT 翻译自对官方的升级备注,虽然目前还不是正式发布版,不过想必距离正式发布的特性 ...

  7. NeighboringCellInfo.aidl

    在src下先建立包名为android.telephony(右键src > new > package,create package-info.java打钩),然后右键刚建的android. ...

  8. 使用python的Paramiko模块登陆SSH

    使用python的Paramiko模块登陆SSH paramiko是用Python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接. python的paramiko模块 ...

  9. MySQL--查询表统计信息

    ============================================================= 可以用show table status 来查看表的信息,如:show ta ...

  10. day29 python 套接字socket TCP udp 形式发送信息的区别

    我们经常把socket翻译为套接字,socket是在应用层和传输层之间的一个抽象层,它把TCP/IP层复杂的操作抽象为几个简单的接口供应用层调用已实现进程在网络中通信. socket起源于UNIX,在 ...