bootstrap 控件拖拽生成_bootstrap如何拖拽组件

本文介绍了如何在Bootstrap 3.x版本中实现模态框(modal)的拖拽功能。通过修改bootstrap.js源码,添加拖拽代码并在modal的show方法中调用,可以创建拖动的模态对话框。拖拽限制在可视窗口范围内,并提供源码压缩打包的建议。对于Bootstrap 4.0+版本,也可以采用类似方法实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

步骤(基于3.3.4或更高的3.x版本):

1.打开bootstrap.js源代码找到modal组件代码块,在Modal.DEFAULTS代码块下加入拖拽代码实现。Modal.DEFAULTS = {

backdrop: true,

keyboard: true,

show: true

}

//新加入的拖拽

Modal.prototype.draggable = function () {

var $ele = this.$element;

var mouseOffset;

var $modalDialog = $ele.find(".modal-dialog");

var dialogOffset;

$ele.find(".modal-header").on('mousedown', function (event) {

$(this).addClass({cursor: 'move'});

$('body').addClass('select');

dialogOffset = $modalDialog.offset();

mouseOffset = {

top: event.pageY - dialogOffset.top,

left: event.pageX - dialogOffset.left

};

$('body').on("mousemove", function (event) {

var left = event.pageX - mouseOffset.left;

var top = event.pageY - mouseOffset.top;

if (left < 10) {

left = 0;

} else if (left > $(window).width() - $modalDialog.width()) {

left = $(window).width() - $modalDialog.width();

}

if (top < 10) {

top = 0;

} else if (top > $(window).height() - $modalDialog.height()) {

top = $(window).height() - $modalDialog.height();

}

$modalDialog.offset({

top: top,

left: left

});

});

});

$(document).on("mouseup mouseleave", function () {

$('body').off("mousemove");

});

}

2. 在modal的show方法中添加调用draggable方法Modal.prototype.show = function (_relatedTarget) {

var that = this

var e = $.Event('show.bs.modal', {relatedTarget: _relatedTarget})

this.$element.trigger(e)

if (this.isShown || e.isDefaultPrevented()) return

this.isShown = true

//调用draggable()增加拖拽

this.draggable()

this.checkScrollbar()

this.setScrollbar()

this.$body.addClass('modal-open')

this.escape()

this.resize()

//......省略

}

完成上面的操作后直接引入刚刚修改的源码js在页面就已经能够很好的支持拖拽了,而且整个拖拽是在可视窗口范围内,不会超出边界。

注意事项:完成上面的源码修改后最好将bootstrap的源码压缩打包,不熟悉自动构建的可以放到开放的网站压缩,熟悉自动化构建的最好使用gulp、webpack这样的前端自动化工具来打包压缩源代码减少网页加载过程中占用带宽。当然也建议将文件命名为bootstrap-draggable.min.js类似的名称,方便一目了然的猜到这文件与原始文件有何不同。除此之外你也可以直接下载bootstrap3.x版本的源代码,然后修改里面的modal.js,然后使用它自身grunt构建来重新打包。

问题引深:bootstrap 4.0+的版本源码和3.x的版本相比modal组件的修改并不很大,同样可以采取上面的方式。包括让modal居中也可修改源代码来完成。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值