как скрыть боковую панель при нажатии за пределами боковой панели? - PullRequest
1 голос
/ 19 марта 2020

У меня есть боковая панель, которая выглядит следующим образом:

enter image description here

Нажатие на стрелку снова свернет боковую панель. Тем не менее, я хочу автоматически закрыть боковую панель, если я нажму за пределами боковой панели. Возможно ли это?

Это мой скрипт для переключения боковой панели:

<script type="text/javascript">
        $(document).ready(function() {
            $("#sidebar").mCustomScrollbar({
                theme: "minimal"
            });

            $('#dismiss, .overlay').on('click', function() {
                $('#sidebar').removeClass('active');
                $('.overlay').removeClass('active');
            });

            $('#sidebarCollapse').on('click', function() {
                $('#sidebar').addClass('active');
                $('.overlay').addClass('active');
                $('.collapse.in').toggleClass('in');
                $('a[aria-expanded=true]').attr('aria-expanded', 'false');
            });
        });



    </script>

Значок переключателя (гамбургер), который расширяет боковую панель:

 <div class="col-4 my-auto text-left p-1">
                        <button type="button" id="sidebarCollapse" class="btn">
                            <i class="fa fa-bars navigation-icon"></i>
                        </button>

Некоторые CSS:

#sidebar {
    width: 250px;
    position: fixed;
    top: 0;
    left: -250px;
    height: 100vh;
    z-index: 999;
    background: #fbcc34;
    color: #fff;
    transition: all 0.3s;
    overflow-y: scroll;
    box-shadow: 3px 3px 3px rgba(0, 0, 0, 0.2);
}

#sidebar.active {
    left: 0;
}

#dismiss {
    width: 35px;
    height: 35px;
    line-height: 35px;
    text-align: center;
    background: #000000;
    position: absolute;
    top: 10px;
    right: 10px;
    cursor: pointer;
    -webkit-transition: all 0.3s;
    -o-transition: all 0.3s;
    transition: all 0.3s;
}

#dismiss:hover {
    background: #fff;
    color: #7386d5;
}

.overlay {
    display: none;
    position: fixed;
    width: 100vw;
    height: 100vh;
    background: rgba(0, 0, 0, 0.7);
    z-index: 998;
    opacity: 0;
    transition: all 0.5s ease-in-out;
}
.overlay.active {
    display: block;
    opacity: 1;
}

#sidebar .sidebar-header {
    padding: 20px;
    background: #000000;
}

Поэтому, когда я нажимаю в любом месте за пределами боковой панели, она должна автоматически закрывать боковую панель. Нужно ли создавать отдельную функцию для достижения этой цели?

1 Ответ

1 голос
/ 19 марта 2020

Вы можете сделать это с кодом ниже:

$('body').click(function(event){
   if($(event.target).attr('id') !== "sidebar" && $(event.target).attr('id') !== "sidebarCollapse") {
     $('#sidebar').removeClass('active');
     $('.overlay').removeClass('active');
   }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...