jquery实现可拖动弹出层特效

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>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>jquery实现可拖动弹出层特效</title>
<script src="js/jquery-1.7.2.min.js" type="text/javascript"></script>
<script type="text/javascript" src="js/tc.all.js"></script>
<style type="text/css">
body{margin:0; padding:0;font-size:12px;}
dt{padding:10px;}
p{ height:100px; line-height:100px; border:1px solid #eee; margin:10px; }
i{ font-style:normal;}
#detail{    position:absolute;width:400px;height:200px;border:1px solid #ccc;background:#efefef; display:none;}
#detail .tit{ background:#ddd; display:block; height:33px; cursor:move;}
#detail .tit i{ float:right; line-height:33px; padding:0 8px;cursor:default;}
#detail2{position:absolute;width:300px;height:100px;border:1px solid #555;background:#555;display:none;}
#detail2 .tit{ background:#333; display:block; height:33px;cursor:move;}
#detail2 .tit i{ float:right; line-height:33px; padding:0 8px; color:#777; cursor:default;}
</style>
</head>
<body>
<br /><br />
<center>
<dl>
    <dt><button id="t1">点我弹一个</button></dt>
    <dt><button  id="t2">点我再弹一个</button></dt>
</dl>
</center>
<div id="detail">
<div class="tit"><i class="close">关闭</i></div>
<pre>
    /***
     * 小鸟弹窗,按ESC可以关闭窗口。
     * 小鸟弹窗不带样式,大家可以根据自己的项目写样式。
     * 小鸟弹窗很小,min版的只1.15k,因为小所以值得应用。
     * 小鸟弹窗希望有网友可以再改进,希望他变得更小。
    ***/
</pre>
</div>
<div id="detail2">
<div class="tit"><i class="close">关闭</i></div>
再弹出一个窗
</div>
<script type="text/javascript">
    $("#t1").click(function(){
            popWin("detail");
    });
    $("#t2").click(function(){
            popWin("detail2");
    });
</script>
<div style="text-align:center;margin:50px 0; font:normal 14px/24px ‘MicroSoft YaHei‘;">
<p>适用浏览器:IE8、360、FireFox、Chrome、Safari、Opera、傲游、搜狗、世界之窗.</p>
</div>
</body>
</html>

 

js:

jquery-1.7.2.min

/***
 * 小鸟弹出层插件,由漫画Jquery弹出层插件改编而来
 * QQ:9169775
 * 编写时间:2013年3月21号
 * version:1.0
***/
function popWin(obj){
    var _z=9000;//新对象的z-index
    var _mv=false;//移动标记
    var _x,_y;//鼠标离控件左上角的相对位置        
    var _obj= $("#"+obj);
    var _wid= _obj.width();
    var _hei= _obj.height();
    var _tit= _obj.find(".tit");
    var _cls =_obj.find(".close");
    var docE =document.documentElement;
    var left=($(document).width()-_obj.width())/2;
    var top =(docE.clientHeight-_obj.height())/2;
    _obj.css({    "left":left,"top":top,"display":"block","z-index":_z-(-1)});
            
    _tit.mousedown(function(e){
        _mv=true;
        _x=e.pageX-parseInt(_obj.css("left"));//获得左边位置
        _y=e.pageY-parseInt(_obj.css("top"));//获得上边位置
        _obj.css({    "z-index":_z-(-1)}).fadeTo(50,.5);//点击后开始拖动并透明显示    
    });
    _tit.mouseup(function(e){
        _mv=false;
        _obj.fadeTo("fast",1);//松开鼠标后停止移动并恢复成不透明                 
    
    });
    
    $(document).mousemove(function(e){
        if(_mv){
            var x=e.pageX-_x;//移动时根据鼠标位置计算控件左上角的绝对位置
            if(x<=0){x=0};
            x=Math.min(docE.clientWidth-_wid,x)-5;
            var y=e.pageY-_y;
            if(y<=0){y=0};
            y=Math.min(docE.clientHeight-_hei,y)-5;
            _obj.css({
                top:y,left:x
            });//控件新位置
        }
    });

            _cls.live("click",function(){
        $(this).parent().parent().hide().siblings("#maskLayer").remove();
    });
            
    $(‘<div id="maskLayer"></div>‘).appendTo("body").css({
        "background":"#000","opacity":".4","top":0,"left":0,"position":"absolute","zIndex":"8000"
    });
    reModel();
    $(window).bind("resize",function(){reModel();});
    $(document).keydown(function(event) {
        if (event.keyCode == 27) {
            $("#maskLayer").remove();
            _obj.hide();
        }
    });
    function reModel(){
        var b = docE? docE : document.body,
        height = b.scrollHeight > b.clientHeight ? b.scrollHeight : b.clientHeight,
        width = b.scrollWidth > b.clientWidth ? b.scrollWidth : b.clientWidth;
        $("#maskLayer").css({
            "height": height,"width": width
        });
    };
}

 

demo:

jquery实现可拖动弹出层特效,古老的榕树,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。