CSS 网格 - 每隔一张卡片翻转一次(行)
CSS Grid - Flip every other card (rows)
我正在构建一个带有 CSS 网格的服务页面,我想每隔一行翻转一次。
所以第二行左边是图片,右边是文字。第三个应该和第一个一样,以此类推。什么是最简单的解决方案?
谢谢!
Link 至
Codepen
.servicios-container {}
.servicios-card {
margin: 100px 200px;
display: grid;
align-items: center;
grid-template-columns: 1.5fr 1fr;
grid-gap: 140px;
}
.servicios-card img {
width: 100%;
border-radius: 50px;
}
.servicios-texto h2 {
font-size: 46px;
}
.servicios-texto p {
font-size: 20px;
}
<div class="servicios-container">
<div class="servicios-card">
<div class="servicios-texto">
<h2>Edición de audio</h2>
<p>Lorem ipsum, dolor sit amet consectetur adipisicing elit. Dignissimos laboriosam, nobis quidem eius sit excepturi, minima modi cum, incidunt quo repellat odio adipisci reiciendis quis earum aliquam optio consectetur fugiat.</p>
<form action="#">
<button class="contacto-btn m-top" type="submit">Mas información</button>
</form>
</div>
<img src="https://placeimg.com/450/300/tech" />
</div>
<!-- this card should have the img on the left-side -->
<div class="servicios-card">
<img src="img\Estudio-de-grabación-servicios-Solistas.jpg" alt="">
</div>
<!-- this card should have the img on the right-side as the first card -->
<div class="servicios-card">
<img src="img\Estudio-de-grabación-servicios-Video.jpg" alt="">
</div>
</div>
使用nth-child(even) pseudo-selector定位所有偶数元素并更新其children
的列
.servicios-card:nth-child(even) .servicios-texto {
grid-column: 2;
}
.servicios-card:nth-child(even) img {
grid-column: 1;
grid-row: 1;
}
在你的情况下,因为你有不均匀的列,你还必须为每个偶数元素更新你的网格
.servicios-card:nth-child(even) {
grid-template-columns: 1fr 1.5fr;
}
编辑:有一个更聪明的解决方案。
使用网格模板区域会使它更干净
将您的包装器元素更新为类似这样的东西
.servicios-card {
margin: 100px 200px;
display: grid;
align-items: center;
grid-template-columns: 1.5fr 1fr;
grid-template-areas:
"img text";
grid-gap: 140px;
}
在这里,您要为 child 元素创建区域,因此您只需切换每个偶数元素的区域和列大小。
将 children 分配给您的网格区域
.servicios-card img {
grid-area: img;
}
.servicios-texto {
grid-area: text;
}
然后,以偶数为目标施展魔法。
.servicios-card:nth-child(even) {
grid-template-areas:
"text img";
grid-template-columns: 1fr 1.5fr
}
我正在构建一个带有 CSS 网格的服务页面,我想每隔一行翻转一次。 所以第二行左边是图片,右边是文字。第三个应该和第一个一样,以此类推。什么是最简单的解决方案?
谢谢!
Link 至 Codepen
.servicios-container {}
.servicios-card {
margin: 100px 200px;
display: grid;
align-items: center;
grid-template-columns: 1.5fr 1fr;
grid-gap: 140px;
}
.servicios-card img {
width: 100%;
border-radius: 50px;
}
.servicios-texto h2 {
font-size: 46px;
}
.servicios-texto p {
font-size: 20px;
}
<div class="servicios-container">
<div class="servicios-card">
<div class="servicios-texto">
<h2>Edición de audio</h2>
<p>Lorem ipsum, dolor sit amet consectetur adipisicing elit. Dignissimos laboriosam, nobis quidem eius sit excepturi, minima modi cum, incidunt quo repellat odio adipisci reiciendis quis earum aliquam optio consectetur fugiat.</p>
<form action="#">
<button class="contacto-btn m-top" type="submit">Mas información</button>
</form>
</div>
<img src="https://placeimg.com/450/300/tech" />
</div>
<!-- this card should have the img on the left-side -->
<div class="servicios-card">
<img src="img\Estudio-de-grabación-servicios-Solistas.jpg" alt="">
</div>
<!-- this card should have the img on the right-side as the first card -->
<div class="servicios-card">
<img src="img\Estudio-de-grabación-servicios-Video.jpg" alt="">
</div>
</div>
使用nth-child(even) pseudo-selector定位所有偶数元素并更新其children
的列.servicios-card:nth-child(even) .servicios-texto {
grid-column: 2;
}
.servicios-card:nth-child(even) img {
grid-column: 1;
grid-row: 1;
}
在你的情况下,因为你有不均匀的列,你还必须为每个偶数元素更新你的网格
.servicios-card:nth-child(even) {
grid-template-columns: 1fr 1.5fr;
}
编辑:有一个更聪明的解决方案。
使用网格模板区域会使它更干净
将您的包装器元素更新为类似这样的东西
.servicios-card {
margin: 100px 200px;
display: grid;
align-items: center;
grid-template-columns: 1.5fr 1fr;
grid-template-areas:
"img text";
grid-gap: 140px;
}
在这里,您要为 child 元素创建区域,因此您只需切换每个偶数元素的区域和列大小。
将 children 分配给您的网格区域
.servicios-card img {
grid-area: img;
}
.servicios-texto {
grid-area: text;
}
然后,以偶数为目标施展魔法。
.servicios-card:nth-child(even) {
grid-template-areas:
"text img";
grid-template-columns: 1fr 1.5fr
}