Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 当模式视图打开时,禁用在车身上滚动_Javascript_Html_Css_Modal Dialog - Fatal编程技术网

Javascript 当模式视图打开时,禁用在车身上滚动

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

我正在创建这个网站,当您单击标题第二行最右端的链接时,模态窗口将显示youtube视频 嵌入式

当我在模态中滚动时,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和各种胡说八道。非常感谢。