html - CSS网格: Don't expand grid items

标签 html css grid-layout css-grid

我正在为移动设备和桌面设备创 build 计。在移动设备上,所有元素都堆叠在一起。在桌面上时,元素位于 2 列中。元素在移动设备和桌面设备上的顺序不同。

enter image description here 我想到使用 CSS 网格来创建它。

HTML

<div class="grid-release">
    <div class="gi-cover">cover</div>
    <div class="gi-detail">detail</div>
    <div class="gi-head">head </div>
    <div class="gi-desc">desc</div>
    <div class="gi-media">media</div>
    <div class="gi-comment">comment</div>
</div>

CSS

.grid-release {
    display: grid;
    grid-template-columns: 1fr;
    grid-template-rows: auto;
    grid-template-areas:
    "head"
    "cover"
    "detail"
    "desc"
    "media"
    "comment";
    grid-gap: 10px;
}

.grid-release .gi-cover {
    grid-area: cover;
    background-color: red;
}
.grid-release .gi-detail {
    grid-area: detail;
    background-color: yellow;
}

.grid-release .gi-head {
    grid-area: head;
    background-color: cyan;
}
.grid-release .gi-desc {
    grid-area: desc;
    background-color: chartreuse;
}
.grid-release .gi-media {
    grid-area: media;
    background-color: orange;
}

.grid-release .gi-comment {
    grid-area: comment;
    background-color: darkkhaki;
}

@media screen and (min-width: 400px) {
    .grid-release {
        grid-template-columns: 1fr 2fr;
        grid-template-rows: auto;
        grid-template-areas:
        "cover head"
        "detail desc"
        ". media"
        ". comment"; 
    }
}

...结果:

https://jsfiddle.net/q3hpr0ak/

这是我的问题。当在桌面上且封面网格项展开时,头部网格项也会展开。

https://jsfiddle.net/z5jhewhb/1/

当详细网格项展开时,描述网格项也会展开

https://jsfiddle.net/Lh2y2pzp/2/

等等...

显然,这会创建一个非常丑陋的布局。 我开始认为 CSS 网格可能是错误的方法。 我需要指导。我整个上午都在玩这个,但没有成功。

最佳答案

如果您想让同一行上左侧元素的高度独立于右侧元素,那么这与网格的设计目的几乎完全相反。

实际上任何其他布局都会做得更好。例如,这是一个使用 Flexbox 的示例,因此我们可以设置元素的顺序。

请务必添加

    align-items:flex-start;

这样它们就不会拉伸(stretch)以匹配旁边的 div

https://jsfiddle.net/q3hpr0ak/2/

正如您所看到的,将移动设备的 flex 流(一个在另一个之上)切换到桌面的行换行可以轻松切换布局,而“顺序”属性和一些简单的边距保证了每个元素位于其应有的位置。

关于html - CSS网格: Don't expand grid items,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48647366/

相关文章:

java - 如何读取下载到浏览器中的 CSV 文件的内容?

html - 我可以在 iframe 中缩放图像吗

twitter-bootstrap - LG和MD之间定位不正确

html - 语义标记建议

javascript - 菜单打开后H1不隐藏

javascript - 我如何淡入前置?

html - textareafield 背景颜色没有完全改变

html - 将表行拆分为两行

twitter-bootstrap - Bootstrap 网格等于列宽

css - 如何使每个 CSS 网格中的第一列大小相同?