我正在使用CSS Grid为我的网站构建服务列表。其中一个行在整个网站网格中被分成了两个CSS Grid列。
在第一行的第一列中,有一个服务的描述。在第二列中,有代表该服务的图像。
每一行都会交替出现描述和图像,因此在第二行,第一列中有一张图片,在第二列中有一个描述。请查看附带的图片以查看目前的工作情况(注意:我重新调整了图片大小以便于截屏)。
CSS Grid的移动版本是单列的。当我在移动版本中显示相同的内容时,布局不再起作用。由于我的布局由HTML内容决定(可能是一件坏事,我知道),标题将不总是显示在图像之上,这正是我想要的。请参见附件以查看问题。
我认为解决这个问题的答案在于使用
您能帮我找出如何正确创建交替的两列项目列表,当在单列列表中时也可以正确显示文本和图像吗?
我更喜欢使用CSS Grid / Flexbox /无脚本世界,但我很乐意接受其他想法。
非常感谢您提供的任何帮助!
HTML
在第一行的第一列中,有一个服务的描述。在第二列中,有代表该服务的图像。
每一行都会交替出现描述和图像,因此在第二行,第一列中有一张图片,在第二列中有一个描述。请查看附带的图片以查看目前的工作情况(注意:我重新调整了图片大小以便于截屏)。
CSS Grid的移动版本是单列的。当我在移动版本中显示相同的内容时,布局不再起作用。由于我的布局由HTML内容决定(可能是一件坏事,我知道),标题将不总是显示在图像之上,这正是我想要的。请参见附件以查看问题。
我认为解决这个问题的答案在于使用
flex-direction: row-reverse;
,然而,很难找到一些好的示例(也许是我搜索方式不对)。我能找到的最好的Codepen使用flex-direction实现了我想要的效果,但它并没有将描述和图像漂亮地放置在一个CSS Grid框中,所以在调整浏览器大小时,图像会重叠文字...这可能是由于我对Flexbox的使用知识不足(还在学习)。您能帮我找出如何正确创建交替的两列项目列表,当在单列列表中时也可以正确显示文本和图像吗?
我更喜欢使用CSS Grid / Flexbox /无脚本世界,但我很乐意接受其他想法。
非常感谢您提供的任何帮助!
HTML
<!-- Services area -->
<div class="services-area">
<div class="services-text">
<h3>This is service 1</h3>
</div>
<div class="services-div">
<img class="services-image" src="images/home/home-agile-transformation.png" alt="Agile transformation image.">
</div>
<div class="services-div">
<img class="services-image" src="images/home/home-agile-coaching.png" alt="Agile transformation image.">
</div>
<div class="services-text">
<h3>This is service 2</h3>
</div>
<div class="services-text">
<h3>This is service 3</h3>
</div>
<div class="services-div">
<img class="services-image" src="images/home/home-agile-sw-implementation.png" alt="Agile transformation image.">
</div>
</div>
CSS
// layout for services
// display a stacked grid <767 pixels
.services-area {
grid-area: svcs;
display: grid;
grid-template-columns: 1fr;
grid-template-rows: auto;
@if $debug { background-color: $debugServicesArea; }
}
// display a 2-column grid >768
@include for-size(full-size) {
.services-area {
grid-area: svcs;
display: grid;
grid-template-columns: 1fr 1fr;
grid-template-rows: auto;
margin-left: $gridMarginLeft;
margin-right: $gridMarginRight;
@if $debug { background-color: $debugServicesArea; }
}
}
.services-text {
display: grid;
align-items: center;
justify-content: center;
}
.services-image {
max-width: 100%;
height: auto;
}
nth-child
选择器为文本对齐添加样式。在网格的水平轴上,使用justify-self
。请参见 https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Grid_Layout/Box_Alignment_in_CSS_Grid_Layout 或 https://css-tricks.com/snippets/css/complete-guide-grid/ 获取所有可能的示例。网格是一种非常棒的布局工具。要了解更多信息,请访问 Jen Simmons 的 https://www.youtube.com/channel/UC7TizprGknbDalbHplROtag(以及她自己的网站),或者探索 Rachel Andrew 的 https://gridbyexample.com/。这两个资源都非常优秀。 - pecus