2012-09-25 42 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

您的代码已过时。尝试了你的代码,它的工作,但拖动是越野车。通过从上面的链接获取代码来修复它。请根据链接中的代码更新您的代码。 –

相关问题