У меня есть меню вне холста, скользящее слева, чтобы покрыть страницу. Строительные блоки моей страницы - это divs. Я вызываю функции JavaScript, чтобы открывать и закрывать меню вне холста. Мой основной контент остается таким же, как и в скользящем меню. У меня проблемы с поиском решения по уменьшению яркости основного содержимого и блокированию любого щелчка по нему.
Я пытался использовать свойство background: rgba (0, 0, 0, 0.5)! Важный; для дополнительного div с z-index между меню вне холста и maincontent, но без каких-либо результат. Погуглил, тоже здесь, но не нашел то, что искал. И я не хочу использовать 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 основного содержимого, так как оно вытягивает также меню вне холста, чтобы следовать за ним, создавая таким образом усеченную область бокового меню.