我发现了一个JQuery解决方案来禁用模式视图打开时滚动身体,但我正在寻找一个Javascript解决方案,任何人都可以告诉我转换到JS它将如何:当模态视图打开时禁用滚动身体
$(function() {
var $body = $(window.document.body);
function bodyFreezeScroll() {
var bodyWidth = $body.innerWidth();
$body.css('overflow', 'hidden');
$body.css('marginRight', ($body.css('marginRight') ? '+=' : '') + ($body.innerWidth() - bodyWidth))
}
function bodyUnfreezeScroll() {
var bodyWidth = $body.innerWidth();
$body.css('marginRight', '-=' + (bodyWidth - $body.innerWidth()))
$body.css('overflow', 'auto');
}
$('.modal').hide()
$('.longcontent.main button').click(function() {
$('.modal').show()
bodyFreezeScroll()
})
$('.modal button').click(function() {
$('.modal').hide()
bodyUnfreezeScroll()
})})
你想把什么部分翻译成香草js?诀窍是拥有一个与当前视口一样大的“背景”容器(top:0; right:0; bottom:0; left:0;)该容器具有css属性overflow:auto(或scroll )所以内容越大,视口就可以滚动。然后,只要dialg打开,您就可以将其应用于body:'document.body.style.overflow =“hidden”;' –
是的,禁用滚动并使其恢复效果很好,但有一个动画的隐藏和显示滚动条,宽度将改变我想要得到这行的等价物:'$ body.css('marginRight',($ body.css('marginRight')?'+ =':' ')+($ body.innerWidth() - bodyWidth))' – Dev4life
我在你的jsfiddle中看不到动画。这只会为身体增加一个边距。 –