2012-09-25 43 views

回答

78

默認情況下,引導程序沒有提供任何拖放功能,但您可以在混合中添加一些jQuery UI spice來獲得您要查找的效果。例如,使用框架中的draggable交互,您可以定位您的模式ID以允許它在模式背景中拖動。

試試這個:

JS

​​

Demo,編輯here

更新:bootstrap3 demo

+1

設置'.modal-header {cursor:move}'後,它就像魅力一樣。 – DontVoteMeDown

+0

我不能看到這個工作在最後一個引導版本,3.3.5。有小費嗎?將Jquery更改爲1.11.0,但沒有運氣。謝謝。 – Khrys

+1

Hello @Khrys,這是一個帶有可拖動模式標題的更新演示,http://output.jsbin.com/vafulubaju。這個答案很舊,所以我猜測演示中的一些JS鏈接被破壞了)。 –

8

無論拖動選項你去,你可能要在引導的CSS文件關閉*-transition屬性.modal.fade,或至少寫一些JS說拖動過程中暫時禁用它們。否則,模式不會像您期望的那樣完全拖動。

+2

這個問題討論和解決在http://stackoverflow.com/questions/15881245/draggable-js-bootstrap-modal-performance-issues – bbodenmiller

0

jquery的用戶界面很大,可能會與bootstrap衝突。

另一種方法是DragDrop.js:http://kbjr.github.io/DragDrop/index.html

DragDrop.bind($('#myModal')[0], { 
    anchor: $('#myModal .modal-header') 
}); 

你仍然必須處理的轉變,如@ user535673建議。我只是從我的對話框中刪除淡化類。

2

你可以使用一個小腳本來做這個。

Draggable without jQuery UI

(function ($) { 
     $.fn.drags = function (opt) { 

      opt = $.extend({ 
       handle: "", 
       cursor: "move" 
      }, opt); 

      var $selected = this; 
      var $elements = (opt.handle === "") ? this : this.find(opt.handle); 

      $elements.css('cursor', opt.cursor).on("mousedown", function (e) { 
       var pos_y = $selected.offset().top - e.pageY, 
        pos_x = $selected.offset().left - e.pageX; 
       $(document).on("mousemove", function (e) { 
        $selected.offset({ 
         top: e.pageY + pos_y, 
         left: e.pageX + pos_x 
        }); 
       }).on("mouseup", function() { 
        $(this).off("mousemove"); // Unbind events from document     
       }); 
       e.preventDefault(); // disable selection 
      }); 

      return this; 

     }; 
    })(jQuery); 

例子被簡化了:$( 「#someDlg」)模態()拖動({手柄: 「模態報頭」})。。

+0

您的代碼已過時。嘗試了你的代碼,它的工作,但拖動是越野車。通過從上面的鏈接獲取代碼來修復它。請根據鏈接中的代碼更新您的代碼。 –

相關問題