Для создания меню с использованием Bootstrap и offcanvas, вы можете следовать следующим шагам:
1. Добавьте ссылку на Bootstrap в ваш HTML-файл:
```html
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
```
2. Создайте разметку для меню:
```html
<nav class="navbar navbar-expand-md navbar-dark bg-dark fixed-top">
<a class="navbar-brand" href="#">Ваш логотип</a>
<button class="navbar-toggler" type="button" data-toggle="offcanvas" data-target="#navbarOffcanvas" aria-controls="navbarOffcanvas" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="navbar-collapse offcanvas-collapse" id="navbarOffcanvas">
<ul class="navbar-nav mr-auto">
<li class="nav-item active">
<a class="nav-link" href="#">Главная</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">О нас</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Услуги</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Контакты</a>
</li>
</ul>
</div>
</nav>
<!-- Добавьте ваш код с контентом ниже этого блока -->
```
3. Добавьте JavaScript-код для работы offcanvas:
```html
<script src="https://code.jquery.com/jquery-3.5.1.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/@popperjs/[email protected]/dist/umd/popper.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>
<script>
$(function() {
$('[data-toggle="offcanvas"]').on('click', function() {
$('.offcanvas-collapse').toggleClass('open');
})
});
</script>
```
4. Добавьте стили для offcanvas в ваш CSS:
```css
.offcanvas-collapse {
position: fixed;
top: 56px; /* Расстояние от верхней части экрана до меню */
bottom: 0;
right: 100%;
left: 0;
z-index: 1032;
visibility: hidden;
overflow-y: auto;
background-color: #343a40; /* Цвет фона меню */
transition: visibility 0.3s ease-in-out, transform 0.3s ease-in-out;
}
.offcanvas-collapse.open {
visibility: visible;
transform: translateX(100%);
}
```
5. Чтобы объединить блоки меню в колоночной верстке и в offcanvas меню, вы можете использовать классы Bootstrap для разных размеров экрана. Например, вы можете использовать класс `d-none` для скрытия меню на маленьких экранах и класс `d-md-block` для отображения меню в блоках на средних и больших экранах:
```html
<ul class="navbar-nav mr-auto d-none d-md-block">
<!-- Элементы меню для отображения в колоночной верстке -->
...
</ul>
<div class="navbar-collapse offcanvas-collapse">
<ul class="navbar-nav mr-auto d-md-none">
<!-- Элементы меню для отображения в offcanvas меню -->
...
</ul>
</div>
```
6. Чтобы решить проблему ручного ресайза, чтобы при изменении размера экрана меню и колонки оставались одинаковой ширины, вы можете использовать JavaScript-код для автоматического изменения ширины меню и колонки при изменении размера экрана:
```html
<script>
$(window).on('resize', function() {
var menuWidth = $('.offcanvas-collapse').width();
$('.navbar-nav.mr-auto').width(menuWidth);
});
</script>
```
Поместите этот код внутри `<script>` тега после