广告位联系
返回顶部
分享到

flex布局下两端对齐,不满左对齐

CSS/HTML 来源:互联网 作者:佚名 发布时间:2022-12-25 16:49:56 人浏览
摘要

弹性布局多列换行居左布局 解决方案一 问题情境: 在flex布局下,多行排列,如何让flex布局最后一行没有排满时,向左对齐排列且与上面的行间距相同。 实现效果: 1 2 3 4 5 6 7 8 9 10

弹性布局多列换行居左布局

解决方案一

问题情境:

在flex布局下,多行排列,如何让flex布局最后一行没有排满时,向左对齐排列且与上面的行间距相同。

在这里插入图片描述

实现效果:

在这里插入图片描述

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

<!DOCTYPE html>

<html>

    <head>

        <meta charset="utf-8">

        <title></title>

    </head>

    <style type="text/css">

        li {

            list-style: none;

        }

 

        .List {

            width: 100%;

            box-sizing: border-box;

            display: flex;

            justify-content: space-between;

            flex-wrap: wrap;

            padding: 10px;

        }

        .List:after{

            content: "";

            flex: auto;

        }

 

        .item {

            /* 宽度是固定好的 */

            width: 220px;

            height: 60px;

            background-color: azure;

            margin-bottom: 10px;

            border: 1px solid red;

            /*这个数值需要自己去调*/

            margin-right: 17px;

        }

        .item:nth-child(5n){

            /* 尽量让item在list中居中,两边都没有margin */

            margin-right: 0;

        }

         

    </style>

    <body>

        <div id="" style="width: 1200px;margin: auto;background-color: #cccccc;height: 500px;">

            <ul class="List">

                <li class="item"></li>

                <li class="item"></li>

                <li class="item"></li>

                <li class="item"></li>

                <li class="item"></li>

                <li class="item"></li>

                <li class="item"></li>

                <li class="item"></li>

                <li class="item"></li>

                <li class="item"></li>

                <li class="item"></li>

                <li class="item"></li>

                <li class="item"></li>

                 

            </ul>

        </div>

 

    </body>

</html>

重要代码:要加after以及每个item的margin-right

1

2

3

4

.List:after{

        content: "";

        flex: auto;

    }

解决方案二

在用flex布局的时候遇到了下面这种问题,这是我的结构

1

2

3

<div class="videoMain">

     <div class="video" v-for="num in 8" :key="num"></div>

 </div>

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

.videoMain{

       display: flex;

       flex-wrap: wrap;

       justify-content: space-between;

       align-content: flex-start;

       height: 100%;

       overflow-y: auto;

        

       .video{

           width: 342px;

           height: 210px;

           margin-bottom:10px;

           background-color: cyan;

       }

    }

当我使用 justify-content:space-between 或者 space-around 的时候页面效果是这样的

在这里插入图片描述

很明显最后一行的三个元素我想让他左对齐,看到网上有说给父级元素加上伪类,我试了试

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

.videoMain{

        display: flex;

        flex-wrap: wrap;

        justify-content: space-between;

        align-content: flex-start;

        width: 100%;

        height: 100%;

        overflow-y: auto;

         

         

        .video{

            width: 342px;

            height: 210px;

            margin-bottom:10px;

            background-color: cyan;

        }

        i{

            width: 342px;

        }

     }

     .videoMain::after{

        content: '';

        flex: auto; // 或者1

     }

最后效果是这样的,最后一行都连上了(第一张图),也没有达到我想要的左对齐的效果,写margin-right之后和上面的又不对齐了(第二张图),不知道为什么别人说的就可以,有知道的也可以评论告诉我。

在这里插入图片描述

在这里插入图片描述

个人的解决方案

加了3个i标签,并把它的宽度设置的和.video的宽度一样,没有高度,这样的做的目的是最后一行差的给它补上,所以它会自动对齐,又因为没有写高度,所以页面中什么也不会显示

1

2

3

4

<div class="videoMain">

  <div class="video" v-for="num in 8" :key="num"></div>

    <i v-for="num in 3" :key="num"></i>

</div>

1

2

3

i{

   width: 342px;

}

在这里插入图片描述

这样就实现了底部和上面对齐的效果啦!

解释一下为什么我加了三个 i 标签

因为我的满行最多是五个div,底部多出一个div的时候,效果是没有影响的,当底部多出两个div的时候,显示在最前面和最后面的位置,这个不是我预期的效果,所以需要添加三个 i 标签来补齐,当底部是三个div的时候,同一行后面跟着两个 i 标签,下一行又有一个 i 标签,但是由于 i 标签没有高度,所以就和没有一样,视觉上就实现了我们想要的效果,无论页面的宽度怎么变,效果是不变的。

解决方案三

最近uni-app开发出现一个页面效果:多行三列左右对齐,超出换行左对齐,网上查了很多都没有能有效解决这个问题,而且这个在手机app上属于比较特殊的情况,UI效果:

在这里插入图片描述

我这里就讲自己如何解决这个问题:
首先一个问题考虑到最后一行不满的情况,如果使用左右两端对齐,很明显最后一行,如果是两列呢?例如这个:

在这里插入图片描述

此时,就不满足左对齐了!

这个情况是会遇到的。比如,我们用v-for循环渲染内容,后台随机增加标签内容,就无法避免出现上面两端对齐的问题了!

所以考虑到特殊情况作了如下改动,上代码:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

<view class="itemBox">

    <view class="item">

        仪表仪器

    </view>

    <view class="item">

        仪表仪器

    </view>

    <view class="item">

        仪表仪器

    </view>

    <view class="item">

        仪表仪器

    </view>

    <view class="item">

        仪表仪器

    </view>

    <view class="item">

        仪表仪器

    </view>

</view>

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

.itemBox {

    width: auto;

    display: flex;

    /* 两端对齐 */

    justify-content: space-between;

    flex-wrap: wrap;

 

    .item {

        width: 32.5%;

        height: 60rpx;

        text-align: center;

        line-height: 60rpx;

        background-color: #F2F2F2;

        font-size: 32rpx;

        font-family: PingFang SC;

        font-weight: 400;

        margin-top: 20rpx;

    }

     

    /* 如果最后一行是3个元素 */

    .item:last-child:nth-child(3n - 1) {

        margin-right: calc(32.5% + 3% / 3);

    }

    /* 如果最后一行是2个元素 */

    .item:last-child:nth-child(3n - 2) {

        margin-right: calc(65% + 6% / 3);

    }

}

最后效果:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

很完美的解决了最后一行不满一列、两列不是左对齐的情况!


版权声明 : 本文内容来源于互联网或用户自行发布贡献,该文观点仅代表原作者本人。本站仅提供信息存储空间服务和不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权, 违法违规的内容, 请发送邮件至2530232025#qq.cn(#换@)举报,一经查实,本站将立刻删除。

您可能感兴趣的文章 :

原文链接 : https://blog.csdn.net/qq_35779070/article/details/107211103
相关文章
  • js开发中的页面、屏幕、浏览器的位置原理(高度

    js开发中的页面、屏幕、浏览器的位置原理(高度
    前端js开发中我们常遇到对页面、屏幕、浏览器宽高和位置的获取问题,有时间查到了js的实现代码,但是不知道为什么。本篇图文并茂讲解
  • flex布局下两端对齐,不满左对齐
    弹性布局多列换行居左布局 解决方案一 问题情境: 在flex布局下,多行排列,如何让flex布局最后一行没有排满时,向左对齐排列且与上面的
  • flex(弹性布局)教程之常用布局介绍
    2009年,W3C 提出了一种新的方案----Flex 布局,可以简便、完整、响应式地实现各种页面布局。目前,它已经得到了所有浏览器的支持,这意味
  • HTML常用标签超详细整理

    HTML常用标签超详细整理
    HTML概述 1.1 什么是HTML HTML是做网站的、Web开发、互联网生态开发(PC端+移动端+微应用) 目前我们使用的都是HTML5,支持传统的PC端开发,还支持
  • CSS将div内容垂直居中的介绍

    CSS将div内容垂直居中的介绍
    一、行高(line-height)法 如果要垂直居中的只有一行或几个文字,那它的制作最为简单,只要让文字的行高和容器的高度相同即可,比如:
  • 详解CSS基础知识和样式
    什么是CSS CSS(Cascading Style Sheet):层叠样式表语言。 CSS的作用是: 修饰HTML页面,设置HTML页面中的某些元素的样式,让HTML页面更好看。 在HTM
  • CSS不受控制的position fixed的介绍

    CSS不受控制的position fixed的介绍
    失效的 position:fixed 在许多情况下,position:fixed将会失效。MDN用一句话概括了这种情况: 当元素祖先的 transform 属性非 none 时,定位容器由视
  • CSS故障艺术的介绍

    CSS故障艺术的介绍
    概述 本文的主题是 Glitch Art,故障艺术。 什么是故障艺术?我们熟知的抖音的 LOGO 正是故障艺术其中一种表现形式。它有一种魔幻的感觉,
  • CSS不规则边框的生成方案的介绍

    CSS不规则边框的生成方案的介绍
    需求背景,给不规则图形添加边框 在我们日常开发中,时长会遇到一些非矩形、非圆形的图案。类似下面这些: 使用纯 CSS,搭配一些技巧
  • CSS玩转图片Base64编码的介绍

    CSS玩转图片Base64编码的介绍
    什么是 base64 编码? 我不是来讲概念的,直接切入正题,图片的 base64 编码就是可以将一副图片数据编码成一串字符串,使用该字符串代替图
  • 本站所有内容来源于互联网或用户自行发布,本站仅提供信息存储空间服务,不拥有版权,不承担法律责任。如有侵犯您的权益,请您联系站长处理!
  • Copyright © 2017-2022 F11.CN All Rights Reserved. F11站长开发者网 版权所有 | 苏ICP备2022031554号-1 | 51LA统计