简体   繁体   English

使网格项自动填充空白

[英]make grid items automatically fill empty spaces

I have the following CSS grid system that has 4 kinds of different cell sizes: small, wide, tall and large.我有以下 CSS 网格系统,它有 4 种不同的单元格大小:小、宽、高和大。 In a desktop version I've made them in a puzzle like shape that looks good but to make it mobile friendly I need the cells with a class small to automatically fill up the blank spaces that appear.在桌面版本中,我将它们制作成一个看起来不错的拼图形状,但为了使其适合移动设备,我需要使用 class 小的单元格来自动填充出现的空白空间。

Here's the css:这是 css:

.portfolio-holder {
    margin: 66px auto;
    display: flex;
    flex-wrap: wrap;
}

.portfolio {
    margin: auto;
    display: grid;
    height: 100%;
    grid-template-rows: repeat(13, 200px);
    grid-template-columns: repeat(4, 200px);
    grid-gap: 10px;
    padding: 24px;
    grid-auto-rows: minmax(100px, auto);
}

.portfolio_hat {
    background: #fd3a1e;
    overflow: hidden;
    color: black;
    font-weight: 14px;
    display: flex;
    justify-content: center;
    align-items: center;
    font-size: 1.5em;
    background-size: cover;
    background-position: top left;
    position: relative;
}

.portfolio_hat.tall {
    grid-row: span 2;
    grid-column: span 1;
}

.portfolio_hat.wide {
    grid-row: span 1;
    grid-column: span 2;
}

.portfolio_hat.small {
    grid-row: span 1;
    grid-column: span 1;
}

.portfolio_hat.tall {
    grid-row: span 2;
    grid-column: span 2;
}

@media (max-width:860px) {
    .portfolio {
        grid-template-rows: repeat(26, 40vw);
        grid-template-columns: repeat(2, 40vw);
    }
}

and the HTML looks something like this: HTML 看起来像这样:

<section class="portfolio-holder">
    <div id="port" class="portfolio">
        <div href="#" class="portfolio_hat tall"></div>
        <div href="#" class="portfolio_hat small"></div>
        <div href="#" class="portfolio_hat wide"></div>
        <div href="#" class="portfolio_hat large"></div>
        <!-- divs like the four above are generated from MYSQL DATABASE and there's a lot of them in a chaotic order -->
    </div>
</section>

I want a way to make sure that no matter the number of columns in the grid I won't get any empty spaces.我想要一种方法来确保无论网格中的列数如何,我都不会得到任何空格。

Thank You谢谢你

Take a look athttps://developer.mozilla.org/en-US/docs/Web/CSS/grid-auto-flow看看https://developer.mozilla.org/en-US/docs/Web/CSS/grid-auto-flow

The grid-auto-flow CSS property controls how the auto-placement algorithm works, specifying exactly how auto-placed items get flowed into the grid. grid-auto-flow CSS 属性控制自动放置算法的工作方式,准确指定自动放置的项目如何流入网格。

 .portfolio-holder { margin: 66px auto; display: flex; flex-wrap: wrap; }.portfolio { margin: auto; display: grid; height: 100%; grid-template-rows: repeat(13, 200px); grid-template-columns: repeat(4, 200px); grid-gap: 10px; padding: 24px; grid-auto-rows: minmax(100px, auto); grid-auto-flow: row dense;/* here your CSS update */ }.portfolio_hat { background: #fd3a1e; overflow: hidden; color: black; font-weight: 14px; display: flex; justify-content: center; align-items: center; font-size: 1.5em; background-size: cover; background-position: top left; position: relative; }.portfolio_hat.tall { grid-row: span 2; grid-column: span 1; }.portfolio_hat.wide { grid-row: span 1; grid-column: span 2; }.portfolio_hat.small { grid-row: span 1; grid-column: span 1; }.portfolio_hat.tall { grid-row: span 2; grid-column: span 2; } @media (max-width:860px) {.portfolio { grid-template-rows: repeat(26, 40vw); grid-template-columns: repeat(2, 40vw); } } div {/* see them for demo */ border: solid 1px; padding: 1em; margin: 2px; }
 <section class="portfolio-holder"> <div id="port" class="portfolio"> <div href="#" class="portfolio_hat tall"></div> <div href="#" class="portfolio_hat small"></div> <div href="#" class="portfolio_hat wide"></div> <div href="#" class="portfolio_hat large"></div> <div href="#" class="portfolio_hat tall"></div> <div href="#" class="portfolio_hat small"></div> <div href="#" class="portfolio_hat wide"></div> <div href="#" class="portfolio_hat small"></div> <div href="#" class="portfolio_hat large"></div> <div href="#" class="portfolio_hat tall"></div> <div href="#" class="portfolio_hat wide"></div> <div href="#" class="portfolio_hat large"></div> <div href="#" class="portfolio_hat wide"></div> <div href="#" class="portfolio_hat tall"></div> <div href="#" class="portfolio_hat small"></div> <div href="#" class="portfolio_hat large"></div> <div href="#" class="portfolio_hat tall"></div> <div href="#" class="portfolio_hat large"></div> <div href="#" class="portfolio_hat small"></div> <div href="#" class="portfolio_hat wide"></div> <div href="#" class="portfolio_hat tall"></div> <div href="#" class="portfolio_hat small"></div> <div href="#" class="portfolio_hat wide"></div> <div href="#" class="portfolio_hat large"></div> <div href="#" class="portfolio_hat tall"></div> <div href="#" class="portfolio_hat small"></div> <div href="#" class="portfolio_hat wide"></div> <div href="#" class="portfolio_hat large"></div> <div href="#" class="portfolio_hat tall"></div> <div href="#" class="portfolio_hat small"></div> <div href="#" class="portfolio_hat wide"></div> <div href="#" class="portfolio_hat large"></div> <div href="#" class="portfolio_hat tall"></div> <div href="#" class="portfolio_hat small"></div> <div href="#" class="portfolio_hat wide"></div> <div href="#" class="portfolio_hat large"></div> <div href="#" class="portfolio_hat tall"></div> <div href="#" class="portfolio_hat small"></div> <div href="#" class="portfolio_hat wide"></div> <div href="#" class="portfolio_hat large"></div> <div href="#" class="portfolio_hat tall"></div> <div href="#" class="portfolio_hat small"></div> <div href="#" class="portfolio_hat wide"></div> <div href="#" class="portfolio_hat large"></div> <div href="#" class="portfolio_hat tall"></div> <div href="#" class="portfolio_hat small"></div> <div href="#" class="portfolio_hat wide"></div> <div href="#" class="portfolio_hat large"></div> <div href="#" class="portfolio_hat tall"></div> <div href="#" class="portfolio_hat small"></div> <div href="#" class="portfolio_hat wide"></div> <div href="#" class="portfolio_hat large"></div> <div href="#" class="portfolio_hat tall"></div> <div href="#" class="portfolio_hat small"></div> <div href="#" class="portfolio_hat wide"></div> <div href="#" class="portfolio_hat large"></div> <div href="#" class="portfolio_hat tall"></div> <div href="#" class="portfolio_hat small"></div> <div href="#" class="portfolio_hat wide"></div> <div href="#" class="portfolio_hat large"></div> <div href="#" class="portfolio_hat tall"></div> <div href="#" class="portfolio_hat small"></div> <div href="#" class="portfolio_hat wide"></div> <div href="#" class="portfolio_hat large"></div> <div href="#" class="portfolio_hat tall"></div> <div href="#" class="portfolio_hat small"></div> <div href="#" class="portfolio_hat wide"></div> <div href="#" class="portfolio_hat large"></div> <div href="#" class="portfolio_hat tall"></div> <div href="#" class="portfolio_hat small"></div> <div href="#" class="portfolio_hat wide"></div> <div href="#" class="portfolio_hat large"></div> <div href="#" class="portfolio_hat tall"></div> <div href="#" class="portfolio_hat small"></div> <div href="#" class="portfolio_hat wide"></div> <div href="#" class="portfolio_hat large"></div> <div href="#" class="portfolio_hat tall"></div> <div href="#" class="portfolio_hat small"></div> <div href="#" class="portfolio_hat wide"></div> <div href="#" class="portfolio_hat large"></div> <div href="#" class="portfolio_hat tall"></div> <div href="#" class="portfolio_hat small"></div> <div href="#" class="portfolio_hat wide"></div> <div href="#" class="portfolio_hat large"></div> <div href="#" class="portfolio_hat tall"></div> <div href="#" class="portfolio_hat small"></div> <div href="#" class="portfolio_hat wide"></div> <div href="#" class="portfolio_hat large"></div> <div href="#" class="portfolio_hat tall"></div> <div href="#" class="portfolio_hat small"></div> <div href="#" class="portfolio_hat wide"></div> <div href="#" class="portfolio_hat large"></div> <div href="#" class="portfolio_hat tall"></div> <div href="#" class="portfolio_hat small"></div> <div href="#" class="portfolio_hat wide"></div> <div href="#" class="portfolio_hat large"></div> <div href="#" class="portfolio_hat tall"></div> <div href="#" class="portfolio_hat small"></div> <div href="#" class="portfolio_hat wide"></div> <div href="#" class="portfolio_hat large"></div> <div href="#" class="portfolio_hat tall"></div> <div href="#" class="portfolio_hat small"></div> <div href="#" class="portfolio_hat wide"></div> <div href="#" class="portfolio_hat large"></div> <div href="#" class="portfolio_hat tall"></div> <div href="#" class="portfolio_hat small"></div> <div href="#" class="portfolio_hat wide"></div> <div href="#" class="portfolio_hat large"></div> <div href="#" class="portfolio_hat tall"></div> <div href="#" class="portfolio_hat small"></div> <div href="#" class="portfolio_hat wide"></div> <div href="#" class="portfolio_hat large"></div> <div href="#" class="portfolio_hat tall"></div> <div href="#" class="portfolio_hat small"></div> <div href="#" class="portfolio_hat wide"></div> <div href="#" class="portfolio_hat large"></div> <div href="#" class="portfolio_hat tall"></div> <div href="#" class="portfolio_hat small"></div> <div href="#" class="portfolio_hat wide"></div> <div href="#" class="portfolio_hat large"></div> <div href="#" class="portfolio_hat tall"></div> <div href="#" class="portfolio_hat small"></div> <div href="#" class="portfolio_hat wide"></div> <div href="#" class="portfolio_hat large"></div> <div href="#" class="portfolio_hat tall"></div> <div href="#" class="portfolio_hat small"></div> <div href="#" class="portfolio_hat wide"></div> <div href="#" class="portfolio_hat large"></div> <div href="#" class="portfolio_hat tall"></div> <div href="#" class="portfolio_hat small"></div> <div href="#" class="portfolio_hat wide"></div> <div href="#" class="portfolio_hat large"></div> <div href="#" class="portfolio_hat tall"></div> <div href="#" class="portfolio_hat small"></div> <div href="#" class="portfolio_hat wide"></div> <div href="#" class="portfolio_hat large"></div> <div href="#" class="portfolio_hat tall"></div> <div href="#" class="portfolio_hat small"></div> <div href="#" class="portfolio_hat wide"></div> <div href="#" class="portfolio_hat large"></div> <div href="#" class="portfolio_hat tall"></div> <div href="#" class="portfolio_hat small"></div> <div href="#" class="portfolio_hat wide"></div> <div href="#" class="portfolio_hat large"></div> <div href="#" class="portfolio_hat tall"></div> <div href="#" class="portfolio_hat small"></div> <div href="#" class="portfolio_hat wide"></div> <div href="#" class="portfolio_hat large"></div> <div href="#" class="portfolio_hat tall"></div> <div href="#" class="portfolio_hat small"></div> <div href="#" class="portfolio_hat wide"></div> <div href="#" class="portfolio_hat large"></div> <div href="#" class="portfolio_hat tall"></div> <div href="#" class="portfolio_hat small"></div> <div href="#" class="portfolio_hat wide"></div> <div href="#" class="portfolio_hat large"></div> <div href="#" class="portfolio_hat tall"></div> <div href="#" class="portfolio_hat small"></div> <div href="#" class="portfolio_hat wide"></div> <div href="#" class="portfolio_hat large"></div> <div href="#" class="portfolio_hat tall"></div> <div href="#" class="portfolio_hat small"></div> <div href="#" class="portfolio_hat wide"></div> <div href="#" class="portfolio_hat large"></div> <div href="#" class="portfolio_hat tall"></div> <div href="#" class="portfolio_hat small"></div> <div href="#" class="portfolio_hat wide"></div> <div href="#" class="portfolio_hat large"></div> <div href="#" class="portfolio_hat tall"></div> <div href="#" class="portfolio_hat small"></div> <div href="#" class="portfolio_hat wide"></div> <div href="#" class="portfolio_hat large"></div> <div href="#" class="portfolio_hat tall"></div> <div href="#" class="portfolio_hat small"></div> <div href="#" class="portfolio_hat wide"></div> <div href="#" class="portfolio_hat large"></div> <div href="#" class="portfolio_hat tall"></div> <div href="#" class="portfolio_hat small"></div> <div href="#" class="portfolio_hat wide"></div> <div href="#" class="portfolio_hat large"></div> <div href="#" class="portfolio_hat tall"></div> <div href="#" class="portfolio_hat small"></div> <div href="#" class="portfolio_hat wide"></div> <div href="#" class="portfolio_hat large"></div> <!-- divs like the four above are generated from MYSQL DATABASE and there's a lot of them in a chaotic order --> </div> </section>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM