【发布时间】:2014-03-20 09:44:18
【问题描述】:
我将 bootstrap 3 和 bootbox.js 用于我的可过滤产品组合,并且我希望能够在模式比浏览器窗口长时向下滚动,但您不应该能够滚动超过模式。
默认情况下,当您单击投资组合项目时,模式会滚动到页面顶部以打开它。我在我的投资组合链接上使用了javascript:void(0); 来解决这个问题。但是position:absolute 上的.modal 打破了这一点。
但是position:absolute 和overflow:auto 允许我以我需要的方式滚动模态(只是不知道如何限制滚动直到模态结束)
查看我的 CSS:
.modal {
top: 10%;
left: 50%;
margin-left: -280px;
-webkit-background-clip: padding-box;
-moz-background-clip: padding-box;
background-clip: padding-box;
outline: none;
display: table;
position: absolute;
}
.modal-open {
overflow: auto;
}
You can look at the live version of my site here (滚动到作品集并点击一个项目)
我已经设置了一个小提琴,让每个人都更容易:http://jsfiddle.net/p4Yw2/
所以我需要:
另一种修复“打开警报前滚动到顶部”的方法
javascript:void(0);之外的问题一种限制滚动直到模态后一点点的方法 (现在您可以在模态时一直向下滚动页面 已打开)
更新:好的,导致这个问题的是我的 smooth-scroll.js 文件,它包含:
$(function(){
var $window = $(window);
var scrollTime = 0.7;
var scrollDistance = 275;
$window.on("mousewheel DOMMouseScroll", function(event){
event.preventDefault();
var scrollTop = $window.scrollTop();
var finalScroll = scrollTop - parseInt(delta*scrollDistance);
TweenMax.to($window, scrollTime, {
scrollTo : { y: finalScroll, autoKill:true },
ease: Power1.easeOut,
overwrite: 5
});
});
});
【问题讨论】:
-
您能否将代码放在一个 jsfiddle 中,以便我们更轻松地提供更改/建议?
-
您是否考虑过将 href 设置为模态框的 id?那么在 JS 中使用 preventDefault() 呢?理论上,如果没有您对模态的附加样式,Bootstrap 根本不应该滚动正文,只会滚动模态的内容。
-
好的,我已经设置了一个小提琴,方便大家使用jsfiddle.net/p4Yw2
-
@davidpauljunior 你有机会证明这一点吗?我读到了关于使用 preventDefault() 来解决这个问题,但我不知道在我的情况下将它放在哪里,我是否会从引导程序中定位默认的 .modal 类?
-
我在想 Modal html 已经在页面中了,我没有意识到 Bootbox 将它附加到页面中。不确定您是否真的需要 Bootbox?您可以使用默认的 Bootstrap 代码远程加载您的模态内容吗?例如。
<a href="http://jsbin.com/koheq/1" data-toggle="modal" data-target="#modal" id="branding1">。试试这个 JSBin (jsbin.com/yepec/1/edit),没有 Bootbox 或额外的 JS。这允许您将模态内容作为单独的文件。
标签: javascript css twitter-bootstrap bootbox gsap