张家界网站建设方案,谷歌推广一年多少钱,成全视频免费观看在线看主演,seo工具优化引言
为什么存在#xff1f;
Flex 布局的出现是为了解决传统 CSS 布局方式#xff08;如浮动布局、定位布局等#xff09;在处理复杂布局时的诸多限制和不便。
优势
1. 简化布局
Flex 布局的语法简洁明了#xff0c;代码更易读。
2. 强大的对齐能力
提供丰富的对齐属…引言
为什么存在
Flex 布局的出现是为了解决传统 CSS 布局方式如浮动布局、定位布局等在处理复杂布局时的诸多限制和不便。
优势
1. 简化布局
Flex 布局的语法简洁明了代码更易读。
2. 强大的对齐能力
提供丰富的对齐属性如 justify-content 和 align-items轻松实现元素的对齐。
3. 响应式设计
天生支持响应式设计元素可以根据屏幕大小自动调整。
4. 解决传统布局难题
垂直居中
Flex 布局的基本概念
Flex 容器Flex Container与 Flex 项目Flex Item
在 Flex 布局中最基本的概念是 Flex 容器和 Flex 项目。 Flex 容器Flex Container这是应用了 display: flex 或 display: inline-flex 的元素。它是所有 Flex 项目的父元素负责控制其子元素的布局。 Flex 项目Flex Item这是 Flex 容器的直接子元素。Flex 项目会按照 Flex 容器设置的属性进行排列和对齐。
display: flex 与 display: inline-flex 的区别
display: flex 和 display: inline-flex 都用于定义一个 Flex 容器但它们在布局上有一些区别 display: flex将元素定义为块级 Flex 容器。这意味着容器会占据其父容器的整个宽度除非设置了宽度并且每个 Flex 容器都会在新行开始。 display: inline-flex将元素定义为行内 Flex 容器。这意味着容器只会根据其内容的大小来占据宽度并且多个行内 Flex 容器可以排列在同一行中。
Flex 容器与项目的层级关系
Flex 容器和 Flex 项目之间存在层级关系
1.Flex 容器作为父元素负责控制其子元素的布局。它可以设置各种 Flex 属性来影响子元素的排列和对齐。
2.Flex 项目作为子元素直接受到 Flex 容器的影响。它们会按照 Flex 容器的设置进行排列和对齐。
示例
!DOCTYPE html
html langen
headmeta charsetUTF-8meta nameviewport contentwidthdevice-width, initial-scale1titleFlex 布局示例/titlestyle/* .flex-container {display: flex; background-color: #f0f0f0;padding: 10px;}
.flex-item {background-color: #4CAF50;color: white;padding: 20px;margin: 5px;text-align: center;flex: 1; } */.flex-container{display: flex;background-color: pink;padding: 10px;}.flex-item {background-color: green;color: white;padding: 20px;margin: 5px;text-align: center;flex: 1;/* max-width: 100px; 扩展限制最大宽*/}/style
/head
body
div classflex-containerdiv classflex-item项目 1/divdiv classflex-item项目 2/divdiv classflex-item项目 3/div
/div
/body
/html
在这个示例中 .flex-container 是 Flex 容器设置了 display: flex。 .flex-item 是 Flex 项目直接受到 Flex 容器的控制。
通过调整 Flex 容器的属性可以控制 Flex 项目的排列和对齐。例如设置 flex-direction 可以改变项目的排列方向设置 justify-content 可以控制项目在主轴上的对齐方式设置 align-items 可以控制项目在交叉轴上的对齐方式。
主轴和交叉轴
在 Flex 布局中主轴和交叉轴是定义元素排列方式的两个关键概念 主轴Main Axis是 Flex 项目排列的主要方向可以通过 flex-direction 设置为水平默认从左到右或垂直。 交叉轴Cross Axis与主轴垂直的方向取决于主轴的方向设置。例如当主轴为水平时交叉轴为垂直方向。
设置主轴方向flex-direction
flex-direction 控制 Flex 容器的主轴方向有四种取值 row默认主轴为水平方向起点在左。 css复制代码.flex-container {display: flex;flex-direction: row;
} row-reverse主轴为水平方向起点在右。 css复制代码.flex-container {display: flex;flex-direction: row-reverse;
} column主轴为垂直方向起点在上。 css复制代码.flex-container {display: flex;flex-direction: column;
} column-reverse主轴为垂直方向起点在下。 css复制代码.flex-container {display: flex;flex-direction: column-reverse;
}
控制换行flex-wrap
flex-wrap 控制 Flex 项目是否换行 nowrap默认不换行所有项目都在一行/列。 css复制代码.flex-container {display: flex;flex-wrap: nowrap;
} wrap允许换行项目会自动换到下一行/列。 css复制代码.flex-container {display: flex;flex-wrap: wrap;
} wrap-reverse换行方向相反。 css复制代码.flex-container {display: flex;flex-wrap: wrap-reverse;
}
主轴对齐justify-content
justify-content 控制项目在主轴上的对齐方式 flex-start在主轴起点对齐默认。 flex-end在主轴终点对齐。 center在主轴中心对齐。 space-between均匀分布第一个项目在起点最后一个项目在终点。 space-around均匀分布每个项目两侧间距相等。
示例
css复制代码.flex-container {display: flex;justify-content: center;
}
交叉轴对齐align-items
align-items 控制项目在交叉轴上的对齐方式 flex-start在交叉轴起点对齐。 flex-end在交叉轴终点对齐。 center在交叉轴中心对齐。 baseline在项目文本基线对齐。 stretch默认项目拉伸以填满容器。
示例
css复制代码.flex-container {display: flex;align-items: center;
}
综合使用
通过组合 flex-direction、flex-wrap、justify-content 和 align-items 等属性可以轻松实现各种复杂的布局需求使得 Flex 布局在现代布局中极具灵活性和实用性。
Flex 布局的项目属性
Flex 布局提供了多个属性来控制 Flex 项目的行为和布局。以下是一些常用的项目属性
1. order控制项目的排列顺序
order 属性用于定义 Flex 项目在 Flex 容器中的排列顺序。默认情况下所有项目的 order 值都是 0。数值越小项目排列越靠前。
.item {order: integer; /* 默认值为 0 */
}
示例
!DOCTYPE html
html langen
headmeta charsetUTF-8meta nameviewport contentwidthdevice-width, initial-scale1titleFlex 布局示例/titlestyle.flex-container {display: flex;background-color: #f0f0f0;padding: 10px;}
.flex-item {background-color: #4CAF50;color: white;padding: 20px;margin: 5px;text-align: center;}
.item1 {order: 3;}
.item2 {order: 1;}
.item3 {order: 2;}/style
/head
body
div classflex-containerdiv classflex-item item1项目 1/divdiv classflex-item item2项目 2/divdiv classflex-item item3项目 3/div
/div
/body
/html
在这个示例中item2 的 order 值最小所以它会排在最前面。
2. flex-grow定义项目的放大比例
flex-grow 属性用于定义 Flex 项目在容器中有剩余空间时的放大比例。默认值为 0即不放大。
.item {flex-grow: number; /* 默认值为 0 */
}
示例
!DOCTYPE html
html langen
headmeta charsetUTF-8meta nameviewport contentwidthdevice-width, initial-scale1titleFlex 布局示例/titlestyle.flex-container {display: flex;background-color: #f0f0f0;padding: 10px;}
.flex-item {background-color: #4CAF50;color: white;padding: 20px;margin: 5px;text-align: center;flex-grow: 1;}
.item2 {flex-grow: 2;}/style
/head
body
div classflex-containerdiv classflex-item item1项目 1/divdiv classflex-item item2项目 2/divdiv classflex-item item3项目 3/div
/div
/body
/html
在这个示例中item2 的 flex-grow 值是 2而其他项目的 flex-grow 值是 1所以 item2 会占据更多的空间。
3. flex-shrink定义项目的缩小比例
flex-shrink 属性用于定义 Flex 项目在容器空间不足时的缩小比例。默认值为 1即项目会根据需要缩小。
.item {flex-shrink: number; /* 默认值为 1 */
}
示例
!DOCTYPE html
html langen
headmeta charsetUTF-8meta nameviewport contentwidthdevice-width, initial-scale1titleFlex 布局示例/titlestyle.flex-container {display: flex;background-color: #f0f0f0;padding: 10px;}
.flex-item {background-color: #4CAF50;color: white;padding: 20px;margin: 5px;text-align: center;flex-shrink: 1;}
.item2 {flex-shrink: 0;}/style
/head
body
div classflex-containerdiv classflex-item item1项目 1/divdiv classflex-item item2项目 2/divdiv classflex-item item3项目 3/div
/div
/body
/html
在这个示例中item2 的 flex-shrink 值是 0所以它不会缩小而其他项目会根据需要缩小。
4.flex-basis定义项目的初始尺寸
flex-basis 属性用于定义 Flex 项目在主轴方向上的初始尺寸。它可以设置为长度值如 px, em, %或 auto。默认值为 auto即项目的尺寸由内容决定。
.item {flex-basis: length | auto; /* 默认值为 auto */
}
示例
!DOCTYPE html
html langen
headmeta charsetUTF-8meta nameviewport contentwidthdevice-width, initial-scale1titleFlex 布局示例/titlestyle.flex-container {display: flex;background-color: #f0f0f0;padding: 10px;}
.flex-item {background-color: #4CAF50;color: white;padding: 20px;margin: 5px;text-align: center;flex-basis: 100px;}/style
/head
body
div classflex-containerdiv classflex-item item1项目 1/divdiv classflex-item item2项目 2/divdiv classflex-item item3项目 3/div
/div
/body
/html
在这个示例中所有项目的初始尺寸都是 100px。
5. align-self单独设置项目在交叉轴上的对齐方式
align-self 属性用于单独设置 Flex 项目在交叉轴上的对齐方式。它会覆盖 Flex 容器的 align-items 属性。默认值为 auto即继承容器的 align-items 属性。
.item {align-self: auto | flex-start | flex-end | center | baseline | stretch;
}
示例
!DOCTYPE html
html langen
headmeta charsetUTF-8meta nameviewport contentwidthdevice-width, initial-scale1titleFlex 布局示例/titlestyle.flex-container {display: flex;align-items: center;background-color: #f0f0f0;padding: 10px;height: 200px;}
.flex-item {background-color: #4CAF50;color: white;padding: 20px;margin: 5px;text-align: center;}
.item2 {align-self: flex-end;}/style
/head
body
div classflex-containerdiv classflex-item item1项目 1/divdiv classflex-item item2项目 2/divdiv classflex-item item3项目 3/div
/div
/body
/html
在这个示例中item2 的 align-self 值是 flex-end所以它会单独对齐到交叉轴的终点而其他项目会按照容器的 align-items 属性对齐到交叉轴的中心。
总结
优势
简化布局实现
响应式设计
局限性
低端浏览器适配 文章转载自: http://www.morning.nqxdg.cn.gov.cn.nqxdg.cn http://www.morning.c7495.cn.gov.cn.c7495.cn http://www.morning.lffbz.cn.gov.cn.lffbz.cn http://www.morning.yrmgh.cn.gov.cn.yrmgh.cn http://www.morning.fldsb.cn.gov.cn.fldsb.cn http://www.morning.gqtzb.cn.gov.cn.gqtzb.cn http://www.morning.kpqjr.cn.gov.cn.kpqjr.cn http://www.morning.lkpzx.cn.gov.cn.lkpzx.cn http://www.morning.tfqfm.cn.gov.cn.tfqfm.cn http://www.morning.nzsx.cn.gov.cn.nzsx.cn http://www.morning.dwgcx.cn.gov.cn.dwgcx.cn http://www.morning.wbns.cn.gov.cn.wbns.cn http://www.morning.lpsjs.com.gov.cn.lpsjs.com http://www.morning.ynlbj.cn.gov.cn.ynlbj.cn http://www.morning.xmrmk.cn.gov.cn.xmrmk.cn http://www.morning.deupp.com.gov.cn.deupp.com http://www.morning.zpzys.cn.gov.cn.zpzys.cn http://www.morning.kskpx.cn.gov.cn.kskpx.cn http://www.morning.qzbwmf.cn.gov.cn.qzbwmf.cn http://www.morning.wkqrp.cn.gov.cn.wkqrp.cn http://www.morning.dpqwq.cn.gov.cn.dpqwq.cn http://www.morning.syznh.cn.gov.cn.syznh.cn http://www.morning.kpcjl.cn.gov.cn.kpcjl.cn http://www.morning.uycvv.cn.gov.cn.uycvv.cn http://www.morning.jcjgh.cn.gov.cn.jcjgh.cn http://www.morning.fwlch.cn.gov.cn.fwlch.cn http://www.morning.nfbxgtj.com.gov.cn.nfbxgtj.com http://www.morning.lwtfx.cn.gov.cn.lwtfx.cn http://www.morning.xzrbd.cn.gov.cn.xzrbd.cn http://www.morning.rxlk.cn.gov.cn.rxlk.cn http://www.morning.kkysz.cn.gov.cn.kkysz.cn http://www.morning.hqlnp.cn.gov.cn.hqlnp.cn http://www.morning.mmsf.cn.gov.cn.mmsf.cn http://www.morning.qgjxt.cn.gov.cn.qgjxt.cn http://www.morning.gjcdr.cn.gov.cn.gjcdr.cn http://www.morning.jbmsp.cn.gov.cn.jbmsp.cn http://www.morning.blfgh.cn.gov.cn.blfgh.cn http://www.morning.tdqhs.cn.gov.cn.tdqhs.cn http://www.morning.qinhuangdjy.cn.gov.cn.qinhuangdjy.cn http://www.morning.litao7.cn.gov.cn.litao7.cn http://www.morning.jbysr.cn.gov.cn.jbysr.cn http://www.morning.ljyqn.cn.gov.cn.ljyqn.cn http://www.morning.fbtgp.cn.gov.cn.fbtgp.cn http://www.morning.kjcll.cn.gov.cn.kjcll.cn http://www.morning.xysdy.cn.gov.cn.xysdy.cn http://www.morning.rtsdz.cn.gov.cn.rtsdz.cn http://www.morning.jzkqg.cn.gov.cn.jzkqg.cn http://www.morning.lnrr.cn.gov.cn.lnrr.cn http://www.morning.ydhck.cn.gov.cn.ydhck.cn http://www.morning.jpkhn.cn.gov.cn.jpkhn.cn http://www.morning.npbnc.cn.gov.cn.npbnc.cn http://www.morning.cbpmq.cn.gov.cn.cbpmq.cn http://www.morning.mxftp.com.gov.cn.mxftp.com http://www.morning.cfhwn.cn.gov.cn.cfhwn.cn http://www.morning.ktcfl.cn.gov.cn.ktcfl.cn http://www.morning.kqxng.cn.gov.cn.kqxng.cn http://www.morning.cwjsz.cn.gov.cn.cwjsz.cn http://www.morning.rqknq.cn.gov.cn.rqknq.cn http://www.morning.pxsn.cn.gov.cn.pxsn.cn http://www.morning.hcwlq.cn.gov.cn.hcwlq.cn http://www.morning.wrbnh.cn.gov.cn.wrbnh.cn http://www.morning.bbyqz.cn.gov.cn.bbyqz.cn http://www.morning.krtky.cn.gov.cn.krtky.cn http://www.morning.fjntg.cn.gov.cn.fjntg.cn http://www.morning.jfmjq.cn.gov.cn.jfmjq.cn http://www.morning.fbqr.cn.gov.cn.fbqr.cn http://www.morning.rntyn.cn.gov.cn.rntyn.cn http://www.morning.bpwfr.cn.gov.cn.bpwfr.cn http://www.morning.crxdn.cn.gov.cn.crxdn.cn http://www.morning.bqppr.cn.gov.cn.bqppr.cn http://www.morning.tldhq.cn.gov.cn.tldhq.cn http://www.morning.ykrkb.cn.gov.cn.ykrkb.cn http://www.morning.dqkrf.cn.gov.cn.dqkrf.cn http://www.morning.ljxxl.cn.gov.cn.ljxxl.cn http://www.morning.pphgl.cn.gov.cn.pphgl.cn http://www.morning.ktlfb.cn.gov.cn.ktlfb.cn http://www.morning.nzfqw.cn.gov.cn.nzfqw.cn http://www.morning.lsnnc.cn.gov.cn.lsnnc.cn http://www.morning.qrksj.cn.gov.cn.qrksj.cn http://www.morning.rqfnl.cn.gov.cn.rqfnl.cn