效果图:

文件位置摆放:

插件的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. 使用Arduino模块实施无线信号的重放攻击

    无线电已经存在使用了很长一段时间,在这很长的一段时间里诞生了一个名叫火腿族的集体(小编:嗯 对 就是整天吃火腿的那些人^_^  CQ CQ ).无线电和互联网一样:同样存在一些安全隐患,比如:在无线信 ...

  2. grafana设置Alert阈值和邮件报警

    首先我们需要在机器上开启smtp/25服务,这里有一个坑,注意,云主机为了防止滥发邮件已经封掉了smtp的所有通信,所以云主机发邮件是有问题的. 安装sendmail,ubuntu用apt,cento ...

  3. ReactNative——UI2.组件生命周期

    对于习惯了iOS开发的同学,可能会对React Native中组件的生命周期很困惑.在iOS中有一个ViewDidLoad来初始化,那么在RN中,又是在哪里呢? 一.看图分析 在下图中描述了React ...

  4. makefile for opencv

    makefile #################################################### # Generic makefile - 万能Makefile # for ...

  5. Maven3的环境配置

    1 需要准备一个Maven的包,名字叫:apache_maven_3.3.9(在百度中搜索自行下载) 2 在eclipse中点击window→preferences→maven→Installatio ...

  6. TJU Problem 1015 Gridland

    最重要的是找规律. 下面是引用 http://blog.sina.com.cn/s/blog_4dc813b20100snyv.html 的讲解: 做这题时,千万不要被那个图给吓着了,其实这题就是道简 ...

  7. 2018-2019-2 《网络对抗技术》Kali安装 Week1 20165212

    2018-2019-2 <网络对抗技术>Kali安装 Week1 20165212 1.完成安装linux kali和vm tools 装的第三遍成功安装.前面两次镜像文件不行,没驱动(网 ...

  8. spring boot sso 学习资源

    diy: 关键字: springboot sso:public boolean preHandle(HttpServletRequest request, HttpServletResponse re ...

  9. IIS目录

    一.目录浏览 一般网站部署后,需要禁用目录浏览, 若启用目录浏览的话,可以自定义开启哪些目录(只能根目录),和影藏哪些目录 iis中限制访问某个文件或某个类型的文件配置方法 注意:图片目录不要隐藏,不 ...

  10. cin和cout详解

    无论输入数字还是字符串,一个回车键是把输入的这个东西送到变量中,可以一次性送到 一个(或者多个)空格键是分隔这些值的 cout <<N; for(int i=0;i<5;i++) { ...