Javascript-форум (https://javascript.ru/forum/)
-   (X)HTML/CSS (https://javascript.ru/forum/xhtml-html-css/)
-   -   Затемнение фона по клику (https://javascript.ru/forum/xhtml-html-css/70434-zatemnenie-fona-po-kliku.html)

dupre 05.09.2017 05:32

Затемнение фона по клику
 
Есть разметка:
<!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>
                    Далеко-далеко за&nbsp;словесными горами в&nbsp;стране, гласных и&nbsp;согласных живут рыбные тексты.
                </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 фон затемнялся, при закрытии возвращался к исходному состоянию?

ksa 05.09.2017 08:35

Цитата:

Сообщение от dupre
чтобы открытии.sidenav фон затемнялся

Как вариант...
- Иметь ДИВ с
position: fixed;

размером на весь экран и полупрозрачным фоном
- Разместить нужный див поверх фонового
- Показывать и скрывать те ДИВы по меренадобности

рони 05.09.2017 09:48

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;
}

рони 05.09.2017 10:34

dupre,
зачем создавать сообщение в теме Сайт Javascript.ru !!!

рони 05.09.2017 10:35

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>
                    Далеко-далеко за&nbsp;словесными горами в&nbsp;стране, гласных и&nbsp;согласных живут рыбные тексты.
                </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>

dupre 06.09.2017 01:59

рони,
решение оказалось проще чем я думал. Несколько строк на css и ни одно новой строки к имеющемуся js... Отлично!

По размещению сообщений и, что пример надо полностью понял и на будущее постараюсь учесть.
Спасибки большие за разъяснение затруднительных для меня решений по интересным задачам! :thanks:


Часовой пояс GMT +3, время: 03:47.