Хорошо, я расскажу вам, как добиться того, чего вы хотите (2 метода), а затем я объясню, как работает ваш код.
метод 1
в вашем первом div ( #wrapper
), добавьте класс menuDisplayed
:
<div id="wrapper" class="menuDisplayed">
метод 2
, вы также можете изменить свой CSS, чтобы сделать то, что вы хотите, и сделать «отображаемое меню» стиль по умолчанию:
- замените "menuDisplayed" на "menuHidden" во всем коде, чтобы он продолжал иметь смысл семантически
- , обновлял стили для
#sidebar-wrapper
, давая ему значение, отличное от 0 для ширины.
#sidebar-wrapper{
z-index: 1;
position: fixed;
width: 250px;
height: 100%;
overflow-y: hidden;
transition: 0.15s;
background-color: var(--black) ;
font-size: 1em;
}
теперь также измените стили для
#page-content-wrapper
, чтобы освободить место для боковой панели:
#page-content-wrapper{
width: 100%;
position: absolute;
padding: 15px;
padding-left: 250px; /* leaving 250px of space on the left */
transition: 0.15s;
color: black;
}
следующий шаг - сделать так, чтобы у закрытой боковой панели были правильные стили:
#wrapper.menuHidden #sidebar-wrapper{
width: 0; /* the element of id 'wrapper' and class 'menuHidden' must have width 0 */
}
#wrapper.menuHidden #page-content-wrapper {
padding-left: unset; /* clears the attribute that gave space to the sidebar */
}
Теперь я объясню, как работает ваш код (перед изменением поведения боковой панели):
your CSS сообщает браузеру, что элемент с идентификатором sidebar-wrapper
должен иметь нулевую ширину (поэтому он не появляется при загрузке страницы), но также говорит, что элемент с идентификатором sidebar-wrapper
должен иметь ширину 250 пикселей, когда внутри другого элемента есть идентификатор wrapper
и класс menuDisplayed
.
маги c находится в вашем javascript: он говорит браузеру переключить menuDisplay
класс элемента с идентификатором wrapper
, который активирует стиль CSS, который делает вашу боковую панель шириной 250 пикселей, и поэтому он появляется. при повторном переключении класс menuDisplayed
удаляется из элемента с идентификатором wrapper
, и ваша боковая панель возвращается к ширине, равной 0.
$("#menu-toggle").click
добавляет прослушиватель событий для события click используя jQuery. когда происходит событие (кто-то щелкает элемент с идентификатором menu-toggle
), выполняется функция обратного вызова:
function(e){
e.preventDefault(); // prevents the default behavior of the element (if it is an anchor (<a></a>), it loses the ability to change pages, etc.)
$("#wrapper").toggleClass("menuDisplayed"); // toggles the class 'menuDisplayed' of the element with id 'wrapper'
}