Javascript 当模式视图打开时,禁用在车身上滚动
我正在创建这个网站,当您单击标题第二行最右端的链接时,模态窗口将显示youtube视频 嵌入式 当我在模态中滚动时,BODY也会滚动,我想停止。我怎么能这么做 非常感谢您的帮助!Javascript 当模式视图打开时,禁用在车身上滚动,javascript,html,css,modal-dialog,Javascript,Html,Css,Modal Dialog,我正在创建这个网站,当您单击标题第二行最右端的链接时,模态窗口将显示youtube视频 嵌入式 当我在模态中滚动时,BODY也会滚动,我想停止。我怎么能这么做 非常感谢您的帮助! 谢谢您的时间。在CSS中添加以下规则: body.modal-open{ 溢出:隐藏; } 另外,使用一些jQuery,这样当modal打开时,您可以将.modal open类添加到标记中,当modal关闭时,您可以删除它 $("#myModal").on("show", function () { $("body
谢谢您的时间。在CSS中添加以下规则:
body.modal-open{
溢出:隐藏;
}
另外,使用一些jQuery,这样当modal打开时,您可以将.modal open
类添加到
标记中,当modal关闭时,您可以删除它
$("#myModal").on("show", function () {
$("body").addClass("modal-open");
}).on("hidden", function () {
$("body").removeClass("modal-open")
});
您可以通过将任何DOM元素的overflow CSS属性设置为hidden和position fixed来防止其滚动。例如:
.disable-scroll {
/* disable scrollbar on both x and y axis */
overflow: hidden;
/* disable scrollbar on x-axis only */
overflow-x: hidden;
/* disable scrollbar on y-axis only */
overflow-y: hidden;
/* disable scroll */
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
/* OPTIONAL: none of dom element will be click-able */
pointer-events: none;
}
我会将html和body标记设置为
overflow:hidden代码>这样用户就不能滚动
但是,如果模态的内容非常大,我建议为模态设置一个可滚动的容器。您可以看到我在这里谈论的一个示例:简单溢出:隐藏
不会在Chrome或Firefox上进行剪切。使用位置:固定代码>可以工作,但作为一种副作用,关闭模式时会使屏幕跳转
这将隐藏Chrome和FF的滚动条
.modal-open {
-moz-appearance: menuimage;
}
.modal-open::-webkit-scrollbar {
width: 0 !important;
}
但是,这只会禁用滚动条,使用按键/文本选择/触摸手势仍可以滚动
一种可能性是将主体内部元素的高度设置为零,例如所有div
.modal-open div {
height: 0px;
}
在到目前为止我看到的其他修复中,当打开modal时,他们试图在“BODY”标记上应用固定定位,文档在最顶端滚动,因为默认情况下,文档定位在顶部0。我尝试了这一点,发现最好的解决方案是在html标记而不是body标记上应用隐藏的溢出。这样,我们就不需要任何固定的位置,您可以将文档保持在打开modal之前的位置
在我发现的修复中,您只需要应用以下内容
function openModal(){
$("html").css({"overflow-y":"hidden"})
// open your modal box function in this area...
}
这就是解决办法。您可以继续创建一个CSS类,并在打开或关闭模式框时在HTML上切换该类。但是这确实解决了我密码保护链接的问题。你可以添加这个css$(“body”).css(“overflow-y”,“hidden”)
嗨,谢谢你的快速回复。我的朋友为我制作了这个javascript,所以我不太确定在我的js文件中添加它的位置。你能帮我介绍一下吗?@Hirohito_Yamada,当你点击链接时,在你的点击函数中添加这个jquery,比如$(“#yourelemrnidname”)。点击(function(){($((“body”).css(“overflow-y”,“hidden”);)代码>Hi可能重复,感谢您的快速响应。我的朋友为我制作了这个javascript,所以我不太确定在我的js文件中添加它的位置。你能帮我介绍一下吗?你可以在
标签上面加上
标签,然后在里面写JavaScript代码。谢谢!只是把它添加到我的html中,但它不起作用。。。我是否应该将“#myModal”更改为其他内容?是的,您应该将其更改为表示模式的
元素的id或类。@IvanJ您不应该只复制已存在的粘贴答案。嗨,谢谢你的快速回复。我的朋友为我制作了这个javascript,所以我不太确定在我的js文件中添加它的位置。你能带我过去吗?该死的。这是我解决问题的第一件事。我一直在搞scrolltop和各种胡说八道。非常感谢。