jquery - 侧面板打开时防止主体滚动

标签 jquery html css panel

我通过单击调用新类 .cd-panel.is-visible 的按钮 cd-btn 来切换我的面板

 jQuery(document).ready(function($){
//open the lateral panel
$('.cd-btn').on('click', function(event){
    event.preventDefault();
    $('.cd-panel').toggleClass('is-visible');
});

.is-visible 类:

 .cd-panel.is-visible {
  visibility: visible;}

我想阻止主体在面板打开或可见时滚动。到目前为止,我已经通过以下方式实现了这一目标:

$(".cd-panel").mouseenter(function(){
  $("body").css("overflow", "hidden"); 
}).mouseleave(function(){
  $("body").css("overflow", "visible");
});

仅当我用鼠标进入或离开面板时才有效。但我想通过打开面板来实现这一点。 当面板打开时如何将溢出:隐藏样式添加到主体,然后当我关闭它时它会将溢出变为可见。 我还想在我的面板打开时将 position:fixed 添加到 body 并在关闭面板后返回到 position:relative

最佳答案

通过阅读您的(OP)和@Praveen-Kumar 评论,我可能已经弄清楚问题出在哪里。

不是检查 :visible 而是检查元素是否具有 is-visible 类,这最终决定元素是否可见。

所以你的代码变成...

$('.cd-btn').on('click', function(event){
  event.preventDefault();
  $('.cd-panel').toggleClass('is-visible');
  if ($('.cd-panel').hasClass("is-visible")) // Changed this line from your link.
    $("body").css("overflow", "hidden");
  else
    $("body").css("overflow", "visible");
});

关于jquery - 侧面板打开时防止主体滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35023047/

相关文章:

css - 调整浏览器大小时的相对位置

javascript - jquery服务器端数据表无法正常工作

javascript - Angular ng-model 无法捕获 onload 输入值

html - MS Outlook 中的自适应字体大小

html - 背景颜色不改变错误

javascript - 如何使用 javascript 在客户端将文本链接转换为 HTML 链接

css - 两个元素共享半透明(没有重叠)?

javascript - Bootstrap - 如何在子菜单打开时保持下拉菜单打开

javascript - 加载页面时,js/jquery 滚动到 div 的底部(IE 问题)

javascript - mootools fx.Accordian 内容由于某种原因未显示