css - CSS Grid:强制前 2 个 DIV 堆叠而不是溢出-x:像其余的一样自动
问题描述
所以我遇到的最大问题是我无法控制 HTML,只有 CSS。
我现在拥有的是一个css-grid
里面有 6 个 div 的容器。我希望前 2 个项目堆叠 100% 的宽度,然后在overflow-x: auto
移动设备上从左到右滚动其余项目。
我已经完成了滚动部分,但前两项也可以滚动,它们不是卡片,所以我想避免这种情况。
所以我只针对移动屏幕,但到目前为止我有什么:
我的 HTML(我无法更改)
<div style="container">
<div>Title</div>
<div>Sub-title</div>
<div class="card">CARD 1</div>
<div class="card">CARD 2</div>
<div class="card">CARD 3</div>
<div class="card">CARD 4</div>
</div>
我的 CSS
@media (max-width: 767px) {
.container {
overflow-x: auto;
-webkit-overflow-scrolling: touch;
display: grid;
grid-gap: 1.5rem;
grid-auto-flow: column;
grid-auto-columns: calc(100% - 3rem);
}
.container .card {
align-items: center;
display: block;
justify-content: center;
width: 100%;
}
}
希望这张图片显示了我所追求的。
任何帮助将不胜感激,或者即使您可以让我知道是否可能。
谢谢!
解决方案
将卡片移动到他们自己的行并使用position:sticky
.container {
overflow-x: auto;
-webkit-overflow-scrolling: touch;
display: grid;
grid-gap: 1.5rem;
grid-auto-flow: column;
grid-auto-columns: calc(100% - 3rem);
}
.container .card {
align-items: center;
display: block;
justify-content: center;
width: 100%;
height:50px;
background:red;
grid-row:3; /* added */
}
/* added */
.container :not(.card) {
position:sticky;
left:0;
}
<div class="container">
<div>Title</div>
<div>Sub-title</div>
<div class="card">CARD 1</div>
<div class="card">CARD 2</div>
<div class="card">CARD 3</div>
<div class="card">CARD 4</div>
</div>
推荐阅读
- javascript - 反应原生如何在方法中使用道具
- presto - 如何调试 presto 服务器项目?
- ruby-on-rails - 当服务器在 Localhost 上时,链接到 FlightRadar24 的 HTTP 错误 418(茶壶错误)
- java - 在 Spring Boot 中使用 cookie 进行身份验证
- python - Python:缩放 4d 数组中的所有第 4 维值?
- python - 通过使用类从用户那里获取输入来返回多个值
- c# - CTRL+R CTRL+T 不适用于 VisualStuidio2017
- java - Java Graphics2D:如何将透视变换应用于 Graphics2D 对象?
- android - 导航抽屉宽度问题
- apache-kafka - SalesForce 的 Kafka 提供商 URL