html - 在 CSS 网格中实现 flexbox 行反转
问题描述
在掌握了 flexbox 之后,我开始学习 CSS 网格。
这是我之前构建的一个简单的 flexbox 网格:
.container {
width: 500px;
max-width: 100%;
margin: 0 auto;
}
.flex {
display: flex;
flex-flow: row wrap;
}
.col {
padding: 24px;
flex: 1;
}
.flex:nth-child(even) {
flex-flow: row-reverse wrap;
text-align: left;
}
img {
height: auto;
max-width: 100%;
}
<div class="container">
<div class="flex">
<div class="col">
<h2>I'm A Title</h2>
<p>Here's some copy.</p>
</div>
<div class="col">
<img src="https://hackernoon.com/hn-images/1*mONNI1lG9VuiqovpnYqicA.jpeg">
</div>
</div><!-- .flex -->
<div class="flex">
<div class="col">
<h2>I'm A Title</h2>
<p>Here's some copy.</p>
</div>
<div class="col">
<img src="https://hackernoon.com/hn-images/1*mONNI1lG9VuiqovpnYqicA.jpeg">
</div>
</div><!-- .flex -->
<div class="flex">
<div class="col">
<h2>I'm A Title</h2>
<p>Here's some copy.</p>
</div>
<div class="col">
<img src="https://hackernoon.com/hn-images/1*mONNI1lG9VuiqovpnYqicA.jpeg">
</div>
</div><!-- .flex -->
</div><!-- .container -->
如您所见,图像交替使用flex-flow: row-reverse wrap;
.
我的问题:是否可以使用 CSS 网格做同样的事情?我将如何实现这一目标?
到目前为止,这是它在 CSS 网格中的外观。有任何想法吗?
.container {
width: 500px;
max-width: 100%;
margin: 0 auto;
}
.grid {
display: grid;
grid-template-columns: repeat(2, 1fr);
}
.col {
padding: 24px;
}
img {
height: auto;
max-width: 100%;
}
<div class="container">
<div class="grid">
<div class="col">
<h2>I'm A Title</h2>
<p>Here's some copy.</p>
</div>
<div class="col">
<img src="https://hackernoon.com/hn-images/1*mONNI1lG9VuiqovpnYqicA.jpeg">
</div>
</div><!-- .grid -->
<div class="grid">
<div class="col">
<h2>I'm A Title</h2>
<p>Here's some copy.</p>
</div>
<div class="col">
<img src="https://hackernoon.com/hn-images/1*mONNI1lG9VuiqovpnYqicA.jpeg">
</div>
</div><!-- .grid -->
<div class="grid">
<div class="col">
<h2>I'm A Title</h2>
<p>Here's some copy.</p>
</div>
<div class="col">
<img src="https://hackernoon.com/hn-images/1*mONNI1lG9VuiqovpnYqicA.jpeg">
</div>
</div><!-- .grid -->
</div><!-- .container -->
解决方案
您有 2 个元素,因此只需更改一个元素的顺序即可。
.container {
width: 500px;
max-width: 100%;
margin: 0 auto;
}
.grid {
display: grid;
grid-template-columns: repeat(2, 1fr);
}
.col {
padding: 24px;
}
img {
height: auto;
max-width: 100%;
}
.grid:nth-child(even) .col:last-child {
order:-1;
}
<div class="container">
<div class="grid">
<div class="col">
<h2>I'm A Title</h2>
<p>Here's some copy.</p>
</div>
<div class="col">
<img src="https://hackernoon.com/hn-images/1*mONNI1lG9VuiqovpnYqicA.jpeg">
</div>
</div><!-- .grid -->
<div class="grid">
<div class="col">
<h2>I'm A Title</h2>
<p>Here's some copy.</p>
</div>
<div class="col">
<img src="https://hackernoon.com/hn-images/1*mONNI1lG9VuiqovpnYqicA.jpeg">
</div>
</div><!-- .grid -->
<div class="grid">
<div class="col">
<h2>I'm A Title</h2>
<p>Here's some copy.</p>
</div>
<div class="col">
<img src="https://hackernoon.com/hn-images/1*mONNI1lG9VuiqovpnYqicA.jpeg">
</div>
</div><!-- .grid -->
</div><!-- .container -->
你也可以对 flexbox 做同样的事情:
.container {
width: 500px;
max-width: 100%;
margin: 0 auto;
}
.grid {
display: flex;
flex-flow: row wrap;
}
.col {
padding: 24px;
flex: 1;
}
img {
height: auto;
max-width: 100%;
}
.grid:nth-child(even) .col:last-child {
order:-1;
}
<div class="container">
<div class="grid">
<div class="col">
<h2>I'm A Title</h2>
<p>Here's some copy.</p>
</div>
<div class="col">
<img src="https://hackernoon.com/hn-images/1*mONNI1lG9VuiqovpnYqicA.jpeg">
</div>
</div><!-- .grid -->
<div class="grid">
<div class="col">
<h2>I'm A Title</h2>
<p>Here's some copy.</p>
</div>
<div class="col">
<img src="https://hackernoon.com/hn-images/1*mONNI1lG9VuiqovpnYqicA.jpeg">
</div>
</div><!-- .grid -->
<div class="grid">
<div class="col">
<h2>I'm A Title</h2>
<p>Here's some copy.</p>
</div>
<div class="col">
<img src="https://hackernoon.com/hn-images/1*mONNI1lG9VuiqovpnYqicA.jpeg">
</div>
</div><!-- .grid -->
</div><!-- .container -->
推荐阅读
- ruby-on-rails - 在 Rails 中使用 html 表单上传图片
- android - PreferenceActivity 中的内容通过 ToolBar
- kubernetes - Istio-Gateway 不使用 EKS v2 获取外部 IP
- google-chrome - 在 Google Colab 中右键单击的意外行为
- mysql - MAMP 5 如何关闭 MySQL 严格模式?
- c# - 尝试列出存储桶时 .net AWS SDK 的访问被拒绝
- javascript - 在 react-native 中显示大的 base64 图像字符串不起作用?
- spring - Flyway 以编程方式设置占位符
- c++ - 分配值时 char* 指针的 C++ 预增量与后增量
- laravel - Laravel Factory ->each() 添加迭代器