我有一个从左侧滑动以覆盖页面的非画布菜单。我的页面的构建块是 div。我调用 javascript 函数来打开和关闭画布外菜单。我的主要内容保持在滑动菜单下。我在寻找使主要内容变暗并阻止对其进行任何点击的解决方案方面遇到了问题。
我尝试使用属性背景: rgba(0, 0, 0, 0.5) !important; 对于在画布外菜单和主内容之间具有 z-index 的附加 div,但没有任何结果。谷歌搜索,也在这里,但没有找到我要找的东西。而且我不想使用 Bootstrap 或其他库,以使项目尽可能轻。这是我的代码:
<style>
.sidenav {
height: 100%;
width: 220px;
position: absolute;
z-index: 999;
top: 0;
left: 0;
overflow-x: hidden;
-webkit-transform: translate3d(-220px,0,0);
-webkit-transition: -webkit-transform 0.4s;
-webkit-transition-timing-function: cubic-bezier(0.7,0,0.3,1);
}
.cover {
position: absolute;
z-index: 900;
left: 0px;
top: 0px;
display: none;
width: 100%;
height: 100%;
z-index: 900;
background: rgba(0, 0, 0, 0) !important;
display: none;
}
.maincontent {
position: relative;
z-index: 20;
margin: auto;
}
</style>
<script>
function openNav() {
document.getElementById("mySidenav").style.webkitTransform = "translate3d(-1px,0,0)";
document.getElementById("cover").style.display = "inline";
document.getElementById("cover").style.background = "rgba(0, 0, 0, 0.5) !important";
}
function closeNav() {
document.getElementById("mySidenav").style.webkitTransform = "translate3d(-220px,0,0)";
document.getElementById("cover").style.display = "none";
document.getElementById("cover").style.background = "rgba(0, 0, 0, 0) !important";
}
</script>
<div id="mySidenav" class="sidenav">
<a href="javascript:void(0)" id="closebtn" class="closebtn" onclick="closeNav()">×</a>
//menue items are hereunder
</div>
<div id="cover" class="cover">
<div id ="maincontent" class="maincontent">
//some elements here
<img id="open_nav" class="fixed-ratio-resize_menu" src="menu.png" alt="menu" onclick="openNav()">
//all the rest of the page is here
</div>
</div>
现在菜单根据需要滑入和滑出,但我在找到一个整洁且运行的解决方案时遇到了问题:1)使菜单下的主要内容区域变暗;2)拦截对主要内容区域的任何点击,或者在点击关闭菜单时忽略它;3) 阻止主要内容的 y 滚动,因为它还会拉出画布菜单以跟随它,从而给出截断的侧菜单区域的外观。