首先情况是这样的(如下图

 

我们最终想要的效果应该既要平均分布又要最后一排依次从左向右排列

第一种解决方式

外层容器弹性盒子布局 且给外层盒子一个after 伪类 元素

.wrap{
   width: 200px;
   height: 200px;
   display: flex;
   // 使其换行展示
   flex-wrap: wrap;
   // 且首个元素放置于起点 末尾元素放置于终点
   justify-content: space-between;
}
 
//  此处可以理解使用元素进行占位
.wrap::after{
  content: "";
  width: 60px;
} 

 

虽然但是

每行出现多于三个元素时 就会出现下图情况

这个时候我们就要考虑第二种解决方式

第二种解决方式

使用 Grid布局 (号称是最强大的CSS布局方案

.wrap{
   margin: 50px auto;
   width: 200px;
   height: 200px;
   display: grid;
   justify-content: space-between;
   // 划分功能函数关键字 repeatauto-fill,45px)
   // 根据子元素盒子的份额自动计算可以平铺几次
   grid-template-columns: repeat(auto-fill,45px);
   // grid-gaprow-gapcolumn-gap简写形式。
   grid-gap: 0 1px;
}

最终来总结flex布局和Grid布局的区别吧 ~

flex布局是一维布局 Grid布局是二维布局

flex布局是轴线布局 只能指定项目针对轴线的位置

Grid 布局则是将容器划分成“行”和“列”,产生单元格然后指定项目所在”的单元格

注意:Grid布局存在兼容性问题 具体使用还是要根据需求

flex布局中flex:1和flex:auto区别

首先flex 复合属性添加给子元素的

那咱们先来看flex 中的各个参数

默认值为: flex:0 1 auto;(默认不放大 放不下了缩小 优先采用自己本身宽度

flex:1

flex:1 1 0%; 有剩余空间就放大,空间不够就缩小,项目长度为0

<div class="wrap">
    <div class="box">养乐多</div>
    <div class="box">不,是羊乐多多多多</div>
    <div class="box">羊乐多多多多喝养乐多</div>
 </div>
 
.wrap{
    height: 100px;
    display: flex;
}
.box{
    border: 2px solid yellowgreen;
    flex: 1;
}

 

 

 

flex:auto

flex:1 1 auto;有剩余空间就放大,空间不够就缩小,项目长度为原本的长度

 <div class="wrap">
    <div class="box">养乐多</div>
    <div class="box">不,是羊乐多多多多</div>
    <div class="box">羊乐多多多多喝养乐多</div>
 </div>
 
.wrap{
    height: 100px;
    display: flex;
}
.box{
    border: 2px solid yellowgreen;
    flex: auto;
}

 

所以得出结论 ~

flex:1flex:auto区别主要是在于 flex-basis

flex:1 不管内容多少,一般都是平分空间,空间大小都一致

flex:auto 是根据内容大小来分,不是平的(除非内容都是一样,才平分

原文地址:https://blog.csdn.net/sunruicai/article/details/128852647

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_45092.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注