jQuery網頁元素拖拽插件

来源:http://www.cnblogs.com/shouce/archive/2016/06/07/5565910.html
-Advertisement-
Play Games

效果說明:配合已有CSS樣式,載入插件後,網頁元素可以隨意在視窗內拖拽,設置了原位置半透明和拖拽半透明的效果選項,可根據需要選擇。另外,當頁面上有多個可拖拽元素時,可以載入另外一個用於設置z-index的插件,模擬Windows視窗點擊置頂效果。 js/jquery.jLdraggable.js: ...


效果說明:配合已有CSS樣式,載入插件後,網頁元素可以隨意在視窗內拖拽,設置了原位置半透明和拖拽半透明的效果選項,可根據需要選擇。另外,當頁面上有多個可拖拽元素時,可以載入另外一個用於設置z-index的插件,模擬Windows視窗點擊置頂效果。

js/jquery.jLdraggable.js:

複製代碼
;(function($){
    $.fn.extend({
            "jLzindex" : function(){    //用於判斷和設置各個對話框的z-index
                var $dragIndex = $(this);
                var arrzIndex = new Array();
                for(var i=0; i < $dragIndex.length; i++){    //初始化數組元素值,並按拖拽項順序設置z-index值
                    var zIdxNum = 10000 - i - i -2;
                    arrzIndex[i] = {"getId":"drag" + ($dragIndex.length - i),"zIdx":zIdxNum};
                    $("#drag" + ($dragIndex.length - i)).css("z-index",zIdxNum);
                }
               $dragIndex.mousedown(function(){
                    var i = 0;
                    var dIndex = 0;
                    while(arrzIndex[i]){    //找到當前點擊項在數組裡的下標
                        if(arrzIndex[i].getId == $(this).attr("id")){ dIndex = i;}
                        i++;
                    }
                    for(var i = dIndex; i >=0; i--){    //把點擊項移至數組第一位,其他項後移
                        if(i > 0){
                            arrzIndex[i].getId = arrzIndex[i-1].getId;
                            $("#" + arrzIndex[i].getId).css("z-index",arrzIndex[i].zIdx);
                        } else{
                            arrzIndex[i].getId = $(this).attr("id");
                            $("#" + arrzIndex[i].getId).css("z-index",arrzIndex[i].zIdx);
                        }
                    }
                });
            },
            "jLdraggable" : function(mod){    //拖拽插件
                var model = mod;
                var draggable = false; 
                var $drag = $(this);
                $drag.find(".dragBar").mousedown(function(e){
                    draggable = true;
                    var mouseLeft = e.pageX - $drag.find(".dragBar").offset().left;    //滑鼠在拖拽區域中的橫向距離
                    var mouseTop = e.pageY - $drag.find(".dragBar").offset().top;    //滑鼠在拖拽區域中的橫向距離
                    if(model == "cFade"){    //原位置元素半透明
                        $drag.clone(false).appendTo("body").addClass("dragShadow").fadeTo(0,0.2).css("z-index",parseInt($drag.css("z-index")) - 1);
                    } else if(model == "dFade"){    //跟隨滑鼠元素半透明
                        $drag.clone(false).appendTo("body").addClass("dragShadow").css("z-index",parseInt($drag.css("z-index")) - 1);
                        $drag.fadeTo(0,0.2);
                    }
                    $(document).mousemove(function(e){
                        if(draggable){
                            var winWidth = $(window).width();
                            var winHeight = $(window).height();
                            var dragLeft = e.pageX - mouseLeft;
                            var dragTop = e.pageY - mouseTop;
                            
                            //拖拽框不能超出視窗邊界
                            if(dragLeft < 0){dragLeft = 0;}
                            if(dragLeft + $drag.width() > winWidth){
                                dragLeft = winWidth - $drag.width();
                            }
                            if(dragTop < 0){dragTop = 0;}
                            if(dragTop + $drag.height() > winHeight){
                                dragTop = winHeight - $drag.height();
                            }
                            
                            $drag.css("left",dragLeft + "px");
                            $drag.css("top",dragTop + "px");
                        } else{
                            return false;
                        }
                    });
                });
                $(document).mouseup(function(){
                    draggable = false;
                    $(".dragShadow").remove();
                    if(model == "dFade"){
                        $drag.fadeTo(0,1);    
                    }
                });
            }
        })
})(jQuery)
複製代碼

index.html:

複製代碼
<script type="text/javascript" src="js/jquery.min.js"></script> 
<script type="text/javascript" src="js/jquery.jLdraggable.js"></script> 
<script type="text/javascript">
$(document).ready(function(){
    $("#drag1").jLdraggable(); //無參數,沒有影子
    $("#drag2").jLdraggable("cFade");  //cFade,定義原位置半透明陰影
    $("#drag3").jLdraggable("dFade");  //dFade,定義跟隨滑鼠的半透明陰影
    $(".dragIndex").jLzindex();  //多個視窗的z-index處理
});
</script>
<style type="text/css">

.dragTitle{
    width:120px;
    height:27px;
    background:url(images/drag_01.jpg);
    cursor:move;
}
.dragContent{
    width:120px;
    height:73px;
    background:url(images/drag_02.jpg);
    line-height:73px;
    text-align:center;
}

#drag1{
    width:120px; 
    position:absolute; 
    left:10px; 
    top:10px;
}
#drag2{
    width:120px; 
    position:absolute; 
    left:90px; 
    top:90px;
}
#drag3{
    width:120px; 
    position:absolute; 
    left:170px; 
    top:170px;
}
</style>
<div id="drag1" class="dragIndex">
  <div class="dragBar dragTitle"></div>
  <div class="dragContent">無參數</div>
</div>
<div id="drag2" class="dragIndex">
  <div class="dragBar dragTitle"></div>
  <div class="dragContent">原位半透明</div>
</div>
<div id="drag3" class="dragIndex">
  <div class="dragBar dragTitle"></div>
  <div class="dragContent">拖拽半透明</div>
</div>
複製代碼

 

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • html: <a><span id="sendAgain" onclick="sendEmail()">2.再次發送激活郵件</span></a> (span控制點擊事件,disabled無效) js: /*發送郵件*/function sendEmail(){//發送郵箱認證郵件 var me = ...
  • url: http://xxxx.com?name=魅力&id=123 js中: var name = getUrlParam("name"); /*通過正則獲取url中的參數*/function getUrlParam(name){ var reg = new RegExp("(^|&)"+ na ...
  • 1.fis作為nodejs的模塊來管理的,所以首先得安裝nodejs,看我前面的安裝nodejs的文章。 2.官方的案例下載包https://github.com/hefangshi/fis-quickstart-demo 3.cmd命令,進入,然後看圖 安裝的時候普遍可能報錯,什麼什麼鏡像問題,導 ...
  • 1.進入官網https://nodejs.org/en/download/ 2.安裝過程基本直接“NEXT”就可以了。(windows的安裝msi文件在過程中會直接添加path的系統變數,變數值是你的安裝路徑,例如“C:\Program Files\nodejs”)。 3.安裝完成後,cmd進入,然 ...
  • video 用於在HTML或者XHTML文檔中嵌入視頻內容 使用 video 元素至少要提供兩種視頻格式的文件:OGG 和 MP4 1. OGG:採用 Theora 視頻格式和 Vorbis 音頻解碼器 (目前比較主流的視頻格式) 2. MPEG 4:採用 H.264 視頻格式和 AAC 音頻解碼器 ...
  • 上一篇文章中我們就簡單的學習了HTML5 地理定位,那麼今天告訴大家我在項目中遇到的一個問題吧,就是怎麼實現點擊一個按鈕就可以調到百度地圖,並且獲取到你當前的位置,並且導航到指定的地方去。 不想看步驟的可以直接下載DEMO 下載 一、獲取目的地坐標 打開百度地圖API 滑鼠點擊拾取坐標網頁,http ...
  • DOM: jquery: ...
  • 效果展示 http://hovertree.com/texiao/css/25/ 本效果適合PC,也適合移動端手機掃描二維碼查看效果:效果圖:代碼如下: 轉自:http://hovertree.com/h/bjaf/csswuliu.htm 特效彙總:http://www.cnblogs.com/r ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...