jquery 弹出层插件
最近在研究弹出层插件时发现网上很多插件功能很强大,同时插件也很庞大。在这里个人写了一个比较秀珍的弹出层插件。
jquery.popdialog.js
$( function () { $.fn.PopDialog = function (options) { var defaults = { Event: "click" , //触发响应事件 title: "title" , //弹出层的标题 type: "text" , //弹出层类型(text、容器ID、URL、Iframe) content: "content" , //弹出层的内容(text文本、容器ID名称、URL地址、Iframe的地址) width: 500, //弹出层的宽度 height: 400, //弹出层的高度 scrollTop: 200, //层滑动的高度也就是弹出层时离顶部滑动的距离 isAuto: false , //是否自动弹出 time: 2000, //设置自动弹出层时间,前提是isAuto=true isClose: false , //是否自动关闭 timeOut: 2000 //设置自动关闭时间,前提是isClose=true }; var options = $.extend(defaults, options); $( "body" ).prepend( "<div id='floatBoxBg'></div><div id='floatBox' class='floatBox'><div class='title'><h4></h4><span id='closeDialog'>X</span></div><div class='content'></div></div>" ); var $ this = $( this ); //当然响应事件对象 var $blank = $( "#floatBoxBg" ); //遮罩层对象 var $title = $( "#floatBox .title h4" ); //弹出层标题对象 var $content = $( "#floatBox .content" ); //弹出层内容对象 var $dialog = $( "#floatBox" ); //弹出层对象 var $close = $( "#closeDialog" ); //关闭层按钮对象 var stc, st; if ($.browser.msie && ($.browser.version == "6.0" ) && !$.support.style) { //判断IE6 $blank.css({ height: $(document).height(), width: $(document).width() }); } $close.live( "click" , function () { $blank.animate({ opacity: "0" }, "normal" , function () { $( this ).hide(); }); $dialog.animate({ top: ($(document).scrollTop() - parseInt(options.height)) + "px" }, "normal" , function () { $( this ).hide(); }); if (st) { clearTimeout(st); //清除定时器 } if (stc) { clearTimeout(stc); //清除定时器 } }); $content.css( "height" , parseInt(options.height) - 70); //文本框绑定事件 $ this .live(options.Event, function (e) { $title.html(options.title); switch (options.type) { case "url" : //当类型是地址的时候 $content.ajaxStart( function () { $( this ).html( "loading..." ); }); $.get(options.content, function (html) { $content.html(html); }); break ; case "text" : //当类型是文本的时候 $content.html(options.content); break ; case "id" : //当类型是容器ID的时候 $content.html($( "#" + options.content + "" ).html()); break ; case "iframe" : //当类型是Iframe的时候 $content.html( "<iframe src=\"" + options.content + "\" width=\"100%\" height=\"" + (parseInt(options.height) - 70) + "px" + "\" scrolling=\"auto\" frameborder=\"0\" marginheight=\"0\" marginwidth=\"0\"></iframe>" ); break ; default : //默认情况下的时候 $content.html(options.content); break ; } $blank.show(); $blank.animate({ opacity: "0.5" }, "normal" ); $dialog.css({ display: "block" , left: (($(document).width()) / 2 - (parseInt(options.width) / 2)) + "px" , top: ($(document).scrollTop() - parseInt(options.height)) + "px" , width: options.width, height: options.height }); $dialog.animate({ top: options.scrollTop + "px" }, "normal" ); if (options.isClose) { stc = setTimeout( function () { $close.trigger( "click" ); clearTimeout(stc); }, options.timeOut); } }); if (options.isAuto) { st = setTimeout( function () { $ this .trigger(options.Event); clearTimeout(st); }, options.time); } } }); |
配套的css:
* { padding: 0; margin: 0; } #floatBoxBg { display: none; width: 100%; height: 100%; background: #000; position: fixed !important; /*ie7 ff*/ position: absolute; top: 0; left: 0; filter: alpha(opacity=0); opacity: 0; } .floatBox { border: #9CC95F 5px solid; position: fixed !important; /*ie7 ff*/ position: absolute; top: 50px; left: 40%; background: #fff; display: none; } .floatBox .title { height: 23px; padding: 7px 10px 0; color: #fff; background-attachment: scroll; background: #9CC95F; background-repeat: repeat-x; background-position: 0px 0px; } .floatBox .title h4 { float: left; padding: 0; margin: 0; font-size: 14px; line-height: 16px; } .floatBox .title span { float: right; cursor: pointer; } .floatBox .content { padding: 20px 15px; background: #fff; overflow-x: hidden; overflow-y: auto; } #closeDialog { font-size: 20px; font-weight: bold; color: #000; margin-top: -5px; } #closeDialog:hover { font-size: 20px; font-weight: bold; color: #fff; margin-top: -5px; } |
最终的html示例:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<script type="text/javascript" src="../js/jquery-1.7.min.js"></script>
<script type="text/javascript" src="jquery.popdialog.js"></script>
<link type="text/css" rel="stylesheet" href="popdialog.css" />
</head>
<body>
<div id="test">弹出层插件测试</div>
<div id="detail" style="display: none;">
欢迎各位网友使用弹出层插件demo
</div>
<script type="text/javascript">
$(function () {
$("#test").PopDialog({
Event: "click", //触发响应事件
title: "弹出层插件", //弹出层的标题
type: "id", //弹出层类型(text、容器ID、URL、Iframe)
content: "detail", //弹出层的内容获取(text文本、容器ID名称、URL地址、Iframe的地址)
width: 500, //弹出层的宽度
height: 300, //弹出层的高度
scrollTop: 200, //层滑动的高度也就是弹出层时离顶部滑动的距离
isAuto: true, //是否自动弹出
time: 2000, //设置弹出层时间,前提是isAuto=true
isClose: false, //是否自动关闭
timeOut: 5000 //设置自动关闭时间,前提是isClose=true
});
});
</script>
</body>
</html>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构