Flexbox(伸缩布局盒) 是 CSS3 中一个新的布局模式,为了现代网络中更为复杂的网页需求而设计。
Flexbox 由 伸缩容器 和 伸缩项目 组成。通过设置元素的 display 属性为 flex 或 inline-flex 可以得到一个伸缩容器
设置为flex
的容器被渲染为一个块级元素,而设置为inline-flex
的容器则渲染为一个行内元素。
例如:此处将 类名为 flex-container 的元素设置为伸缩容器
伸缩容器中的每一个子元素都是一个伸缩项目。伸缩项目可以是任意数量的。伸缩容器外和伸缩项目内的一切元素都不受影响。
简单地说,Flexbox 定义了伸缩容器内伸缩项目该如何布局。
Flex Lines 伸缩行
伸缩项目沿着伸缩容器内的一个 伸缩行 定位。通常每个伸缩容器只有一个伸缩行。 默认伸缩行从左往右
例子:
<span style="color: #008080;"> 1</span> <span style="color: #800000;"><div class="flex-container"> <span style="color: #008080;"> 2</span> <span style="color: #800000;"><div class="flex-item">flex item 1</div> </span><span style="color: #008080;"> 3</span> <span style="color: #800000;"><div class="flex-item">flex item 2</div> </span><span style="color: #008080;"> 4</span> <span style="color: #800000;"></span> </div> </span><span style="color: #008080;"> 5</span> <span style="color: #008080;"> 6</span> <span style="color: #800000;">样式: </span><span style="color: #008080;"> 7</span> <span style="color: #008080;"> 8</span> <span style="color: #800000;">.flex-container </span>{ <span style="color: #008080;"> 9</span> <span style="color: #ff0000;">display</span>:<span style="color: #0000ff;"> -webkit-flex</span>; <span style="color: #008080;">10</span> <span style="color: #ff0000;">display</span>:<span style="color: #0000ff;"> flex</span>; <span style="color: #008080;">11</span> <span style="color: #ff0000;">width</span>:<span style="color: #0000ff;"> 300px</span>; <span style="color: #008080;">12</span> <span style="color: #ff0000;">height</span>:<span style="color: #0000ff;"> 240px</span>; <span style="color: #008080;">13</span> <span style="color: #ff0000;">background-color</span>:<span style="color: #0000ff;"> Silver</span>; <span style="color: #008080;">14</span> } <span style="color: #008080;">15</span> <span style="color: #008080;">16</span> <span style="color: #800000;">.flex-item </span>{ <span style="color: #008080;">17</span> <span style="color: #ff0000;">background-color</span>:<span style="color: #0000ff;"> DeepSkyBlue</span>; <span style="color: #008080;">18</span> <span style="color: #ff0000;">width</span>:<span style="color: #0000ff;"> 100px</span>; <span style="color: #008080;">19</span> <span style="color: #ff0000;">height</span>:<span style="color: #0000ff;"> 100px</span>; <span style="color: #008080;">20</span> <span style="color: #ff0000;">margin</span>:<span style="color: #0000ff;"> 5px</span>; <span style="color: #008080;">21</span> }
效果图:
再加
<div class="flex-item">flex item 3</div>
<div class="flex-item">flex item 4</div><br><br>伸缩项目的宽度超过了 伸缩容器的宽度,伸缩容器的宽度不会改变,伸缩项目的宽度减小<br><br><br><br>
<span style="color: #008080;"> 1</span> <span style="color: #800000;"><div class="flex-container"> <span style="color: #008080;"> 2</span> <span style="color: #800000;"><div class="flex-item">flex item 1</div> </span><span style="color: #008080;"> 3</span> <span style="color: #800000;"><div class="flex-item">flex item 2</div> </span><span style="color: #008080;"> 4</span> <span style="color: #800000;"></span> </div> </span><span style="color: #008080;"> 5</span> <span style="color: #008080;"> 6</span> <span style="color: #008080;"> 7</span> <span style="color: #800000;">CSS样式 </span><span style="color: #008080;"> 8</span> <span style="color: #800000;">.flex-container </span>{ <span style="color: #008080;"> 9</span> <span style="color: #ff0000;"> direction</span>:<span style="color: #0000ff;"> rtl</span>; <span style="color: #008080;">10</span> <span style="color: #ff0000;"> display</span>:<span style="color: #0000ff;"> -webkit-flex</span>; <span style="color: #008080;">11</span> <span style="color: #ff0000;"> display</span>:<span style="color: #0000ff;"> flex</span>; <span style="color: #008080;">12</span> <span style="color: #ff0000;"> width</span>:<span style="color: #0000ff;"> 300px</span>; <span style="color: #008080;">13</span> <span style="color: #ff0000;"> height</span>:<span style="color: #0000ff;"> 240px</span>; <span style="color: #008080;">14</span> <span style="color: #ff0000;"> background-color</span>:<span style="color: #0000ff;"> Silver</span>; <span style="color: #008080;">15</span> <span style="color: #008080;">16</span> } <span style="color: #008080;">17</span> <span style="color: #008080;">18</span> <span style="color: #800000;">.flex-item </span>{ <span style="color: #008080;">19</span> <span style="color: #ff0000;"> background-color</span>:<span style="color: #0000ff;"> DeepSkyBlue</span>; <span style="color: #008080;">20</span> <span style="color: #ff0000;"> width</span>:<span style="color: #0000ff;"> 100px</span>; <span style="color: #008080;">21</span> <span style="color: #ff0000;"> height</span>:<span style="color: #0000ff;"> 100px</span>; <span style="color: #008080;">22</span> <span style="color: #ff0000;"> margin</span>:<span style="color: #0000ff;"> 5px</span>; <span style="color: #008080;">23</span> }
效果:
伸缩行从右往左,文字也从右往左
为了描述抽象的书写模式,Flexbox 使用 主轴 和 侧轴的概念。伸缩行跟随主轴。侧轴则垂直于主轴。
默认值 row
再次提醒,默认是从左至右,从上到下。其他的值如下:
用于调整主轴上伸缩项目的位置。可能的值为:
调整伸缩项目在侧轴上的定位方式。可能的值有:
为伸缩容器创建多个伸缩行。这个属性接受以下值:
它对齐的是伸缩行,它接受的值:
flex-direction
和flex-wrap
的缩写。