解决bootstrap多模态框跳转时页面左移问题

需求是这样的:

我有一个页面,点击登录跳出一个登录模态框,登录模态框上又有一个注册链接,点击跳出注册模态框,原来的登录模态框隐藏。

问题是:

大家都知道,bootstrap的模态框跳出时,页面是无法滚动的。

但是每次通过登录模态框跳转到注册模态框时,页面却是可以滚动的,而且当退出注册模态框时,页面会向左偏移一个页面滚动条的距离

bootstrap官方也说


但是有时候确实需要实现这个功能 >-<

网上有很多添加或去除偏移量的方法,但都不适用于这种情况。

产生bug的原因

当跳出一个模态框时,是不会发生这种情况的。这说明bootstrap在实现模态框的时候,确实考虑到了页面滚动条的问题。

按道理说再多的模态框,只要按照顺序出现是不会影响显示效果的,所以问题肯定处在模态框的show与hide顺序上。

在这个案例中bug原因是:登录模态框的退出发生在了注册模块框的显示之前,导致模态框不能按照原先的方案hide与show

解决方法

据此,通过添加js修改模态框的出现与消失顺序

$("#ltor").click(function(){
		$("#loginModal").modal("hide");
		$("#loginModal").on("hidden.bs.modal",function(){
			$("#registerModal").modal("show");
			$("#loginModal").off().on("hidden","hidden.bs.modal");
		})
	})
在登录模块框上通过“ltor”链接,跳转到注册模块框时。先hide原来的登录模块框,再调用bootstrap中的一个“hidden.bs.model”事件,等待登录模态框完全退出后,再显示注册模块框。最后关闭对"hidden.bs.modal"的监听。

这里有个小坑,监听事件“hidden.bs.modal”应当在发挥作用后清除监听。否则下次当你关闭登录模块框时,无论是否点击了“ltor”链接,都会跳转到注册模块框。

个人见解,如有错误,欢迎指正。

原文地址:http://blog.csdn.net/somehow1002/article/details/73737321

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hober.z

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值