html - 具有 3 列的 Flex 容器:左侧的图像,图像后的内容居中和整个容器可点击
问题描述
我需要一个用于 PC 设备的 3 列(总共 9 项)的 flex 容器,整个容器必须是可点击的。容器左侧有图像,右侧有文本。
对于移动设备 > CSS@media
直到 800px 为一列。挑战是最新的 4 个容器在容器中具有不同的类或 ID,因为我只想为移动设备显示 5 个容器(将该类隐藏到设备直到 800 像素,显示:无)。
.myflex-container {
display: flex;
flex-direction: row;
font-size: 20px;
text-align: center;
}
.myflex-item-left,
.myflex-item-right {
flex: 50%;
margin: 10px;
}
img.imgoxauto {
height: 100%;
width: 74px;
}
.myprod-image {
height: 74px;
margin-right: 10px;
}
.myflex-item-left>a,
.myflex-item-right>a {
display: flex;
}
.clickable-card {
background-color: #fff;
box-shadow: 0 2px 6px rgba(0, 0, 0, 0.15);
margin-bottom: 10px;
}
.myflex-item-left>a,
.myflex-item-right>a {
display: flex;
align-items: center;
}
h5.texth5.myprod-name {
padding-bottom: 0;
}
<div class="myflex-container">
<div class="myflex-item-left">
<a href="https://www.example.com/abc" class="clickable-card">
<div class="myprod-image">
<img class="imgoxauto" src="https://i.imgur.com/GmtzHkT.jpg" alt="London" />
</div>
<div class="myprod-description">
<h5 class="texth5 myprod-name">London</h5>
</div>
</a>
<a href="https://www.example.com/abc" class="clickable-card">
<div class="myprod-image">
<img class="imgoxauto" src="https://i.imgur.com/jPGPiJN.jpg" alt="London" />
</div>
<div class="myprod-description">
<h5 class="texth5 myprod-name">Paris</h5>
</div>
</a>
<a href="https://www.example.com/abc" class="clickable-card">
<div class="myprod-image">
<img class="imgoxauto" src="https://i.imgur.com/HYZ1Ci5.jpg" alt="London" />
</div>
<div class="myprod-description">
<h5 class="texth5 myprod-name">Frankfurt</h5>
</div>
</a>
</div>
<div class="myflex-item-right">
<a href="https://www.example.com/xyz" class="clickable-card">
<div class="myprod-image">
<img class="imgoxauto" src="https://i.imgur.com/GmtzHkT.jpg" alt="Chicago" />
</div>
<div class="myprod-description">
<h5 class="texth5 myprod-name">Chicago</h5>
</div>
</a>
<a href="https://www.example.com/xyz" class="clickable-card">
<div class="myprod-image">
<img class="imgoxauto" src="https://i.imgur.com/0MAl65z.jpg" alt="Chicago" />
</div>
<div class="myprod-description">
<h5 class="texth5 myprod-name">New York</h5>
</div>
</a>
<a href="https://www.example.com/xyz" class="clickable-card">
<div class="myprod-image">
<img class="imgoxauto" src="https://i.imgur.com/GLLQ3VQ.jpg" alt="Chicago" />
</div>
<div class="myprod-description">
<h5 class="texth5 myprod-name">Geneva</h5>
</div>
</a>
<a href="https://www.example.com/xyz" class="clickable-card">
<div class="myprod-image">
<img class="imgoxauto" src="https://i.imgur.com/GmtzHkT.jpg" alt="Chicago" />
</div>
<div class="myprod-description">
<h5 class="texth5 myprod-name">Chicago</h5>
</div>
</a>
<a href="https://www.example.com/xyz" class="clickable-card">
<div class="myprod-image">
<img class="imgoxauto" src="https://i.imgur.com/0MAl65z.jpg" alt="Chicago" />
</div>
<div class="myprod-description">
<h5 class="texth5 myprod-name">New York</h5>
</div>
</a>
<a href="https://www.example.com/xyz" class="clickable-card">
<div class="myprod-image">
<img class="imgoxauto" src="https://i.imgur.com/GLLQ3VQ.jpg" alt="Chicago" />
</div>
<div class="myprod-description">
<h5 class="texth5 myprod-name">Geneva</h5>
</div>
</a>
</div>
</div>
解决方案
我会删除你的 my-flex 项目 div 并将 flex wrap 添加到容器中,然后你可以给你的卡片一个宽度并使用桌面媒体查询更改该宽度
.myflex-container {
display: flex;
flex-direction: row;
flex-wrap: wrap;
font-size: 20px;
text-align: center;
}
img.imgoxauto {
height: 100%;
width: 74px;
}
.myprod-image {
height: 74px;
margin-right: 10px;
}
.clickable-card {
width: calc(100% - 20px); /* one per column */
margin: 10px;
display: flex;
align-items: center;
background-color: #fff;
box-shadow: 0 2px 6px rgba(0, 0, 0, 0.15);
margin-bottom: 10px;
}
@media (min-width:800px) {
.clickable-card {
width: calc(50% - 20px); /* 2 per column above 800px */
}
}
@media (min-width:1024px) {
.clickable-card {
width: calc(33.33333% - 20px); /* 3 per column above 1024px */
}
}
h5.texth5.myprod-name {
padding-bottom: 0;
}
<div class="myflex-container">
<a href="https://www.example.com/abc" class="clickable-card">
<div class="myprod-image">
<img class="imgoxauto" src="https://i.imgur.com/GmtzHkT.jpg" alt="London" />
</div>
<div class="myprod-description">
<h5 class="texth5 myprod-name">London</h5>
</div>
</a>
<a href="https://www.example.com/abc" class="clickable-card">
<div class="myprod-image">
<img class="imgoxauto" src="https://i.imgur.com/jPGPiJN.jpg" alt="London" />
</div>
<div class="myprod-description">
<h5 class="texth5 myprod-name">Paris</h5>
</div>
</a>
<a href="https://www.example.com/abc" class="clickable-card">
<div class="myprod-image">
<img class="imgoxauto" src="https://i.imgur.com/HYZ1Ci5.jpg" alt="London" />
</div>
<div class="myprod-description">
<h5 class="texth5 myprod-name">Frankfurt</h5>
</div>
</a>
<a href="https://www.example.com/xyz" class="clickable-card">
<div class="myprod-image">
<img class="imgoxauto" src="https://i.imgur.com/GmtzHkT.jpg" alt="Chicago" />
</div>
<div class="myprod-description">
<h5 class="texth5 myprod-name">Chicago</h5>
</div>
</a>
<a href="https://www.example.com/xyz" class="clickable-card">
<div class="myprod-image">
<img class="imgoxauto" src="https://i.imgur.com/0MAl65z.jpg" alt="Chicago" />
</div>
<div class="myprod-description">
<h5 class="texth5 myprod-name">New York</h5>
</div>
</a>
<a href="https://www.example.com/xyz" class="clickable-card">
<div class="myprod-image">
<img class="imgoxauto" src="https://i.imgur.com/GLLQ3VQ.jpg" alt="Chicago" />
</div>
<div class="myprod-description">
<h5 class="texth5 myprod-name">Geneva</h5>
</div>
</a>
<a href="https://www.example.com/xyz" class="clickable-card">
<div class="myprod-image">
<img class="imgoxauto" src="https://i.imgur.com/GmtzHkT.jpg" alt="Chicago" />
</div>
<div class="myprod-description">
<h5 class="texth5 myprod-name">Chicago</h5>
</div>
</a>
<a href="https://www.example.com/xyz" class="clickable-card">
<div class="myprod-image">
<img class="imgoxauto" src="https://i.imgur.com/0MAl65z.jpg" alt="Chicago" />
</div>
<div class="myprod-description">
<h5 class="texth5 myprod-name">New York</h5>
</div>
</a>
<a href="https://www.example.com/xyz" class="clickable-card">
<div class="myprod-image">
<img class="imgoxauto" src="https://i.imgur.com/GLLQ3VQ.jpg" alt="Chicago" />
</div>
<div class="myprod-description">
<h5 class="texth5 myprod-name">Geneva</h5>
</div>
</a>
</div>
推荐阅读
- spring-boot - spring boot kubernetes ingress nginx Whitelabel 错误页面登录重定向
- node.js - 如何在nodejs的if语句中使用URL参数
- c - gcc 和 clang 不愿意懒惰地初始化一个部分使用的结构
- swift - Swift 可以为参数创建“OR”类型吗?
- xml - XSLT:用于剧本导入的嵌套 for-each 循环
- python - 如何在pytorch中对数据集进行排序
- javascript - 根据用户点击向所有页面添加样式表
- javascript - 将字符串添加到 innerHTML 问题 | 选择2
- javascript - 如何修复 Datatables 语言插件不起作用?
- swift - UIBarButtonItem 形状不正确