`

JQ 自定义弹出层

阅读更多

dialog.css

#DialogBySHFLayer
{
    width:100%;
    height:100%;
    left:0;
    top:0;
    position:fixed;
    z-index:500;
    background-color:#333333;
    filter:alpha(Opacity=40);
    -moz-opacity:0.4;
    opacity: 0.4;
}
/*弹出的提示框*/
#DialogBySHF
{
    position:absolute;
    border-radius:3px;
    box-shadow:0 0 8px rgba(0, 0, 0, .8);
    background-color:#f2f2f2;
    z-index:600;
}
#DialogBySHF #Title
{
    margin:0;
    width:100%;
    height:35px;
    background-color:#ffa500;
    color:#FFFFFF;
    font-family: 'microsoft yahei';
    font-size:18px;
    text-align:center;
    cursor:move;
    line-height:35px;
    border-radius:3px 3px 0 0;
    -moz-user-select:none;
    -webkit-user-select:none;
    user-select:none;   
}
#DialogBySHF #Close
{
    position:absolute;
    right:7px;
    top:6px;
    height:21px;
    line-height:21px;
    width:21px;
    cursor:pointer;
    display:block;
    border:1px solid #da8e02;
    box-shadow:0 0 4px rgba(255, 255, 255, .9);
    border-radius:3px;
}
#DialogBySHF #Container
{
    padding:0px 5px 5px 5px;
    /*width:390px;
    height:355px;*/
}
#DialogBySHF #Container table,#DialogBySHF #Container iframe
{
    width:100%;
    height:100%;
}
#DialogBySHF #Container table td
{
    vertical-align:middle;
}
#DialogBySHF #Container table #TipLine
{
    padding:0 30px;
    font-family: 'microsoft yahei';
}
#DialogBySHF #Container table #BtnLine
{
    height:60px;
    text-align:center;
}
#DialogBySHF #Container table #BtnLine input
{
    margin:6px 11px;
    -moz-user-select: none;
    background-color:#F5F5F5;
    background-image: -moz-linear-gradient(center top , #F5F5F5, #F1F1F1);
    background-image:-ms-linear-gradient(rgb(245, 245, 245), rgb(241, 241, 241));
    background-image:-webkit-linear-gradient(top,#f8f8f8,#f1f1f1);
    border:1px solid rgba(0,0,0,0.1);
    *border:1px solid #DDDDDD;
    border:1px solid #DDDDDD\0;
    border-radius:2px;
    font-family: 'microsoft yahei';
    color:#666666;
    cursor:default;
    font-size:12px;
    font-weight:bold;
    height:29px;
    line-height:27px;
    min-width:54px;
    padding:0 8px;
    text-align:center;
}
#DialogBySHF #Container table #BtnLine input:hover
{
    background-color: #F8F8F8;
    background-image: -moz-linear-gradient(center top , #F8F8F8, #F1F1F1);
    border: 1px solid #C6C6C6;
    box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1);
    color: #333333;
}
#DialogBySHF #Container table #BtnLine input:focus
{
    border: 1px solid #4D90FE;
    outline: medium none;
}

 

dialog.js

;(function ($) {
    //默认参数
    var PARAMS;
    var DEFAULTPARAMS = { Title: "弹出层的标题", Content: "", Width: 400, Height: 300, URL: "", ConfirmFun: new Object, CancelFun: new Object };
    var ContentWidth = 0;
    var ContentHeight = 0;
    $.DialogBySHF = {
        //弹出提示框
        Alert: function (params) {
            Show(params, "Alert");
        },
        //弹出确认框
        Confirm: function (params) { Show(params, "Confirm"); },
        //弹出引用其他URL框
        Dialog: function (params) { Show(params, "Dialog") },
        //关闭弹出框
        Close: function () {
            $("#DialogBySHFLayer,#DialogBySHF").remove();
        }

    };
    //初始化参数
    function Init(params) {
        if (params != undefined && params != null) {
            PARAMS = $.extend({},DEFAULTPARAMS, params);
        }
        ContentWidth = PARAMS.Width - 10;
        ContentHeight = PARAMS.Height - 40;
    };    
    //显示弹出框
    function Show(params, caller) {
        Init(params);
        var screenWidth = $(window).width();
        var screenHeight = $(window).height();
        //在屏幕中显示的位置(正中间)
        var positionLeft = (screenWidth - PARAMS.Width) / 2 + $(document).scrollLeft();
        var positionTop = (screenHeight - PARAMS.Height) / 2 + $(document).scrollTop();
        var Content = [];
        Content.push("<div id=\"DialogBySHFLayer\"></div>");
        Content.push("<div id=\"DialogBySHF\" style=\"width:" + PARAMS.Width + "px;height:" + PARAMS.Height + "px;left:" + positionLeft + "px;top:" + positionTop + "px;\">");
        Content.push("    <div id=\"Title\"><span>" + PARAMS.Title + "</span><span id=\"Close\">&#10005;</span></div>");
        Content.push("    <div id=\"Container\" style=\"width:" + ContentWidth + "px;height:" + ContentHeight + "px;\">");
        if (caller == "Dialog") {
            Content.push("<iframe frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" src=\"" + PARAMS.URL + "\" ></iframe>");
        }
        else {
            var TipLineHeight = ContentHeight - 60;
            Content.push("        <table>");
            Content.push("            <tr><td id=\"TipLine\" style=\"height:" + TipLineHeight + "px;\">" + PARAMS.Content + "</td></tr>");
            Content.push("            <tr>");
            Content.push("                <td id=\"BtnLine\">");
            Content.push("                    <input type=\"button\" id=\"btnDialogBySHFConfirm\" value=\"确定\" />");
            if (caller == "Confirm") {
                Content.push("                    <input type=\"button\" id=\"btnDialogBySHFCancel\" value=\"取消\" />");
            }
            Content.push("                </td>");
            Content.push("            </tr>");
            Content.push("        </table>");
        }
        Content.push("    </div>");
        Content.push("</div>");
        $("body").append(Content.join("\n"));
        SetDialogEvent(caller);
    }
    //设置弹窗事件
    function SetDialogEvent(caller) {
        //添加按钮关闭事件
        $("#DialogBySHF #Close").click(function () { $.DialogBySHF.Close();});
         //添加ESC关闭事件
        $(window).keydown(function(event){
            var event = event||window.event;
            if(event.keyCode===27){
                $.DialogBySHF.Close();
            }
        });
        //添加窗口resize时调整对话框位置
        $(window).resize(function(){
            var screenWidth = $(window).width();
            var screenHeight = $(window).height();           
            var positionLeft = parseInt((screenWidth - PARAMS.Width) / 2+ $(document).scrollLeft());
            var positionTop = parseInt((screenHeight - PARAMS.Height) / 2+ $(document).scrollTop());
            $("#DialogBySHF").css({"top":positionTop+"px","left":positionLeft+"px"});
        });
        $("#DialogBySHF #Title").DragBySHF($("#DialogBySHF"));
        if (caller != "Dialog") {
            $("#DialogBySHF #btnDialogBySHFConfirm").click(function () {
                $.DialogBySHF.Close();
                if ($.isFunction(PARAMS.ConfirmFun)) {
                    PARAMS.ConfirmFun();
                }
            })
        }
        if (caller == "Confirm") {
            $("#DialogBySHF #btnDialogBySHFCancel").click(function () {
                $.DialogBySHF.Close();
                if ($.isFunction(PARAMS.CancelFun)) {
                    PARAMS.CancelFun();
                }
            })
        }
    }
})(jQuery);
//拖动层
(function ($) {
    $.fn.extend({
        DragBySHF: function (objMoved) {
            return this.each(function () {
                //鼠标按下时的位置
                var mouseDownPosiX;
                var mouseDownPosiY;
                //移动的对象的初始位置
                var objPosiX;
                var objPosiY;
                //移动的对象
                var obj = $(objMoved) == undefined ? $(this) : $(objMoved);
                //是否处于移动状态
                var status = false;

                //鼠标移动时计算移动的位置
                var tempX;
                var tempY;

                $(this).mousedown(function (e) {
                    status = true;
                    mouseDownPosiX = e.pageX;
                    mouseDownPosiY = e.pageY;
                    objPosiX = obj.css("left").replace("px", "");
                    objPosiY = obj.css("top").replace("px", "");
                }).mouseup(function () {
                    status = false;
                });
                $("body").mousemove(function (e) {
                    if (status) { 
                        tempX = parseInt(e.pageX) - parseInt(mouseDownPosiX) + parseInt(objPosiX);
                        tempY = parseInt(e.pageY) - parseInt(mouseDownPosiY) + parseInt(objPosiY);
                        obj.css({ "left": tempX + "px", "top": tempY + "px" }); 
                    }
                    //判断是否超出窗体
                    //计算出弹出层距离右边的位置
                    var dialogRight = parseInt($(window).width())-(parseInt(obj.css("left"))+parseInt(obj.width()));
                    //计算出弹出层距离底边的位置
                    var dialogBottom = parseInt($(window).height())-(parseInt(obj.css("top"))+parseInt(obj.height()));
                    var maxLeft = $(window).width()-obj.width();
                    var maxTop = $(window).height()-obj.height();
                    if(parseInt(obj.css("left"))<=0){
                          obj.css("left","0px"); 
                    }
                    if(parseInt(obj.css("top"))<=0){
                        obj.css("top","0px"); 
                    }
                    if(dialogRight<=0){
                        obj.css("left",maxLeft+'px'); 
                    }                    
                }).mouseup(function () {
                    status = false;
                }).mouseleave(function () {
                    status = false;
                });
            });
        }
    })
})(jQuery);

 

demo.html

<!DOCTYPE html>
<html lang="zh-cn">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1,maximum-scale=1, user-scalable=no">
<title>新建H5模板</title>
<link rel="stylesheet" href="css/dialog.css" />
<style>
input[type="button"] {
	margin: 100px 20px;
	padding: 10px;
}
</style>
<script type="text/javascript" src="js/jquery-1.10.1.min.js"></script>
<script type="text/javascript" src="js/dialog.js"></script>
</head>
<body>
<center>
<input type="button" value="弹出提示框" id="btnAlert" />
<input type="button" value="弹出确认框" id="btnConfirm" />
<input type="button" value="弹出iframe" id="btnDialog" />
</center>
<script type="text/javascript">
$(function() {
	$("#btnAlert").click(function() {
		$.DialogBySHF.Alert({
			Width: 350,
			Height: 200,
			Title: "弹出提示框",
			Content: "你好,你选择的内容是空白的",
			ConfirmFun: test
		});
	})
	$("#btnConfirm").click(function() {
		$.DialogBySHF.Confirm({
			Width: 350,
			Height: 200,
			Title: "弹出确认框",
			Content: "你确定要删除这条内容吗",
			ConfirmFun: test,
			CancelFun: testCancel
		});
	})
	$("#btnDialog").click(function() {
		$.DialogBySHF.Dialog({
			Width: 1024,
			Height: 500,
			Title: "新开一个窗口",
			URL: "http://onestopweb.iteye.com"
		});
	})
})

function test() {
	$.DialogBySHF.Alert({
		Width: 350,
		Height: 200,
		Title: "确认后执行方法",
		Content: "确认后执行的方法"
	});
}

function testCancel() {
	$.DialogBySHF.Alert({
		Width: 350,
		Height: 200,
		Title: "取消后执行方法",
		Content: "取消后执行的方法"
	});
}
</script>
</body>
</html>

 

效果图:

 

 

 

 

 

 

 

 

 

  • 大小: 50.2 KB
1
0
分享到:
评论

相关推荐

    JQ layer 弹出层插件

    **JQ Layer 弹出层插件详解** JQ Layer是一款在JavaScript库jQuery基础上构建的弹出层插件,它提供了丰富的功能,如提示、对话框、加载层、iframe、图片预览等,广泛应用于网页交互设计中。该插件以其易用性和灵活...

    jQuery弹出层 可加载iframe 功能强大 简单易用

    Jq弹出层.rar可能包含了这个弹出层组件的所有必要文件,包括JavaScript、CSS和示例HTML文件。 总的来说,这个jQuery弹出层组件提供了一种便捷的方式来在网页中创建功能丰富的弹出窗口,同时支持加载外部内容,这...

    layui 弹出层回调获取弹出层数据的例子

    在本文中,我们将深入探讨如何在layui框架中利用弹出层(layer)进行回调操作,以便获取...通过自定义的`callbackdata`函数,我们可以自由地控制弹出层与主页面之间的数据交换,极大地提高了用户体验和程序的可扩展性。

    jquery弹出层

    此外,还可以扩展弹出层的功能,比如添加自定义动画、设置透明度、调整大小、添加拖动效果等。通过jQuery的灵活性,我们可以根据实际需求进行各种定制。 总之,jQuery弹出层的实现涉及到HTML结构、CSS样式以及...

    JQuery弹出层类库

    本篇文章将深入探讨jQuery弹出层类库,包括其基本原理、使用方法以及相关的jq插件。 ### 1. jQuery弹出层基础 jQuery弹出层通常基于jQuery核心库,通过创建动态DOM元素并在需要时显示它们来实现。这些弹出层可以是...

    jq-ui弹出层效果

    在"jq-ui弹出层效果"这个主题中,我们将主要关注Dialog组件,它是实现弹出层效果的核心。 Dialog组件可以创建一个模态或非模态的窗口,用于显示内容、提供用户输入或者进行其他交互。要使用Dialog,首先需要在HTML...

    借用jq框架写的js弹出层

    7. **插件扩展**:jQuery的生态系统中有许多预构建的插件,用于增强功能,比如可能在这个项目中用到了一个简单的弹出层插件,或者开发者自定义了一个。 8. **响应式设计**:虽然描述中提到界面可能不太美观,但如果...

    很爽的jq插件,大家来下载了。几乎所有的弹出层都实现了。

    标题中的“很爽的jq插件,大家来下载了”暗示了这是一款基于jQuery的高效易用的弹出层插件。描述进一步说明了这款插件的特性,它集成了各种弹出层效果,用户只需进行简单的配置,就能实现丰富的弹出框功能,非常适合...

    一个不错的JQ弹出层插件

    功能丰富,则意味着它可能包括但不限于动画效果、自定义内容、位置控制、关闭选项等多种特性,可以满足开发者在弹出层设计上的多样化需求。 【标签】"Jquery"是这个插件基于的JavaScript库,它简化了DOM操作,事件...

    jquery弹出层插件SexyLightBox

    5. **自定义性强**:提供丰富的配置选项,允许开发者根据需要调整弹出层的样式和行为。 **二、SexyLightBox的安装与使用** 1. **引入jQuery库**:首先,确保你的网页已经引入了jQuery库,因为SexyLightBox是基于...

    Jquery实现iframe弹出层,简单实用

    在提供的压缩包文件`Jq弹出层`中,可能包含了上述代码的实现,包括HTML、CSS和JavaScript文件,以及一个名为`readme`的文档,可能提供了关于如何使用和自定义这个弹出层的说明。阅读这个文档可以帮助你更好地理解和...

    layer jQuery弹出层插件写的图片查看器(相册层),兼容主流浏览器

    在**jQuery** 的基础上,layer提供了丰富的配置选项和回调函数,使得开发者可以自定义弹出层的样式、行为和内容。jQuery是基于JavaScript的库,简化了DOM操作、事件处理和动画效果,而layer则进一步扩展了jQuery的...

    页面弹出多个自定义层

    本项目展示了如何使用JavaScript(jq)和CSS技术在一个页面上创建多个自定义大小的弹出层。通过理解这一技术,我们可以为用户提供更加丰富的交互体验。 首先,让我们深入了解一下“jq”,它通常指的是jQuery,一个...

    jquery弹出层插件点击弹出层可拖动特效

    jQuery实现弹出层的方式多种多样,可以是自定义的DOM元素,也可以利用现有的jQuery插件。本案例中提到的插件可能是通过创建一个可浮动的div元素来模拟弹出层效果,并通过jQuery事件监听和DOM操作实现弹出、隐藏以及...

    jq实现点击图片弹出大图

    这通常涉及监听`click`事件,获取图片源并将其插入到一个新的或已存在的弹出层中。以下是一个基本的实现示例: ```javascript $(document).ready(function() { $('.thumbnail').click(function(e) { e....

    jQuery实现渐现渐隐弹出层.zip

    在本文中,我们将深入探讨如何使用jQuery来实现渐现渐隐和上下滑动的弹出层效果。jQuery是一个广泛使用的JavaScript库,它简化了DOM操作、事件处理、动画以及Ajax交互,使得创建复杂的网页交互变得更为简单。在这个...

    jQuery制作信息提示弹出层

    为了增强用户体验,可以添加更复杂的动画效果,比如滑动、缩放等,也可以自定义弹出层的内容。例如,将提示信息动态插入到`#popup-content`中: ```javascript var message = "新的提示信息"; $("#popup-content")....

    适用于移动端的弹出层

    在移动端应用开发中,弹出层(通常称为对话框或模态框)是不可或缺的元素,用于显示警告、确认信息、表单输入等交互场景。本文将深入探讨“适用于移动端的弹出层”这一主题,主要围绕JavaScript开发中的模态框和弹出...

    jquery弹出层选择器

    **jQuery弹出层选择器详解** 在Web开发中,弹出层(Modal)是一种常见的交互设计,用于显示警告、确认信息、提供用户输入等。jQuery作为JavaScript库,提供了丰富的插件来实现弹出层功能,其中之一就是我们今天要...

Global site tag (gtag.js) - Google Analytics