Flex Grid布局

一、浏览器内核

  • Chrome浏览器:早期webkit内核,后来是chromium/blink 内核
  • IE浏览器:trident内核 ,win10 之后微软推出edge,用edge Html内核
  • 火狐浏览器:Gecko内核
  • opera浏览器:presto内核(弃用),后来webkit内核,后来Blink内核
  • Safari浏览器:webkit内核
  • 360/猎豹浏览器:trident内核+Blink内核
  • 搜狗/QQ浏览器:trident内核+webkit

二、flex布局 - 弹性盒子布局,一维布局

1、容器的属性

flex-direction
说明:设置布局方向
取值:row/横向,column/纵向,row-reverse/反向横向,column-reverse/反向纵向
默认:row/横向
flex-wrap
说明:是否换行
取值:wrap/换行,no-wrap/不换行,wrap-reverse/第一行在下放
默认:no-wrap/不换行

flex-flow
说明:flex-direction和flex-wrap简写
取值:flex-direction和flex-wrap的取值合并
默认:row no-wrap

justify-content
说明:主轴方向的对齐方式
取值:center/居中,flex-start/开头,flex-end/结尾,space-around/项目两侧相等,space-between/两端对齐项目等比例对齐
默认:flex-start

align-items
说明:交叉轴的对齐方式
取值:flex-start,flex-end,center,stretch/垂直方向上拉满(未设置高度或设为auto),baseline/项目第一行文字基线对齐
默认:stretch

align-content
说明:多轴线对齐方式
取值:flex-start,flex-end,center,stretch,space-around,space-between
默认:stretch

2、项目的属性(盒子里的每一项)

order
说明:排列顺序:数值越小排越前
取值:number
默认:
flex-grow
说明:放大比例
取值:0(存在剩余空间也不放大),1(存在剩余空间等比例放大)
默认:0
flex-shrink
说明:缩小比例
取值:0(空间不足不缩小),1(空间不足将项目缩小)
默认:0
flex-basis
说明:设置盒子的width/height
取值:number
默认:auto(盒子本来大小)
flex
说明:flex-grow/flex-shrink/flex-basis的简写
取值:flex-grow/flex-shrink/flex-basis取值合并
默认:(0,1,auto == auto), (0,0,auto == none)
algin-self
说明:设置某一个项目的对齐方式
取值:auto,flex-start,flex-end,center,stretch,baseline
默认:auto

三、grid布局 - 网格布局,二维布局

1、容器的属性

 
grid-template-colums
说明:每一列的宽度
取值:number,百分比,repeat(),fr/片段,minmax()/:取中间值,auto/浏览器自适应宽度,[c1]/给线取别名
例子:
grid-template-columns: repeat(2, 100px 20px 80px);还可以用repeat(数量,宽度-可以是多个值,也可以是一个值)
grid-template-columns: repeat(auto-fill, 100px); 每一列固定100px,根据盒子大小尽可能的多容纳项目
grid-template-columns: 1fr 2fr; // fr 片段,第二列是第一列的2倍,宽度自定义
grid-template-columns: 1fr 1fr minmax(100px, 1fr);//minmax:取中间值,表示列宽不小于100px,不大于1fr
grid-template-columns: 100px auto 100px; // auto浏览器自己觉得宽度
grid-template-columns: [c1] 100px [c2] 100px [c3] auto [c4];// 给线取别名

grid-template-rows
说明:每一行的高度
取值:跟【grid-template-colums】相同
grid-row-gap
说明:行间距
取值:number
默认:
grid-column-gap
说明:列间距
取值:number
默认:
grid-gap
说明:行/列间距 最新标准直接写gap
取值:number
默认:
grid-lemplate-area
说明:
取值:number
默认:
grid-auto-flow
说明:排列方向
取值:row,column,row dense, column dense(dense表示紧密排列尽量不留空格)
默认:row
justify-items
说明:设置单元格内容水平位置
取值:start,end,center,stretch
默认:start
align-items
说明:设置单元格内容垂直位置
取值:start,end,center,stretch
默认:start

【place-items】
说明:justify-items和align-items合并简写
取值:start,end,center,stretch
默认:place-items: <align-items> <justify-items>
justify-content
说明:整个内容区域在容器里面的水平位置
取值:start,end,center,stretch,space-around,space-between,space-evenly /项目与项目的间隔相等,项目与容器边框之间也是同样长度的间隔
默认:start

algin-content
说明:整个内容区域在容器里面的垂直位置
取值:justify-content】相同
默认:start
【place-content
说明:justify-content和align-content合并简写
取值:justify-content】相同
默认:place-content: <align-content> <justify-content>
grid-auto-rows / grid-auto-columns
说明: 一些项目的指定位置,在现有网格的外部,浏览器自动创建的多余网格的列宽和行高
取值:number
默认:固定位置项目的宽高
grid-template
说明: grid-template-columns、grid-template-rows,grid-lemplate-area合并简写
取值:number
默认:无

2、项目的属性

grid-column-start
说明:左边框所在的垂直网格线
取值:number,span:2(表示"跨越",即左右边框(上下边框)之间跨越2个网格)
例子:grid-column-start: 2; 右边框是第四根垂直网格线。
grid-column-end
说明:右边框所在的垂直网格线
取值:number,span:2(表示"跨越",即左右边框(上下边框)之间跨越2个网格)
例子:grid-column-end: 4;设置某个项目的左边框是第二根垂直网格线
grid-row-start
说明:上边框所在的水平网格线
取值:number,span:2(表示"跨越",即左右边框(上下边框)之间跨越2个网格)
默认:无
grid-row-end
说明:下边框所在的水平网格线
取值:number ,span:2(表示"跨越",即左右边框(上下边框)之间跨越2个网格)
默认:无
grid-column / grid-row
说明:下边框所在的水平网格线
取值:number 
例子:grid-column: 1 / 3; grid-row: 1 / 3;
grid-area
说明:指定项目放在哪一个区域
取值:any
例子:
justify-self
说明:设置某个单元格内容的水平位置
取值:start,end,center,stretch
例子:
align-self
说明:设置单元格内容的垂直位置
取值:start,end,center,stretch
例子:
place-self
说明:设置单元格内容的水平垂直位置
取值:start,end,center,stretch
例子:place-self: <align-self> <justify-self>;
### CSS Float、Flexbox 和 Grid 布局的使用场景与区别 #### 一、Float布局的特点及其适用范围 Float属性主要用于使元素脱离文档流并沿着其父级容器边缘浮动,通常用于创建多列布局或让文本环绕图片显示。然而,在现代Web开发实践中,由于它会引发一些复杂的行为(比如清除浮动问题),因此不推荐作为主要布局手段[^1]。 #### 二、Flexbox布局的优势及应用场景 Flexbox是一种灵活的一维布局模型,适用于处理单方向上的项目排列——无论是水平还是垂直方向都可以轻松应对。通过设置`display:flex`以及调整子项之间的间距、对齐方式等参数,能够快速构建响应式的组件结构,如导航菜单、工具栏或是卡片式界面设计[^2]。 ```css /* Flexbox 实现简单的两栏布局 */ .box { display: flex; } .left { width: 100px; padding-right: 12px; box-sizing: border-box; text-align: right; font-weight: 600; } .right { flex: 1; } ``` #### 三、Grid布局的功能特性与最佳实践领域 相较于仅能在单一轴向上操作的Flexbox而言,CSS Grid提供了更为强大的二维空间管理能力。借助于行列定义功能,开发者可以精确指定各个区域的具体位置,并且支持跨行/列单元格的操作,非常适合用来搭建复杂的页面框架或者是仪表盘类应用界面[^3]。 ```css /* Grid 创建一个基础网格 */ .container { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1rem; } .item { background-color: lightblue; padding: 1em; text-align: center; } ``` 综上所述,虽然这三种技术都能满足不同程度的需求,但在选择具体采用哪种方案时还需考虑实际项目的特性和预期效果: - 对于较为简单的内容排版需求,尤其是当只需要在一维内安排元素顺序的情况下,Flexbox通常是首选; - 如果涉及到更精细的空间规划,则应优先考虑利用Grid所提供的强大布局选项来完成任务; - 而对于那些遗留下来的旧版本浏览器兼容性要求较高的情况,可能不得不暂时依赖传统的Float方法来进行基本定位工作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值