关闭切换后无法滚动正文
Not able to scroll through body after closing toggle
我阻止用户在使用 jQuery 打开切换按钮后滚动浏览 HTML 正文。但是,一旦切换关闭,我就很难启用向后滚动。我想我应该在
中使用两个 jQuery 类
$('body').css({overflow: 'hidden'});
另一个说 .toggleClass 不再活跃。但是,我还不知道该怎么做,或者是否可行。
在此先感谢您对这位新手的帮助。
这是我的 CodePen 的 link,以防您发现它更容易。下面附上相同的代码,但没有 lipsum 文本。
代码笔:https://codepen.io/fergos2/pen/jOOWeqR
$(document).ready(function() {
$('.toggle').click(function() {
$('.toggle').toggleClass('active');
$('.toggle-content').toggleClass('active');
$('body').css({overflow: 'hidden'});
});
});
body {
overflow: auto;
}
.container {
width: 100%;
height: 1000px;
margin: 0 auto;
background-color: #eee;
}
.text {
padding: 10px;
}
.wrapper {
background-color: pink;
position: relative;
display: flex;
align-items: center;
}
.toggle {
display: block;
width: 20px;
height: 20px;
float: left;
cursor: pointer;
color: white;
text-align: center;
background-color: green;
margin: 10px;
}
.toggle.active {
background-color: red;
}
.toggle-content {
display: none;
}
.toggle-content.active{
display: block;
background-color: white;
border: 1px solid black;
position: absolute;
top: 40px;
left: 0;
}
<div class="container">
<div class="wrapper">
<div class="toggle">T</div>
<div class="toggle-content">
<p>Some content</p>
</div>
</div>
<div class="text">
</div>
</div>
再次单击 $('body').css({overflow: 'hidden'});
后,您并没有删除它。我会通过检查 .toggle
是否有 active
class 来处理这个问题。像这样:
if($('.toggle').hasClass('active')){
$('body').css({overflow: ''});
}else{
$('body').css({overflow: 'hidden'});
}
我已经用这个新代码更新了您的 CodePen。
您也可以使用:
$("body").toggleClass("hidden");
然后在你的 css 中创建一个 class:
.hidden {
overflow: hidden;
}
我阻止用户在使用 jQuery 打开切换按钮后滚动浏览 HTML 正文。但是,一旦切换关闭,我就很难启用向后滚动。我想我应该在
中使用两个 jQuery 类$('body').css({overflow: 'hidden'});
另一个说 .toggleClass 不再活跃。但是,我还不知道该怎么做,或者是否可行。
在此先感谢您对这位新手的帮助。
这是我的 CodePen 的 link,以防您发现它更容易。下面附上相同的代码,但没有 lipsum 文本。
代码笔:https://codepen.io/fergos2/pen/jOOWeqR
$(document).ready(function() {
$('.toggle').click(function() {
$('.toggle').toggleClass('active');
$('.toggle-content').toggleClass('active');
$('body').css({overflow: 'hidden'});
});
});
body {
overflow: auto;
}
.container {
width: 100%;
height: 1000px;
margin: 0 auto;
background-color: #eee;
}
.text {
padding: 10px;
}
.wrapper {
background-color: pink;
position: relative;
display: flex;
align-items: center;
}
.toggle {
display: block;
width: 20px;
height: 20px;
float: left;
cursor: pointer;
color: white;
text-align: center;
background-color: green;
margin: 10px;
}
.toggle.active {
background-color: red;
}
.toggle-content {
display: none;
}
.toggle-content.active{
display: block;
background-color: white;
border: 1px solid black;
position: absolute;
top: 40px;
left: 0;
}
<div class="container">
<div class="wrapper">
<div class="toggle">T</div>
<div class="toggle-content">
<p>Some content</p>
</div>
</div>
<div class="text">
</div>
</div>
再次单击 $('body').css({overflow: 'hidden'});
后,您并没有删除它。我会通过检查 .toggle
是否有 active
class 来处理这个问题。像这样:
if($('.toggle').hasClass('active')){
$('body').css({overflow: ''});
}else{
$('body').css({overflow: 'hidden'});
}
我已经用这个新代码更新了您的 CodePen。
您也可以使用:
$("body").toggleClass("hidden");
然后在你的 css 中创建一个 class:
.hidden {
overflow: hidden;
}