对于正在工作的项目,我们在JavaScript中使用Bootstrap Modal窗口。我们想让一些窗口可以移动,但是我们遇到了JQuery的性能问题。
$("#myModal").draggable({
handle: ".modal-header"
});
Example,
Source。
在IE9中,它按预期工作
在Chrome中,水平拖动按预期工作,垂直拖动相当慢,但没有问题
在Firefox中,水平拖动按预期工作,但垂直拖动非常慢。
这很奇怪,因为示例窗口没有图形化的重量,JQuery应该规范化浏览器行为。我尝试在不使用JQuery的可拖动的情况下解决这个问题,但我遇到了同样的问题。
所以我有几个问题:
亲切的问候, 吉
答案 0 :(得分:11)
我找到了一些方法来解决这个问题。
将这个添加到CSS文件将在拖动模态时禁用transition
效果。然而,似乎一旦用户拖动盒子,飞入将不会正确发生,而是它将会淡入。
.modal.fade.ui-draggable-dragging {
-moz-transition: none;
-o-transition: none;
-webkit-transition: none;
transition: none;
}
或者将以下内容添加到您的CSS文件中,并将nofly
类添加到您的模型中将禁用所有内容但不会淡入淡出:
.modal.fade.nofly {
top: 10%;
-webkit-transition: opacity 0.3s linear;
-moz-transition: opacity 0.3s linear;
-o-transition: opacity 0.3s linear;
transition: opacity 0.3s linear;
}
答案 1 :(得分:5)
我发现在bootstrap 3中我必须覆盖模态对话框的这些css属性:
.modal
{
overflow: hidden;
bottom: auto;
right: auto;
}
.modal-dialog{
margin-right: 0;
margin-left: 0;
}
答案 2 :(得分:2)
这并不完全回答您的问题,但您可能会尝试停用*-transition
属性或减少指定0.3s
的时间值。这在.modal.fade
中定义。但这也会影响最初的弹出动画。如果这是不可接受的,您可以使用start
小部件的draggable
事件来应用新样式。
答案 3 :(得分:1)
使用Bootstrap 3.3和jQuery UI 1.1我将一个名为“modal-draggable”的类添加到具有“modal”类的元素中。
它使用.modal-dialog
类绑定到容器内的.modal-draggable
元素(与此处绑定到实际容器的一些示例不同)。
有一些CSS,所以滚动长对话框仍然适用于所有屏幕尺寸的设备。
CSS:
.modal-draggable .modal-backdrop {
position: fixed;
}
.modal.modal-draggable {
overflow: overflow-y;
}
.modal-draggable .modal-header:hover {
cursor: move;
}
JavaScript的:
$(".modal-draggable .modal-dialog").draggable({
handle: ".modal-header"
});
在这里查看JS Fiddle进行演示: http://jsfiddle.net/jcosnn6u/3/ 强>
注意:到目前为止,我只在Chrome,Firefox和Safari以及移动设备上对此进行了测试,因此无法评论Internet Explorer的兼容性。
答案 4 :(得分:0)
我更喜欢使用jqueryui。有关可拖动API的更多详细信息,请访问:http://api.jqueryui.com/draggable/
答案 5 :(得分:0)
尽管建议的CSS更改对我有用,但我最初并不喜欢左边显示的对话框。将jquery UI从1.9升级到1.11修复了我看到的问题