在汉堡菜单中滑动添加水平滚动条
Slide in hamburger menu adds horizontal scrollbar
结果应该是一个汉堡包菜单,单击该图标会从右侧滑入。
这是主菜单的代码,我将其向右移动 100%,当我单击该图标时,它会转换回 0% 并将其显示在屏幕上
HTML
<div id="mobilenav" class="mobile-nav">
<div class="mobile-nav-header">
</div>
<div class="hamburger">
<button (click)="closeMenu()">
<img src="../../assets/icons/close-menu.svg" alt="" />
</button>
</div>
</div>
<ul class="links">
</ul>
<div class="socials">
</div>
</div>
.mobile-nav {
height: 100vh;
top: 0;
position: absolute;
transform: translateX(100%);
right: 0;
transition: 0.5s;
background: white;
z-index: 99;
}
JS
openMenu() {
var mobile_menu = document.getElementById('mobilenav');
mobile_menu!.style.transform = 'translateY(0px)';
// mobile_menu!.style.display = 'block';
}
closeMenu() {
var mobile_menu = document.getElementById('mobilenav');
mobile_menu!.style.transform = 'translateX(100%)';
// mobile_menu!.style.display = 'none';
}
问题是关闭后,用户仍然可以向右水平滚动。这应该是不可能的,因为菜单应该是隐藏的,而且应该不可能水平滚动。
最简单的方法是将position: absolute
替换为position: fixed
。这解决了问题,但仍允许页面在需要时水平滚动。
或者,您可以添加
body {
overflow-x: hidden;
}
删除水平滚动条。
结果应该是一个汉堡包菜单,单击该图标会从右侧滑入。
这是主菜单的代码,我将其向右移动 100%,当我单击该图标时,它会转换回 0% 并将其显示在屏幕上
HTML
<div id="mobilenav" class="mobile-nav">
<div class="mobile-nav-header">
</div>
<div class="hamburger">
<button (click)="closeMenu()">
<img src="../../assets/icons/close-menu.svg" alt="" />
</button>
</div>
</div>
<ul class="links">
</ul>
<div class="socials">
</div>
</div>
.mobile-nav {
height: 100vh;
top: 0;
position: absolute;
transform: translateX(100%);
right: 0;
transition: 0.5s;
background: white;
z-index: 99;
}
JS
openMenu() {
var mobile_menu = document.getElementById('mobilenav');
mobile_menu!.style.transform = 'translateY(0px)';
// mobile_menu!.style.display = 'block';
}
closeMenu() {
var mobile_menu = document.getElementById('mobilenav');
mobile_menu!.style.transform = 'translateX(100%)';
// mobile_menu!.style.display = 'none';
}
问题是关闭后,用户仍然可以向右水平滚动。这应该是不可能的,因为菜单应该是隐藏的,而且应该不可能水平滚动。
最简单的方法是将position: absolute
替换为position: fixed
。这解决了问题,但仍允许页面在需要时水平滚动。
或者,您可以添加
body {
overflow-x: hidden;
}
删除水平滚动条。