html - Flex 响应式移动
问题描述
再会。
我有示例 flex 布局
<style>
.items {
display: flex;
flex-wrap: wrap;
margin-left: -10px;
margin-top: -10px;
}
.items .item {
flex: 1 0 200px;
box-sizing: border-box;
background: #e0ddd5;
color: #171e42;
padding: 10px;
margin-left: 10px;
margin-top: 10px;
}
</style>
<div class="items">
<div class="item">Heriberto Nickel</div>
<div class="item">Brittaney Haliburton</div>
<div class="item">Maritza Winkler</div>
<div class="item">Carmon Rigg</div>
<div class="item">Alice Marmon</div>
<div class="item">Lyman Steakley</div>
<div class="item">Zenia Correa</div>
</div>
所以当我是浏览器窗口的大小时,一切正常(见下图)
但是如果我使用开发工具 chrome(见下图)
你可以看到一切工作不正常——我需要每一行都在彼此之下。(见下图)
请告诉我如何解决它。谢谢
解决方案
您可以将.items
初始设置flex: 1 0 100%
为 200 像素,而不是 200 像素,这将强制每个元素位于其自己的行上,然后当视口处于特定宽度或更大时,使用媒体查询flex-basis
将元素的 设置为 200 像素。.item
在下面的示例中,我指定视口的宽度必须至少为 400 像素才能触发更改,但您可以将其更改为适合您目的的任何值。
您可以在此处阅读有关媒体查询的更多信息。
<style>
.items {
display: flex;
flex-wrap: wrap;
margin-left: -10px;
margin-top: -10px;
}
.items .item {
flex: 1 0 100%;
box-sizing: border-box;
background: #e0ddd5;
color: #171e42;
padding: 10px;
margin-left: 10px;
margin-top: 10px;
}
@media screen and (min-width: 400px) {
.items .item {
flex-basis: 200px;
}
}
</style>
<div class="items">
<div class="item">Heriberto Nickel</div>
<div class="item">Brittaney Haliburton</div>
<div class="item">Maritza Winkler</div>
<div class="item">Carmon Rigg</div>
<div class="item">Alice Marmon</div>
<div class="item">Lyman Steakley</div>
<div class="item">Zenia Correa</div>
</div>
推荐阅读
- java - 如何弄清楚为什么 TestNG 套件会跳过某个测试?
- javascript - 使用 CDN 清除页面内容
- python - 如何用python中的输入替换命令行参数?
- json - 如何在颤振中解析json响应?
- python - 为什么我的 python 代码在 Visual Studio 上运行完美但在终端中中断?
- java - Spring Batch CommandLineJobRunner Config 类被忽略
- python - Pygame-太空侵略者子弹
- c++ - 从 QT 的 MainWindow 中的另一个函数更新标签
- javascript - Safari 中的 SVG 错误(使用 iframe 加载)
- reactjs - 使用酶设置 redux 连接反应组件的状态