#css #css-grid
#css #css-grid
Вопрос:
Я серверный программист, которого попросили сделать простой проект, поэтому я изо всех сил пытаюсь понять концепцию CSS grid
Первая строка имеет полную высоту 100 пикселей, как указано в grid-template-rows
, а начиная со второй, они сворачиваются, чтобы включать только содержимое. Чего мне не хватает?
.projects-grid {
display: grid;
grid-template-columns: repeat(auto-fill, 100px);
grid-template-rows: repeat(auto-fill, 100px);
grid-column-gap: 2rem;
grid-row-gap: 6rem;
}
.projects-grid-item {
display: flex;
align-items: center;
justify-content: center;
background-color: #457b9d;
border-radius: 3px;
}
<div class="projects-grid">
<div id="add" class="projects-grid-item">+</div>
<div class="projects-grid-item">
<a href="/project/list">Проект 1 </a>
</div>
<div class="projects-grid-item">
<a href="/project/list">ащщ </a>
</div>
<div class="projects-grid-item">
<a href="/project/list">foo </a>
</div>
<div class="projects-grid-item">
<a href="/project/list">foo2 </a>
</div>
<div class="projects-grid-item">
<a href="/project/list">foo3 </a>
</div>
<div class="projects-grid-item">
<a href="/project/list">foo4 </a>
</div>
<div class="projects-grid-item">
<a href="/project/list">foo5 </a>
</div>
<div class="projects-grid-item">
<a href="/project/list">foo6 </a>
</div>
<div class="projects-grid-item">
<a href="/project/list">foo7 </a>
</div>
<div class="projects-grid-item">
<a href="/project/list">foo7 </a>
</div>
<div class="projects-grid-item">
<a href="/project/list">foo8 </a>
</div>
<div class="projects-grid-item">
<a href="/project/list">foo11 </a>
</div>
<div class="projects-grid-item">
<a href="/project/list">foo11 </a>
</div>
<div class="projects-grid-item">
<a href="/project/list">foo12 </a>
</div>
<div class="projects-grid-item">
<a href="/project/list">foo12 </a>
</div>
<div class="projects-grid-item">
<a href="/project/list">foo13 </a>
</div>
<div class="projects-grid-item">
<a href="/project/list">foo13 </a>
</div>
<div class="projects-grid-item">
<a href="/project/list">foo14 </a>
</div>
<div class="projects-grid-item">
<a href="/project/list">foo15 </a>
</div>
<div class="projects-grid-item">
<a href="/project/list">foo16 </a>
</div>
<div class="projects-grid-item">
<a href="/project/list">Проект 100500 </a>
</div>
</div>
Комментарии:
1.
grid-template-rows: repeat(6, 100px);
это решает проблему, но я не уверен, ваш это ответ или нет2. или вы можете добавить
height:100px;
к своим элементам3. @MahmoodKiaheyrati Спасибо. Знаете ли вы, почему сетка ведет себя таким образом? Разве не предполагается присваивать равную высоту каждой строке, если это явно указано?
Ответ №1:
Вам нужно использовать grid-auto-rows
, который будет определять размер всех неявных строк
Свойства grid-auto-columns и grid-auto-rows определяют размер дорожек, которым не присвоен размер в grid-template-rows или grid-template-columns.ссылка
.projects-grid {
display: grid;
grid-template-columns: repeat(auto-fill, 100px);
grid-auto-rows: 100px;
grid-column-gap: 2rem;
grid-row-gap: 6rem;
}
.projects-grid-item {
display: flex;
align-items: center;
justify-content: center;
background-color: #457b9d;
border-radius: 3px;
}
<div class="projects-grid">
<div id="add" class="projects-grid-item">+</div>
<div class="projects-grid-item">
<a href="/project/list">Проект 1 </a>
</div>
<div class="projects-grid-item">
<a href="/project/list">ащщ </a>
</div>
<div class="projects-grid-item">
<a href="/project/list">foo </a>
</div>
<div class="projects-grid-item">
<a href="/project/list">foo2 </a>
</div>
<div class="projects-grid-item">
<a href="/project/list">foo3 </a>
</div>
<div class="projects-grid-item">
<a href="/project/list">foo4 </a>
</div>
<div class="projects-grid-item">
<a href="/project/list">foo5 </a>
</div>
<div class="projects-grid-item">
<a href="/project/list">foo6 </a>
</div>
<div class="projects-grid-item">
<a href="/project/list">foo7 </a>
</div>
<div class="projects-grid-item">
<a href="/project/list">foo7 </a>
</div>
<div class="projects-grid-item">
<a href="/project/list">foo8 </a>
</div>
<div class="projects-grid-item">
<a href="/project/list">foo11 </a>
</div>
<div class="projects-grid-item">
<a href="/project/list">foo11 </a>
</div>
<div class="projects-grid-item">
<a href="/project/list">foo12 </a>
</div>
<div class="projects-grid-item">
<a href="/project/list">foo12 </a>
</div>
<div class="projects-grid-item">
<a href="/project/list">foo13 </a>
</div>
<div class="projects-grid-item">
<a href="/project/list">foo13 </a>
</div>
<div class="projects-grid-item">
<a href="/project/list">foo14 </a>
</div>
<div class="projects-grid-item">
<a href="/project/list">foo15 </a>
</div>
<div class="projects-grid-item">
<a href="/project/list">foo16 </a>
</div>
<div class="projects-grid-item">
<a href="/project/list">Проект 100500 </a>
</div>
</div>
Комментарии:
1. Намного чище, чем я предложил 😉
2. Да, это выглядит потрясающе! Спасибо за чистое решение