简体   繁体   English

模式打开时摆脱正文页面滚动

[英]Getting rid of body page scrolling when modal is open

I am trying to add the class overflow: hidden; 我试图添加类overflow: hidden; to the body tag with javascript to hide the scroll but it is not happening. 到带有javascript的body标签以隐藏滚动,但这没有发生。 What am I doing wrong? 我究竟做错了什么?

I am getting the element by tag name: var body = document.getElementsByTagName("body"); 我通过标记名称获取元素: var body = document.getElementsByTagName("body");

Then after the modal is fired I want to add the class .no-scrolling { overflow: hidden; } 然后在触发模态之后,我想添加类.no-scrolling { overflow: hidden; } .no-scrolling { overflow: hidden; } to the body tag. .no-scrolling { overflow: hidden; }到body标签。

var modal = document.getElementsByClassName("finance-modal")[0];
var btn = document.getElementsByClassName("finance-modal-btn")[0];
var span = document.getElementsByClassName("finance-modal-close")[0];
var body = document.getElementsByTagName("body");

btn.onclick = function() {
  modal.style.display = "block";
  body.classList.add("no-scrolling");
}
span.onclick = function() {
  modal.style.display = "none";
}
window.onclick = function(event) {
  if (event.target == modal) {
    modal.style.display = "none";
  }
}

And, it is not working! 而且,它不起作用!

This is my jsfiddle . 这是我的jsfiddle

This might not work var body = document.getElementsByTagName("body"); 这可能无法正常工作var body = document.getElementsByTagName("body"); . Try var body = document.body; 尝试var body = document.body; instead. 代替。

As for removing scrolling you need to set {overflow-y: hidden;} 至于删除滚动,则需要设置{overflow-y: hidden;}

Done! 完成!

var body = document.querySelector("body"); did it. 做到了。

It would be then: 然后是:

var modal = document.getElementsByClassName("finance-modal")[0];
var btn = document.getElementsByClassName("finance-modal-btn")[0];
var span = document.getElementsByClassName("finance-modal-close")[0];
var body = document.querySelector("body");

btn.onclick = function() {
    modal.style.display = "block";
    body.classList.add("no-scrolling");
}
span.onclick = function() {
    modal.style.display = "none";
    body.classList.remove("no-scrolling");
}
window.onclick = function(event) {
    if (event.target == modal) {
        modal.style.display = "none";
        body.classList.remove("no-scrolling");
    }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM