javascript - 修复 Javascript 和 Css 中的模态问题

标签 javascript jquery css

如何解决主体滚动条问题,但是,我将模态样式分配给 padding-left: 17px;但它只是隐藏了模态滚动条。如何在模态处于事件状态时隐藏正文滚动条(如 Bootstrap )

注意: 当我激活模式时(我可以分配正文 overflow: hidden)并且当我从模态中删除事件类时(我可以分配正文 overflow: scroll)---> 好吃吗?


我的代码:

document.getElementById('modal-btn').addEventListener('click', function(){
  document.querySelector('.modal').classList.add('active');
 // document.body.style.overflow = 'hidden';
});

document.getElementById('modal-hide').addEventListener('click', function(){
  document.querySelector('.modal').classList.remove('active');
 // document.body.style.overflow = 'scroll';
})
.modal{
  position: fixed;
  top: 0;
  left: 0;
  z-index: 9999999999;
  width: 100%;
  height: 100%;
  background: rgba(0,0,0,0.3);
  overflow-y: auto;
  
  display: none;
  padding-left: 17px;
}
.modal.active{
  display: block;
}

.modal-content{
  width: 80%;
  background-color: #fff;
  padding: 50px;
  border: 1px solid #000;
  margin: 1rem auto;
  box-sizing: border-box;
  
}

body{
  background-color: #f4f8ff;
    font-family: segoe ui;
  font-size: 1rem;
  line-height: 1.5;
}
.wp{
  width: 90%;
  margin: 1rem auto;
  background-color: #fff;
  border: 1px solid #000;
  padding: 20px;
  box-sizing: border-box;
}
#modal-btn{
  padding: .25rem 1.25rem;
  font-family: segoe ui;
  font-size: 1rem;
  line-height: 1.5;
  cursor: pointer;
}


@media(max-width: 442px){
  .modal-content{
    width: 98%;
  }
}
<div class="wp">
  <div class="title">
  I am fine
</div>

<p>Lorem, ipsum dolor sit amet consectetur adipisicing elit. Vel ipsa hic recusandae dolor. Cumque, ea. Fugiat ratione laudantium blanditiis dolore expedita? Adipisci inventore saepe minus quisquam natus officiis enim! Quia in explicabo aliquid illo voluptate nam laboriosam ad minus voluptas, repellendus provident. Temporibus voluptatum ut quia cum possimus inventore ratione?</p>
  
  <button id="modal-btn">
    Open Modal
  </button>
</div>

<div class="wp">
  <div class="title">
  I am fine
</div>

<p>Lorem, ipsum dolor sit amet consectetur adipisicing elit. Vel ipsa hic recusandae dolor. Cumque, ea. Fugiat ratione laudantium blanditiis dolore expedita? Adipisci inventore saepe minus quisquam natus officiis enim! Quia in explicabo aliquid illo voluptate nam laboriosam ad minus voluptas, repellendus provident. Temporibus voluptatum ut quia cum possimus inventore ratione?</p>

</div>


<!-- Main Modal -->

<div class="modal">
   <div class="modal-content">
      I am the content
       <button id="modal-hide">
    Close Modal
  </button>
     
     <p>
       Lorem ipsum dolor sit amet consectetur adipisicing elit. Minus, fugit quo? Illo saepe magni molestias, accusantium molestiae, similique quibusdam officia fuga id adipisci suscipit architecto, omnis quo cum labore fugiat. Facere vel nulla blanditiis, voluptatem animi debitis, asperiores alias error sed tempora cum, architecto quia cumque distinctio sit ab nemo minima eveniet esse possimus deleniti omnis? Modi unde repellat quasi reiciendis suscipit corporis explicabo! Quaerat eveniet, ad iusto commodi officia ea quae dolor, quia architecto quibusdam voluptate autem vero. Eaque quasi temporibus recusandae. Quasi assumenda vero in odio sit neque modi deleniti quaerat laborum. Reiciendis dicta sunt laborum assumenda aliquid cumque sint recusandae temporibus itaque nisi, velit magnam officia inventore, id laboriosam! Aliquam expedita voluptate vel neque aspernatur obcaecati minus, tempora laudantium illum, eveniet totam eum incidunt. Quo consectetur dolorum, aliquid quas dicta quasi nisi soluta eaque earum nostrum exercitationem possimus tempore quisquam distinctio ducimus deleniti modi consequatur quod obcaecati maxime rem. Totam quos nisi natus laudantium nobis culpa fugit aspernatur quis voluptatum consequuntur perferendis incidunt fugiat alias quaerat architecto deserunt at, consequatur dolorum sequi sed, fuga quia! Officia dignissimos non id quam quibusdam ipsam cupiditate laborum blanditiis placeat minus cumque, harum expedita accusantium eligendi quo similique debitis fugiat eius natus? Placeat quis consectetur hic natus quam veritatis earum ipsam minima dolorem molestiae nemo fuga exercitationem vero repudiandae facere delectus autem iste at saepe sapiente, veniam doloremque! Error dolor dolorem cupiditate ab qui doloribus sapiente, cum eaque consectetur debitis aliquid maiores perspiciatis dignissimos officia ea possimus molestias? Earum rerum reiciendis possimus amet, voluptas qui minima velit veniam at consequuntur optio iusto repellat eveniet placeat autem ea, ipsam sunt ab commodi quos maiores. Ad a voluptatem quasi in molestiae expedita dolorem rerum eius id dignissimos neque sunt officia magnam et repellat suscipit, soluta fuga temporibus porro ab omnis nesciunt! Deleniti itaque quae, accusamus reprehenderit minus repellendus cupiditate nihil earum in, dolorem illum nobis excepturi velit ipsam modi dolores praesentium? Necessitatibus doloribus animi aut quos provident iusto reiciendis, asperiores corrupti voluptatem ipsa veniam libero ullam illo iure rem harum laborum porro at, neque, cum maxime tempora? Deleniti cupiditate omnis nesciunt error asperiores delectus quo architecto dolorem ut nostrum. Dolorem blanditiis quos est delectus quo soluta illo officiis, eum rem ad minus corporis optio minima cumque voluptates maiores ipsa quas! At numquam tempora explicabo soluta. Natus perferendis cumque fuga iusto nostrum porro nihil exercitationem incidunt suscipit voluptatum vero, rem molestias, commodi sit, corporis animi aliquid aperiam quam. Blanditiis, minima necessitatibus. Maxime, optio officiis quia commodi consectetur dignissimos omnis accusantium, nesciunt reiciendis illum voluptates id aspernatur officia suscipit, numquam earum recusandae voluptas voluptate eum illo nemo. Ea ipsam laboriosam similique veniam nesciunt labore esse laborum nulla. Laboriosam pariatur ex ipsa assumenda ad soluta alias, explicabo id accusamus nulla non reprehenderit perspiciatis quas nisi. Unde ad voluptatem quis, quo repellendus odit sint tempore non ex, similique architecto dolor. Eius quaerat enim accusamus nobis animi dignissimos earum eaque atque culpa optio esse iusto iure adipisci, deleniti qui voluptate. Dolor velit possimus placeat a quidem commodi quod?
     </p>
  </div>
</div>

最佳答案

您可以继续使用您操作类的方法。只需使用 overflow: hidden 定义一个类并将该类添加到 body 元素。关闭模式后,从 body 元素中删除该类。

document.getElementById('modal-btn').addEventListener('click', function(){
  document.querySelector('.modal').classList.add('active');  document.querySelector('body').classList.add('modal-active');
});

document.getElementById('modal-hide').addEventListener('click', function(){
  document.querySelector('.modal').classList.remove('active');
 document.querySelector('body').classList.remove('modal-active');
})
.modal{
  position: fixed;
  top: 0;
  left: 0;
  z-index: 9999999999;
  width: 100%;
  height: 100%;
  background: rgba(0,0,0,0.3);
  overflow-y: auto;
  
  display: none;
  padding-left: 17px;
}
.modal.active{
  display: block;
}

.modal-content{
  width: 80%;
  background-color: #fff;
  padding: 50px;
  border: 1px solid #000;
  margin: 1rem auto;
  box-sizing: border-box;
  
}

body{
  background-color: #f4f8ff;
    font-family: segoe ui;
  font-size: 1rem;
  line-height: 1.5;
}
.wp{
  width: 90%;
  margin: 1rem auto;
  background-color: #fff;
  border: 1px solid #000;
  padding: 20px;
  box-sizing: border-box;
}
#modal-btn{
  padding: .25rem 1.25rem;
  font-family: segoe ui;
  font-size: 1rem;
  line-height: 1.5;
  cursor: pointer;
}


@media(max-width: 442px){
  .modal-content{
    width: 98%;
  }
}

.modal-active {
  overflow: hidden;
}
<div class="wp">
  <div class="title">
  I am fine
</div>

<p>Lorem, ipsum dolor sit amet consectetur adipisicing elit. Vel ipsa hic recusandae dolor. Cumque, ea. Fugiat ratione laudantium blanditiis dolore expedita? Adipisci inventore saepe minus quisquam natus officiis enim! Quia in explicabo aliquid illo voluptate nam laboriosam ad minus voluptas, repellendus provident. Temporibus voluptatum ut quia cum possimus inventore ratione?</p>
  
  <button id="modal-btn">
    Open Modal
  </button>
</div>

<div class="wp">
  <div class="title">
  I am fine
</div>

<p>Lorem, ipsum dolor sit amet consectetur adipisicing elit. Vel ipsa hic recusandae dolor. Cumque, ea. Fugiat ratione laudantium blanditiis dolore expedita? Adipisci inventore saepe minus quisquam natus officiis enim! Quia in explicabo aliquid illo voluptate nam laboriosam ad minus voluptas, repellendus provident. Temporibus voluptatum ut quia cum possimus inventore ratione?</p>

</div>


<!-- Main Modal -->

<div class="modal">
   <div class="modal-content">
      I am the content
       <button id="modal-hide">
    Close Modal
  </button>
     
     <p>
       Lorem ipsum dolor sit amet consectetur adipisicing elit. Minus, fugit quo? Illo saepe magni molestias, accusantium molestiae, similique quibusdam officia fuga id adipisci suscipit architecto, omnis quo cum labore fugiat. Facere vel nulla blanditiis, voluptatem animi debitis, asperiores alias error sed tempora cum, architecto quia cumque distinctio sit ab nemo minima eveniet esse possimus deleniti omnis? Modi unde repellat quasi reiciendis suscipit corporis explicabo! Quaerat eveniet, ad iusto commodi officia ea quae dolor, quia architecto quibusdam voluptate autem vero. Eaque quasi temporibus recusandae. Quasi assumenda vero in odio sit neque modi deleniti quaerat laborum. Reiciendis dicta sunt laborum assumenda aliquid cumque sint recusandae temporibus itaque nisi, velit magnam officia inventore, id laboriosam! Aliquam expedita voluptate vel neque aspernatur obcaecati minus, tempora laudantium illum, eveniet totam eum incidunt. Quo consectetur dolorum, aliquid quas dicta quasi nisi soluta eaque earum nostrum exercitationem possimus tempore quisquam distinctio ducimus deleniti modi consequatur quod obcaecati maxime rem. Totam quos nisi natus laudantium nobis culpa fugit aspernatur quis voluptatum consequuntur perferendis incidunt fugiat alias quaerat architecto deserunt at, consequatur dolorum sequi sed, fuga quia! Officia dignissimos non id quam quibusdam ipsam cupiditate laborum blanditiis placeat minus cumque, harum expedita accusantium eligendi quo similique debitis fugiat eius natus? Placeat quis consectetur hic natus quam veritatis earum ipsam minima dolorem molestiae nemo fuga exercitationem vero repudiandae facere delectus autem iste at saepe sapiente, veniam doloremque! Error dolor dolorem cupiditate ab qui doloribus sapiente, cum eaque consectetur debitis aliquid maiores perspiciatis dignissimos officia ea possimus molestias? Earum rerum reiciendis possimus amet, voluptas qui minima velit veniam at consequuntur optio iusto repellat eveniet placeat autem ea, ipsam sunt ab commodi quos maiores. Ad a voluptatem quasi in molestiae expedita dolorem rerum eius id dignissimos neque sunt officia magnam et repellat suscipit, soluta fuga temporibus porro ab omnis nesciunt! Deleniti itaque quae, accusamus reprehenderit minus repellendus cupiditate nihil earum in, dolorem illum nobis excepturi velit ipsam modi dolores praesentium? Necessitatibus doloribus animi aut quos provident iusto reiciendis, asperiores corrupti voluptatem ipsa veniam libero ullam illo iure rem harum laborum porro at, neque, cum maxime tempora? Deleniti cupiditate omnis nesciunt error asperiores delectus quo architecto dolorem ut nostrum. Dolorem blanditiis quos est delectus quo soluta illo officiis, eum rem ad minus corporis optio minima cumque voluptates maiores ipsa quas! At numquam tempora explicabo soluta. Natus perferendis cumque fuga iusto nostrum porro nihil exercitationem incidunt suscipit voluptatum vero, rem molestias, commodi sit, corporis animi aliquid aperiam quam. Blanditiis, minima necessitatibus. Maxime, optio officiis quia commodi consectetur dignissimos omnis accusantium, nesciunt reiciendis illum voluptates id aspernatur officia suscipit, numquam earum recusandae voluptas voluptate eum illo nemo. Ea ipsam laboriosam similique veniam nesciunt labore esse laborum nulla. Laboriosam pariatur ex ipsa assumenda ad soluta alias, explicabo id accusamus nulla non reprehenderit perspiciatis quas nisi. Unde ad voluptatem quis, quo repellendus odit sint tempore non ex, similique architecto dolor. Eius quaerat enim accusamus nobis animi dignissimos earum eaque atque culpa optio esse iusto iure adipisci, deleniti qui voluptate. Dolor velit possimus placeat a quidem commodi quod?
     </p>
  </div>
</div>

关于javascript - 修复 Javascript 和 Css 中的模态问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59237073/

相关文章:

javascript - 如何使用 JavaScript 将 JSON 文件中的图像添加到 HTML

javascript - 如果 URL 包含字符串,则不运行 jQuery 函数?

jquery - 带尖 Angular 的矩形边框样式

html - 将 HTML 文档格式化为多个 A4 大小的部分

javascript - 在 JavaScript 示例中使用绑定(bind)、应用或调用

Javascript:setTimeout() - 需要帮助

javascript - 无法使用带有解析存在 View 模型的 ko.mapping.fromJSON 解析绑定(bind) js 错误

javascript - 在复选框按钮选项列表上应用 css 规则

javascript - 使用 Ionic 引导 3x3 网格

html - CSS:如何将按钮分组放置在网页的一行中