html - CSS网格中的元素不跨越两行
问题描述
我有一个 CSS 网格布局,我想让其中一个网格项跨越两行。
通常我会通过grid-row: span 2
属性或使用命名网格区域来做到这一点。
尽管在示例中,尽管有空间.news-item-5
也可以跨越下面的行(并有效地接管分配给 的空间.news-item-7
),但我无法让它工作。
在这个网格布局中不可能有.news-item-5
两行吗?
除了包含的片段外,我还有一个 codepen:https ://codepen.io/emilychews/pen/GzpBmO
任何帮助都会很棒。
/* ---- GRID */
.second-grid-wrapper {
display: grid;
grid-gap: 1rem;
grid-template-columns: 2fr 2fr 1fr;
grid-template-areas:
"news-1 news-2 news-3"
"news-1 news-4 news-5"
"news-6 news-4 news-5";
}
.news-item-1 {grid-area: news-1}
.news-item-4 {grid-area: news-4}
/* .news-item-5 {grid-area: news-5} */
.news-item-7 {
background: #fff;
}
.news{
background: lightblue;
box-sizing: border-box
}
<section class="second-grid-wrapper">
<article class="news news-item-1">
<div class="top-news-item-text-wrapper">
<h2 class="news-item-heading td">This is a headline - 1</h2>
<p class="bottom-text td">Lorem ipsum dolor sit amet consectetur adipisicing elit.</p>
</div>
</article>
<article class="news news-item-2">
<div class="top-news-item-text-wrapper">
<h3 class="news-item-heading td">A SMALLER HEADLINE - 2</h3>
<a target="_blank" class="bottom-text td">Link</a>
</div>
</article>
<article class="news news-item-3">
<div class="top-news-item-text-wrapper">
<h2 class="news-item-heading td">This is a headline -3</h2>
<p class="bottom-text td">Lorem ipsum dolor sit amet consectetur adipisicing elit.</p>
</div>
</article>
<article class="news news-item-4">
<div class="top-news-item-text-wrapper">
<h2 class="news-item-heading td">This is a headline - 4</h2>
<p class="bottom-text td">Lorem ipsum dolor sit amet consectetur adipisicing elit.</p>
</div>
</article>
<article class="news news-item-5">
<div class="top-news-item-text-wrapper">
<h2 class="news-item-heading td">This is a headline - 5</h2>
<p class="bottom-text td">Lorem ipsum dolor sit amet consectetur adipisicing elit.</p>
</div>
</article>
<article class="news news-item-6">
<div class="top-news-item-text-wrapper">
<h2 class="news-item-heading td">SOMETHING ELSE - 6</h2>
<p class="bottom-text td">Lorem ipsum dolor sit amet consectetur adipisicing elit.</p>
</div>
</article>
<article class="news news-item-7">
<div class="top-news-item-text-wrapper">
<h2 class="news-item-heading td">This is a headline - 7</h2>
<p class="bottom-text td">Lorem ipsum dolor sit amet consectetur adipisicing elit.</p>
</div>
</article>
</section>
解决方案
解决方案
添加grid-auto-rows: 1fr
到您的网格容器。
/* ---- GRID */
.second-grid-wrapper {
display: grid;
grid-auto-rows: 1fr; /* new */
grid-template-columns: 2fr 2fr 1fr;
grid-gap: 1rem;
grid-template-areas:
"news-1 news-2 news-3"
"news-1 news-4 news-5"
"news-6 news-4 news-5";
}
.news-item-1 {grid-area: news-1}
.news-item-4 {grid-area: news-4}
.news-item-5 {grid-area: news-5}
.news-item-7 {background: #fff;}
.news{
background: lightblue;
box-sizing: border-box
}
<section class="second-grid-wrapper">
<article class="news news-item-1">
<div class="top-news-item-text-wrapper">
<h2 class="news-item-heading td">This is a headline - 1</h2>
<p class="bottom-text td">Lorem ipsum dolor sit amet consectetur adipisicing elit.</p>
</div>
</article>
<article class="news news-item-2">
<div class="top-news-item-text-wrapper">
<h3 class="news-item-heading td">A SMALLER HEADLINE - 2</h3>
<a target="_blank" class="bottom-text td">Link</a>
</div>
</article>
<article class="news news-item-3">
<div class="top-news-item-text-wrapper">
<h2 class="news-item-heading td">This is a headline -3</h2>
<p class="bottom-text td">Lorem ipsum dolor sit amet consectetur adipisicing elit.</p>
</div>
</article>
<article class="news news-item-4">
<div class="top-news-item-text-wrapper">
<h2 class="news-item-heading td">This is a headline - 4</h2>
<p class="bottom-text td">Lorem ipsum dolor sit amet consectetur adipisicing elit.</p>
</div>
</article>
<article class="news news-item-5">
<div class="top-news-item-text-wrapper">
<h2 class="news-item-heading td">This is a headline - 5</h2>
<p class="bottom-text td">Lorem ipsum dolor sit amet consectetur adipisicing elit.</p>
</div>
</article>
<article class="news news-item-6">
<div class="top-news-item-text-wrapper">
<h2 class="news-item-heading td">SOMETHING ELSE - 6</h2>
<p class="bottom-text td">Lorem ipsum dolor sit amet consectetur adipisicing elit.</p>
</div>
</article>
<article class="news news-item-7">
<div class="top-news-item-text-wrapper">
<h2 class="news-item-heading td">This is a headline - 7</h2>
<p class="bottom-text td">Lorem ipsum dolor sit amet consectetur adipisicing elit.</p>
</div>
</article>
</section>
解释
元素 ( .news-item-5
) 实际上扩展了代码中的两行。这是使用Firefox 的 Grid 大纲工具的视图:
您可以看到 News Item 5 网格项扩展为两行。但是,它的内容仅限于第一行。
这很可能是由于缺少定义的行长度。结果,grid-template-rows
保持其默认设置:none
,这意味着所有行将由 隐式创建和调整大小grid-auto-rows
,其默认值为auto
。
从规范:
§ 7.2。显式轨道大小:
grid-template-rows
andgrid-template-columns
属性
none
价值。指示此属性未创建显式网格轨迹(尽管仍可以创建显式网格轨迹
grid-template-areas
)。注意:在没有显式网格的情况下,任何行/列都将被隐式生成,它们的大小将由
grid-auto-rows
和grid-auto-columns
属性确定。
grid-auto-rows: auto
因此,作为一种解决方案,通过从 切换到来给网格一些可靠的指导grid-auto-rows: 1fr
。
推荐阅读
- reactjs - 为什么在传递给 onClick 的箭头函数中的函数调用不起作用?
- python - 使用 lambda 按姓氏对作者姓名进行排序
- html - Excel VBA宏在网站上上传文件
- java - 数据集过滤器以意想不到的方式工作
- php - 使用 Sentinel 时不支持 Redis HMGET
- mysql - 如何在 Docker 上使用与 MySQL 的加密连接
- sql - 获取 SQL Server 中每个插入的 id
- android - 有没有办法通过点击网页中的按钮来触发后退按钮?
- c++ - 从用户那里获得无限量的输入,而不是打印最大的 3 ,而不使用数组
- python - SSH 终端中的 sudo 权限被拒绝