ZBLOG

为什么关闭弹窗之后外面那层滚动条不可滚动呢

在使用Bootstrap模态框时,关闭模态框后,页面外部的滚动条变得不可滚动通常是因为Bootstrap在打开模态框时会添加一个类(例如modal-open)到<body>元素上,以防止背景滚动。这个类在关闭模态框时应该被移除,但有时候可能由于JavaScript错误或其他原因没有被正确处理。

解决方案

  1. 确保正确清理:确认你在模态框隐藏时移除了相应的类。Bootstrap会自动处理这个,但如果你有自定义代码,确保它不会干扰。

  2. 手动移除样式:如果问题依然存在,你可以尝试手动设置样式,例如:

    1. $('#imageModal').on('hidden.bs.modal', function() {
    2. $('#imageModal').remove();
    3. $('body').css('overflow', 'auto'); // 确保body可滚动
    4. });
  3. 检查其他脚本:查看是否有其他JavaScript或CSS对<body>或文档的滚动行为产生影响,比如某些全局样式。

  4. 确保Bootstrap版本:确认你使用的是兼容的Bootstrap版本。如果你的项目中包含多个版本的jQuery或Bootstrap,可能导致这种行为。

  5. 调试:使用浏览器的开发者工具,检查DOM结构及应用的CSS类。在打开和关闭模态框前后观察<body>标签上的类变化。

完整示例

这里是一个完整示例,展示如何在创建模态窗口后正确管理背景滚动:

  1. link.on('click', function(e) {
  2. e.preventDefault();
  3. e.stopPropagation();
  4. let imageUrl = '../d/exemptionReduction/selectPictureById?id=' + dialogData.data.attachmentList[i].id;
  5. let modalHtml = `
  6. <div class="modal fade" id="imageModal" tabindex="-1" role="dialog" aria-labelledby="imageModalLabel" aria-hidden="true">
  7. <div class="modal-dialog" role="document">
  8. <div class="modal-content">
  9. <div class="modal-header">
  10. <button type="button" class="close" data-dismiss="modal" aria-label="Close">
  11. <span aria-hidden="true">&times;</span>
  12. </button>
  13. </div>
  14. <div class="modal-body">
  15. <img id="imagePreview" src="${imageUrl}" alt="Image Preview" style="width:100%; transition:transform .2s;">
  16. </div>
  17. </div>
  18. </div>
  19. </div>`;
  20. $('body').append(modalHtml);
  21. $('#imageModal').modal('show');
  22. // Handle scale logic here...
  23. $('#imageModal').on('hidden.bs.modal', function() {
  24. $('#imageModal').remove();
  25. $('body').css('overflow', 'auto'); // 确保body可滚动
  26. });
  27. });

通过以上方法,你应该能够修复模态框关闭后导致页面无法滚动的问题。如果还有疑问,请继续提问!


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=20796

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?