CSS布局(一)flex一篇搞定

目录

一、flex布局

1.1. 认识flex布局

1.2. flex布局重要的概念

二、flex container中的属性

2.1.flex-direction

2.2.flex-wrap、flex-flow

2.3.justify-content

2.4.align-items

2.5.align-content

三、 flex item中的属性

3.1.order

3.2.align-self

3.3.flex-grow、flex-shrink

3.4.flex-basis

3.5.flex

四、 flex布局中justify-content最后一行布局问题


一、flex布局

1.1. 认识flex布局

1.2. flex布局重要的概念

  • flex container

  • flex item

  • main axis/cross axios

  • main start/main end/cross start / cross end

二、flex container中的属性

2.1.flex-direction

  <style>
    .box{
      width: 500px;
      height: 500px;
      background-color: pink;
      display: flex;
      /* 默认是row  row-reverse反个方向*/
      /* 方向改为列 culumn  culumn-reverse反个方向*/
      flex-direction:column-reverse;
    }
    .item{
      width: 50px;
      height: 120px;
    }
  </style>
</head>
<body>
  <div class="box">
    <div class="item item1" >1</div>
    <div class="item item2" >2</div>
    <div class="item item3" >3</div>
    <div class="item item4" >4</div>
    <div class="item item5" >5</div>
  </div>
</body>

2.2.flex-wrap、flex-flow

  <style>
    .box{
      width: 500px;
      height: 500px;
      background-color: pink;
      display: flex;
      /* wrap 默认nowrap 弹性item会压缩 */
      /* wrap换行 上面是第一行如然后第二行 */
      /* wrap-reverse 最下面是第一行 */
      /* flex-wrap: wrap-reverse; */


      /*flex-flow 复合属性 */
      flex-flow: column wrap-reverse;
    }
    .item{
      width: 150px;
      height: 120px;
    }
  </style>
</head>
<body>
  <div class="box">
    <div class="item item1" >1</div>
    <div class="item item2" >2</div>
    <div class="item item3" >3</div>
    <div class="item item4" >4</div>
    <div class="item item5" >5</div>
  </div>

2.3.justify-content

  <style>
    .box{
      width: 500px;
      height: 500px;
      background-color: pink;
      display: flex;
      /* 切换justify-content */
      /* flex-start:让元素和主轴的start方向对齐 */
      /* flex-end:让元素和主轴的end方向对齐 */
      /* center:居中对齐 */
      /* space-between:两端放一个元素,让其余元素一定要空间等分 */
      /* space-evenly:两端也有间距,并且所有空间进行等分 */
      /* space-around:两端也有间距,两端的间距是items中间的间距的一半*/
      justify-content: space-evenly
    }
    .item{
      width: 100px;
      height: 120px;
    }
  </style>
</head>
<body>
  <div class="box">
    <div class="item item1" >1</div>
    <div class="item item2" >2</div>
    <div class="item item3" >3</div>
  </div>

2.4.align-items

  <style>
    .box{
      width: 500px;
      height: 500px;
      background-color: pink;
      display: flex;
      /* align-items: flex-end; */
      align-items: center;
    }
    .item1{
      width: 100px;
      height: 120px;
      background-color: red;
    }
    .item2{
      width: 100px;
      height: 60px;
      background-color:blue;
    }
    .item3{
      width: 100px;
      height: 200px;
      background-color: skyblue;
    }

  </style>
</head>
<body>
  <div class="box">
    <div class="item item1" >1</div>
    <div class="item item2" >2</div>
    <div class="item item3" >3</div>
  </div>
</body>

2.5.align-content

  <style>
    .box{
      width: 500px;
      height: 500px;
      background-color: pink;
      display: flex;
      flex-wrap: wrap;
      /* 多行在交叉轴上怎么排布 和justify-content一样*/
      /* align-content: center; */
      align-content: space-between;
    }
    .item{
      width: 100px;
      height: 120px;
      background-color: red;
    }

  </style>
</head>
<body>
  <div class="box">
    <div class="item item1" >1</div>
    <div class="item item2" >2</div>
    <div class="item item3" >3</div>
    <div class="item item1" >1</div>
    <div class="item item2" >2</div>
    <div class="item item3" >3</div>
    <div class="item item1" >1</div>
    <div class="item item2" >2</div>
    <div class="item item3" >3</div>
    <div class="item item1" >1</div>
    <div class="item item2" >2</div>
    <div class="item item3" >3</div>
    
  </div>
</body>

三、 flex item中的属性

3.1.order

  <style>
    .box{
      width: 500px;
      height: 500px;
      background-color: pink;
      display: flex;
    }
    .item{
      width: 100px;
      height: 120px;
      background-color: red;
    }
    /* order值越小越排在前面 */
    .item1{
     order:2;
    }
    .item2{
     order:1;
    }
    .item3{
     order:5;
    }

  </style>
</head>
<body>
  <div class="box">
    <div class="item item1" >1</div>
    <div class="item item2" >2</div>
    <div class="item item3" >3</div>
  </div>
</body>

3.2.align-self

  <style>
    .box{
      width: 500px;
      height: 500px;
      background-color: pink;
      display: flex;
      align-items: center;
    }
    .item{
      width: 100px;
      height: 120px;
      background-color: red;
    }
    .item1{
     height: 100px;
     /* 单独设置在交叉轴的对齐方式 */
     align-self: flex-start;
    }
    .item2{
     height: 50px;
    }
    .item3{
      height: 120px;
    }

  </style>
</head>
<body>
  <div class="box">
    <div class="item item1" >1</div>
    <div class="item item2" >2</div>
    <div class="item item3" >3</div>

    
  </div>
</body>

3.3.flex-grow、flex-shrink

  <style>
    .box{
      width: 500px;
      height: 500px;
      background-color: pink;
      display: flex;
      align-items: center;
    }
    .item{
      width: 200px;
      height: 120px;
      /* 默认值是1 都会进行压缩 */
      flex-shrink: 0;
      background-color: red;
    }
    .item1{
      /* 有剩余空间时 分配给这个item1份 */
      /* flex-grow: 1; */

      /*当放不下的时候 默认每个元素会进行平均压缩 */
      /* 设置了两个flex-shrink 就它们两会进行压缩 */
      flex-shrink: 1;
    }
    .item2{
      /* 有剩余空间时 分配给这个item2份 */
      /* flex-grow: 2; */

      flex-shrink: 1;
    }

  </style>
</head>
<body>
  <div class="box">
    <div class="item item1" >1</div>
    <div class="item item2" >2</div>
    <div class="item item3" >3</div>
    <div class="item item4" >4</div>
    <div class="item item5" >5</div>
    <div class="item item6" >6</div>
  </div>

3.4.flex-basis

  <style>
    .box{
      width: 500px;
      height: 500px;
      background-color: pink;
      display: flex;
    }
    .item{
      /* width: 100px; */
      height: 120px;
      /* 基础尺寸是100 当有一个完整的单词显示不下的时候 会进行拉伸让它显示 */
      flex-basis: 100px;
    }


  </style>
</head>
<body>
  <div class="box">
    <div class="item item1" >1csdfa_fsfadfada_fsfafafaftre</div>
    <div class="item item2" >2</div>
    <div class="item item3" >3</div>

    
  </div>
</body>

3.5.flex

四、 flex布局中justify-content最后一行布局问题

就是在后面加几个span并且宽度要和item宽度一样 要的span数量为一行的item数减2

  <style>
    .box{
      width: 500px;
      background-color: pink;
      display: flex;
      flex-wrap: wrap;
      justify-content: space-between;
    }
    .item{
      width: 110px;
      height: 150px;
      background-color: red;
    }

    .box > span{
      width: 110px;
    }
  </style>
</head>
<body>
  <div class="box">
    <div class="item item1" >1</div>
    <div class="item item2" >2</div>
    <div class="item item3" >3</div>
    <div class="item item4" >4</div>
    <div class="item item1" >1</div>
    <div class="item item2" >2</div>
    <div class="item item3" >3</div>
    <div class="item item4" >4</div>
    <div class="item item1" >1</div>
    <div class="item item2" >2</div>
    <div class="item item3" >3</div>
    <span></span><span></span>
  </div>
</body>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值