我有一个带有全屏覆盖导航的站点,该站点在触发时会隐藏html
元素上的溢出。这是为了在导航打开时停止滚动导航后面的页面。
压缩后的SCSS(在启用导航时)如下所示:
html.nav-is-active {
overflow: hidden
}
nav.active {
display: block;
position: fixed;
top: 0;
left: 0;
width: 100vw;
height: 100vh;
z-index: 1600000;
}
我的问题是,在打开导航栏时,滚动条消失了,导致页面跳转-这尤其令人迷惑,因为导航栏上有一个关闭按钮,应该与站点上的菜单按钮对齐。
我的问题是如何最好地解决这个问题?我可以从overflow:hidden
元素中删除html
来保留滚动条,但这意味着在打开导航栏时可以无意地滚动该站点。
任何帮助表示赞赏
迈克
答案 0 :(得分:0)
这确实很hacky,但是它应该做您想要的...
html {
overflow-y: hidden;
}
body {
overflow-y: scroll; // causes an empty scrollbar
height: auto; //set height = content so body can't overflow
}
您可以使滚动条在叠加层中以相同的方式可见。
或如果您可以弄清楚滚动条的宽度(在Mac上通常为15px,并且与Win 10相似,我认为),则可以从覆盖尺寸中减去或添加填充。这比将叠加层设置为overflow-y: scroll
稍好,因为它不会导致在小屏幕上在叠加层内部滚动。
nav.active {
width: calc(100vw - 15px); // could be done with javascript
}
答案 1 :(得分:0)
class TeachersSerializer(ModelSerializer):
def update(self, instance, validated_data):
instance.vote += 1
instance.save()
return instance
是没有overflow: hidden;
的块滚动的另一种选择,因此只需更改以下内容即可:
position: fixed; overflow-y:scroll;
与此:
html.nav-is-active {
overflow: hidden;
}
您将看到一个空的滚动条,但是该页面将不再“跳转”。