使用bootstrap3版本

在网上看了很多方法,我觉得jquery-ui的实现方法是最简单有效的,具体实现方法

1.下载并引入jquery-ui插件

2.全局添加模态框允许拖动事件

$(document).on("show.bs.modal", ".modal", function(){
$(this).draggable({
handle: ".modal-header" // 只能点击头部拖动
        cursor: 'move',
});
$(this).css("overflow", "hidden"); // 防止出现滚动条,出现的话,你会把滚动条一起拖着走的
});

这里记录一下bootstrap modal 的事件:

show.bs.modal:在调用 show 方法后触发。

show.bs.modal:当模态框对用户可见时触发(将等待 CSS 过渡效果完成)。

hide.bs.modal:当调用 hide 方法时触发。

hidden.bs.modal:当模态框完全对用户隐藏时触发。

这种解决模态框拖动的方法还不完美,由于设置了只能点击头部拖动,经常出现下面这种拖动出页面边界后,点不到头部所以无法拖动回来的情况

jquery-ui中可以设置约束运动,即添加 $( element ).draggable({ containment: "parent" });

但是设置draggable的.modal元素宽高是100%,导致无法拖动。

所以需要修改一下,让拖动元素改为.modal下的.modal-dialog,但是.modal-dialog有个css属性 margin:30px auto 对横向拖动有影响,为此就想办法修改这个属性,网上让模态框竖向居中正好适合。

竖向居中的方法是修改bootstrap源码:

在bootstrap.js或bootstrap.min.js文件中找到Modal.prototype.show方法。

在that.$element.addClass('in').attr('aria-hidden', false)代码前加入下面这段代码。

that.$element.children().eq(0).css("position", "absolute").css({
"margin": "0px",
"top": function () {
return (that.$element.height() - that.$element.children().eq(0).height() - 40) / 2 + "px";
},
"left": function () {
return (that.$element.width() - that.$element.children().eq(0).width()) / 2 + "px";
}
});

到这里就完美解决了!

$(document).on("shown.bs.modal", ".modal", function(){
var dialog = $(this).find(".modal-dialog");
dialog.draggable({
handle: ".modal-header", // 只能点击头部拖动
cursor: 'move',
refreshPositions: false,
scroll: false,
containment: "parent"
});
$(this).css("overflow", "hidden"); // 防止出现滚动条,出现的话,你会把滚动条一起拖着走的
});

完美解决bootstrap模态框允许拖动后拖出边界的问题的更多相关文章

  1. 解决bootstrap模态框内输入框无法获取焦点

    bootstrap 模态框中的input标签在某些情况下会无法获取焦点. 最终解决方法:去除模态框的 tabindex="-1" 属性即可

  2. 解决bootstrap模态框居中问题

    完美解决办法: 在bootstrap.js或bootstrap.min.js文件中找到Modal.prototype.show方法. 在that.$element.addClass('in').att ...

  3. (转)解决bootstrap 模态框的页面抖动

    使用bootstrap时,往往会出现页面抖动的效果,使得用户体验十分不友好. Bootstrap为了让所有的页面(这里指内容溢出和不溢出)显示效果一样,采取的方法如下: 当Modal显示时,设置bod ...

  4. Bootstrap3-技巧之解决Bootstrap模态框切换时页面抖动 or页面滚动条

    Bootstrap为了让所有的页面(这里指内容溢出和不溢出)显示效果一样,采取的方法如下: 当Modal显示时,设置body -- overflow:hidden;margin-right:15px; ...

  5. 解决Bootstrap模态框切换时页面抖动 or页面滚动条

    Bootstrap为了让所有的页面(这里指内容溢出和不溢出)显示效果一样,采取的方法如下: 当Modal显示时,设置body -- overflow:hidden;margin-right:15px; ...

  6. 黄聪:解决Bootstrap模态框(modal)弹出后页面跑到顶部的办法

    bootstrap 3.1.1 版本解决方案: body.modal-open { position: absolute !important; }

  7. 解决bootstrap 模态框 数据清除 验证清空

    $("#switchModel").on("hidden.bs.modal", function () { $('#ware-form')[0].reset() ...

  8. bootstrap模态框modal使用remote第二次加载显示相同内容解决办法

    bootstrap模态框modal使用remote动态加载内容,第二次加载显示相同内容解决办法 bootstrap的modal中,使用remote可以动态加载页面到modal-body中,并弹窗显示 ...

  9. 小解系列-解决WebUploader在谷歌浏览器下弹出框打开慢,在Bootstrap模态框内部多次点击才能触发的问题

    WebUploader百度前端团队开源的上传组件,用起来感觉真心不错的,标题的两个问题是我实际使用过程中遇到的问题,经过百度和谷歌查到解决方案, 特分享一下,以供遇到此问题的童靴. 谷歌浏览器弹出框打 ...

随机推荐

  1. FPGA噪声干扰

    在FPGA高速AD采集设计中,PCB布线差会产生干扰.今天小编为大家介绍一些布线解决方案. 1.信号线的等长 以SDRAM或者DDRII为例,数据线,命令线,地址线以及时钟线最好等长,误差不要超过50 ...

  2. 解决eclipse Blocked : the user operation is waiting

    本文转载自:http://blog.csdn.net/shaw1994/article/details/44106679 出现这种情况的时候整个adb都跪了, eclipse一run就会跪, 而且还容 ...

  3. java求1+1/2+1/3+1/4+......+1/n的值

    总结:与上一篇的不同是在main函数里.所以n的值是需要填写的.而不是未知值还是运用不灵活. package com.c2; //1+1/2+1/3+....+1/n的值 public class D ...

  4. Hibernate4.3.5入门HelloWorld

    本文给出一个简单的Hibernate4.3.5入门实例,配置方式采用XML文件方式(这种方式已经不是主流了,目前越来越多采用Annotation方式映射POJO实体) 代码结构如下图所示:主要用到hi ...

  5. BurpSuite—-decoder模块(编码模块)

    一.简介 Burp Decoder是Burp Suite中一款编码解码工具,将原始数据转换成各种编码和哈希表的简单工具,它能够智能地识别多种编码格式采用启发式技术. 二.模块说明 通过有请求的任意模块 ...

  6. wordpress get_query_var()函数

    get_query_var函数的最主要作用就是能够查询得到当前文章的分类及分页.定义在:wp-includes/query.php 定义: function get_query_var($var) { ...

  7. apache配置多个虚拟主机 localhost访问不了解决方案

    在httpd-vhosts.conf,重定向localhost <VirtualHost *:80>    ServerAdmin webmaster@dummy-host2.exampl ...

  8. Java多线程-线程的同步(同步方法)

    线程的同步是保证多线程安全访问竞争资源的一种手段.线程的同步是Java多线程编程的难点,往往开发者搞不清楚什么是竞争资源.什么时候需要考虑同步,怎么同步等等问题,当然,这些问题没有很明确的答案,但有些 ...

  9. .find()和.index()的区别

    今天在复习基本数据类型——字符串的时候,有一点想法,总结一下: 字符串的定义:字符串是一个有序的字符集合,用于存储和表示基本的文字信息,用‘,“,‘’‘括起来的称之为字符串. 字符串的操作有很多种,比 ...

  10. Functions & Closures

    [Functions] 1.不带返回值的函数: 2.通过tuple返回元素 返回的tuple可按如下方式使用: 3.External Parameter: External parameter的使用: ...