flex布局-均匀分布下换行导致的间隔不一致(适配不同手机屏幕)

一、背景:

最近做一个H5小需求,要求按图中布局,红线框内粉色部分要一致,图片间隔均分,同时适配各个手机,以及list数量不定。


需求.png

二、问题:

拿到这个需求,首先想到的是用flex布局,然后就出现了下图的问题,利用 justify-content: space-between; flex-wrap: wrap; 样式做到了两侧粉色部分留白是保持一致了,图片之间间隔均分也做到了,但是当超出一行排列时,换行后的list直接均分了整条宽度,导致和上行list间隔不一致

flex均分引发的换行间隔不一致.png

三、解决:

  1. 首先分析需要考虑的两个潜在要求:一是因为要适配各个手机屏幕,也就是 ul宽度不固定;二是list数量不一致,导致的 每行排列多少个list不固定,即 各个list间隔不固定
  2. 接下来,就是思考这两个问题的解决。宽度不固定可以联想到 @media进行响应式布局,因此结合 flex布局@media响应式布局,实现的效果如下:
    各个手机屏幕下list的排列.gif

四、代码:

  • index.html:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>flex布局</title>
    <link rel="stylesheet" href="./index.css">
</head>
<body>
    <div class="container">
        <ul>
            <li><div><img src="./images/test.jpg" alt="testImage"><p>test</p></div></li>
            <li><div><img src="./images/test.jpg" alt="testImage"><p>test</p></div></li>
            <li><div><img src="./images/test.jpg" alt="testImage"><p>test</p></div></li>
            <li><div><img src="./images/test.jpg" alt="testImage"><p>test</p></div></li>
            <li><div><img src="./images/test.jpg" alt="testImage"><p>test</p></div></li>
            <li><div><img src="./images/test.jpg" alt="testImage"><p>test</p></div></li>
        </ul>
    </div>
</body>
</html>
  • index.css:
* {
    padding: 0;
    margin: 0;
    list-style: none;
    text-align: center;
}
.container > ul {
    display: flex;
    flex-wrap: wrap;
    margin: 1rem;
    background-color: #f3e9eb;
    border-radius: 0.8rem;
}
.container > ul li {
    width: 25%;
    display: flex;
    justify-content: center;
}
@media screen and (max-width: 320px) {
    .container ul > li {
        width: 33%;
    }
}
@media screen and (min-width: 768px) {
    .container ul > li {
        width: 14%;
    }
}
.container > ul li > div {
    margin: 0.5rem;
}

自己在做这个需求时, li 是动态渲染进来的,因为数量不一致,这个简单demo就简单粗暴的写了几个,图片可自行修改,此例中仅供参考。

至此, 适配各个手机的flex布局(考虑换行情况)的demo就完成了。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • H5移动端知识点总结 阅读目录 移动开发基本知识点 calc基本用法 box-sizing的理解及使用 理解dis...
    Mx勇阅读 4,793评论 0 26
  • 移动开发基本知识点 一.使用rem作为单位 html { font-size: 100px; } @media(m...
    横冲直撞666阅读 3,686评论 0 6
  • 选择qi:是表达式 标签选择器 类选择器 属性选择器 继承属性: color,font,text-align,li...
    love2013阅读 2,413评论 0 11
  • 选择qi:是表达式 标签选择器 类选择器 属性选择器 继承属性: color,font,text-align,li...
    wzhiq896阅读 2,076评论 0 2
  • 我是个喜欢创新,不安于现状的人。我总想给生活添些色彩。比如画画,弹琴,去逛街,去旅游,出去吃吃美食,过节做点好吃的...
    桥焰阅读 275评论 0 0

友情链接更多精彩内容