Затемнение фона по клику
Есть разметка:
<!DOCTYPE html> <html lang="ru"> <head> <meta charset="UTF-8"> <title>Главная</title> <link rel="stylesheet" href="css/libs.min.css"> <link rel="stylesheet" href="css/main.css"> </head> <body> <div id="mySidenav" class="sidenav"> <span class="nav_top_menu_item">Список меню</span> <ul class="breadcrumbs"> <li> <a href="index.html">Главная</a> <p> Далеко-далеко за словесными горами в стране, гласных и согласных живут рыбные тексты. </p> </li> <li> <a href="news.html" target="_blank">Объявления</a> <p> Далеко-далеко за словесными горами в стране, гласных и согласных живут рыбные тексты. </p> </li> <li> <a href="gallery.html" target="_blank">Фотоотчёт</a> <p> Далеко-далеко за словесными горами в стране, гласных и согласных живут рыбные тексты. </p> </li> <li> <a href="reports.html" target="_blank">Отчёты</a> <p> Далеко-далеко за словесными горами в стране, гласных и согласных живут рыбные тексты. </p> </li> <li> <a href="contacts.html" target="_blank">Контакты</a> <p> Далеко-далеко за словесными горами в стране, гласных и согласных живут рыбные тексты. </p> </li> </ul> </div> <div id="main"> </div> <script src="js/libs.min.js"></script> <script src="js/common.js"></script> </body> </html> К ней js: window.addEventListener('DOMContentLoaded', function() { var body = document.querySelector('body'); document.addEventListener("click", function(event) { var target = event.target; if (target.closest(".sidenav") && !target.closest(".closebtn")) return; else if (target.closest("#main")) { event.preventDefault(); body.classList.toggle("open") } else body.classList.remove("open"); }); }); Сам вопрос: Изменить-дописать код js так, чтобы открытии.sidenav фон затемнялся, при закрытии возвращался к исходному состоянию? |
Цитата:
- Иметь ДИВ с position: fixed; размером на весь экран и полупрозрачным фоном - Разместить нужный див поверх фонового - Показывать и скрывать те ДИВы по меренадобности |
dupre,
body:after{ opacity: 0; content: ""; } body.open:after{ content: ""; background-color: #A9A9A9; opacity: .3; left:250px; right: 0; top: 0; bottom: 0; position: fixed; transition: all 0.3s 0.3s; } |
dupre,
зачем создавать сообщение в теме Сайт Javascript.ru !!! |
dupre,
пример надо делать полностью!!! <!DOCTYPE html> <html lang="ru"> <head> <meta charset="UTF-8"> <title>Главная</title> <style type="text/css"> body { font-family: "Lato", sans-serif; position: relative; height: 1700px; transition: all 0.3s; } .sidenav { height: 100%; width: 0; position: fixed; z-index: 1; top: 0; left: 0; background-color: #111; overflow-x: hidden; transition: 0.5s; padding-top: 60px; } .sidenav a { padding: 8px 8px 8px 32px; text-decoration: none; font-size: 25px; color: #818181; display: block; transition: 0.3s; } .sidenav a:hover, .offcanvas a:focus{ color: #f1f1f1; } .sidenav .closebtn { position: absolute; top: 0; right: 25px; font-size: 36px; margin-left: 50px; } #main { position: fixed; left: 0px; transition: left .5s; padding: 4px 2px; width: 36px; height: 36px; background-color: #000000; text-align: center; margin-left: 8px; line-height: 36px; } @media screen and (max-height: 450px) { .sidenav {padding-top: 15px;} .sidenav a {font-size: 18px;} } body.open{ margin-left: 250px; } body.open .sidenav{ width: 250px } body.open #main{ left:250px; } body:after{ opacity: 0; content: ""; } body.open:after{ content: ""; background-color: #A9A9A9; opacity: .3; left:250px; right: 0; top: 0; bottom: 0; position: fixed; transition: all 0.3s 0.3s; } .openclosebtn{ font-size:30px;cursor:pointer; color: #FFFFFF; } h1{ margin: 0 auto; text-align: center; } </style> </head> <body> <div id="mySidenav" class="sidenav"> <span class="nav_top_menu_item">Список меню</span> <ul class="breadcrumbs"> <li> <a href="index.html">Главная</a> <p> Далеко-далеко за словесными горами в стране, гласных и согласных живут рыбные тексты. </p> </li> <li> <a href="news.html" target="_blank">Объявления</a> <p> Далеко-далеко за словесными горами в стране, гласных и согласных живут рыбные тексты. </p> </li> <li> <a href="gallery.html" target="_blank">Фотоотчёт</a> <p> Далеко-далеко за словесными горами в стране, гласных и согласных живут рыбные тексты. </p> </li> <li> <a href="reports.html" target="_blank">Отчёты</a> <p> Далеко-далеко за словесными горами в стране, гласных и согласных живут рыбные тексты. </p> </li> <li> <a href="contacts.html" target="_blank">Контакты</a> <p> Далеко-далеко за словесными горами в стране, гласных и согласных живут рыбные тексты. </p> </li> </ul> </div> <div id="main"> </div> <script>window.addEventListener('DOMContentLoaded', function() { var body = document.querySelector('body'); document.addEventListener("click", function(event) { var target = event.target; if (target.closest(".sidenav") && !target.closest(".closebtn")) return; else if (target.closest("#main")) { event.preventDefault(); body.classList.toggle("open") } else body.classList.remove("open"); }); }); </script> </body> </html> |
рони,
решение оказалось проще чем я думал. Несколько строк на css и ни одно новой строки к имеющемуся js... Отлично! По размещению сообщений и, что пример надо полностью понял и на будущее постараюсь учесть. Спасибки большие за разъяснение затруднительных для меня решений по интересным задачам! :thanks: |
Часовой пояс GMT +3, время: 03:47. |