#css #css-grid
#css #css-сетка
Вопрос:
Я использую CSS grid для своего макета. 2 столбца и три строки. Я бы хотел, чтобы левый столбец был гибким, чтобы в левом столбце могла находиться панель навигации, которая является сворачиваемой, что означает, что она открывается / закрывается, когда я нажимаю кнопку меню гамбургера. Пока я не нашел ни одного примера. Можно ли сделать столбец гибким от ширины 0 до любой ширины в пикселях?
Комментарии:
1. Ожидается, что вы сначала попытаетесь закодировать это самостоятельно, и если вы застряли, вы попросите помощи здесь, предоставив код, который вы пробовали
2. Вы не можете сделать это с помощью одного контейнера сетки. То, что вы описываете, не является сеткой .
Ответ №1:
Вы можете использовать min-content
grid-template-columns
свойство in и задать ширину sidebar
div, тогда, если вы измените ширину этого элемента, content
div должен заполнить пустое пространство. Проверьте фрагмент ниже.
var collapsed = false
$('#btn').click(function() {
$('.sidebar').css('width', !collapsed ? '100px' : '150px')
collapsed = !collapsed
})
.grid-container {
display: grid;
grid-template-columns: min-content 1fr;
grid-template-rows: 1fr;
gap: 0px 0px;
grid-template-areas: "sidebar content";
width: 400px;
height: 300px;
}
.sidebar {
grid-area: sidebar;
background-color: red;
width: 150px;
}
.content {
grid-area: content;
background-color: green;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="grid-container">
<div class="sidebar">
<button id='btn'>collapse</button>
</div>
<div class="content">content</div>
</div>