Blogger Information
Blog 11
fans 0
comment 0
visits 7104
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
flex属性的用法
手机用户701003573
Original
539 people have browsed it

实例公共CSS

.container{
    border: 2px dashed red;
    margin: 15px;
    background: #28ff5c;
}

.box{
    box-sizing: border-box;
    border: 1px solid;
    padding: 20px;
    background: #f9feff;
}

.flex{
    display: flex;
}

运行实例 »

点击 "运行实例" 按钮查看在线实例


一、设置弹性元素的增长因子

实例HTML

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>设置弹性元素的增长因子</title>
    <link rel="stylesheet" href="CSS/public.css">
    <link rel="stylesheet" href="CSS/css1.css">
</head>
<body>
<h4>弹性元素不增长,以原始宽度显示,增长因子:为零</h4>
<div class="container flex index1">
    <span class="box">1</span>
    <span class="box">2</span>
    <span class="box">3</span>
</div>

<h4>剩余空间分配指定元素</h4>
<div class="container flex index2">
    <span class="box">1</span>
    <span class="box">2</span>
    <span class="box">3</span>
</div>
<h4>剩余空间按增长因子的值在不同的弹性元素间分配</h4>
<div class="container flex index3">
    <span class="box">1</span>
    <span class="box">2</span>
    <span class="box">3</span>
</div>
</body>
</html>

运行实例 »

点击 "运行实例" 按钮查看在线实例

实例CSS

.container {
    width: 550px;
}
.box {
    width: 100px;
}
/*          分割                  */
/*增长因子为零*/
。index1 > .box{
    flex-grow: 0;
}
/*第一个增长因子为0,不做增长*/
.index2>.box:first-of-type{
    flex-grow: 0;
}
/*第二个增长因子为0,不做增长*/
.index2>.box:nth-of-type(2){
    flex-grow: 0;
}
/*剩余空间都分给最后一个元素*/
.index2>.box:last-of-type{
    flex-grow: 1;
}

/*              分割          */

/*剩余空间按增长因子的值在不同的弹性元素间分配*/
.index3>.box:first-of-type{
    flex-grow: 1;
}
.index3>.box:nth-of-type(2){
    flex-grow: 1;
}

.index3>.box:last-of-type{
    flex-grow: 4;
}
/*计算方式
1.获取变量
  1.1剩余空间:550px - (100+100+100)=250
  1.2 增长因子和 :1+1+4=6

2.元素增长比例
  2.1 计算公式 :增长比例 =增长因子/增长因子之和
  2.2 第一元素增长比例:1/6=0.1666
  2.3 第一元素增长比例:1/6=0.1666
  2.4 第一元素增长比例:4/6=0.6666

 3. 计算每个元素的增长量
  3.1 第一个元素增长量: 250px * 0.1666 = 41.65px
  3.2 第二个元素增长量: 250px * 0.1666 = 41.65px
  3.3 第三个元素增长量: 250px * 0.6666 = 166.65px

4. 计算每个元素最终宽度
  4.1 第一个元素: 100px + 41.65px = 141.65px
  4.1 第二个元素: 100px + 41.65px = 141.65px
  4.1 第三个元素: 100px + 166.65px = 266.65px*/

运行实例 »

点击 "运行实例" 按钮查看在线实例

截屏2019-11-06下午10.10.03.png

二设置弹性元素的减速因子

实例HTML

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>设置弹性元素的减速因子</title>
    <link rel="stylesheet" href="CSS/public.css">
    <link rel="stylesheet" href="CSS/css3.css">
</head>
<body>
<h4>弹性元素不缩减,以原始宽度显示,缩减因子:为零</h4>
<div class="container flex index1">
    <span class="box">1</span>
    <span class="box">2</span>
    <span class="box">3</span>
</div>

<h4>所有弹性元素自适应宽度不换行,缩减因子1</h4>
<div class="container flex index2">
    <span class="box">1</span>
    <span class="box">2</span>
    <span class="box">3</span>
</div>
<h4>所有弹性元素缩减因子不想等的时候</h4>
<div class="container flex index3">
    <span class="box">1</span>
    <span class="box">2</span>
    <span class="box">3</span>
</div>
<h4>所有弹性元素宽度不同 </h4>
<div class="container flex index4">
    <span class="box">1</span>
    <span class="box">2</span>
    <span class="box">3</span>
</div>
</body>
</html>

运行实例 »

点击 "运行实例" 按钮查看在线实例

实例CSS

.container {
    width: 550px;
}
.box{
    width: 250px;
}
/*所有元素不缩减,以原始宽度显示*/
.index1 > .box {
    flex-shrink: 0;
}

.index2 > .box {
    flex-shrink: 1;
}

/*
计算步骤:
1. 获取基本变量
1.1 多余待缩放空间: (250+ 250+250) - 550= 200
1.2 缩减因子之和: 1 + 1 + 1 = 1

2. 计算缩减比例
2.1 计算公式: 缩减比例 = 缩减因子 / 缩减因子之和
2.2 第一个元素缩减比例: 1 / 3 = 0.3333
2.3 第二个元素缩减比例: 1 / 3 = 0.3333
2.4 第三个元素缩减比例: 1 / 3 = 0.3333

3. 计算每个元素的缩减
3.1 第一个元素缩减: 200 * 0.3333 = 66.666
3.2 第二个元素缩减: 200 * 0.3333 = 66.666
3.3 第三个元素缩减: 200 * 0.3333 = 66.666

4. 计算每个元素最终宽度
4.1 第一个元素: 250- 66.66 = 183.33
4.1 第二个元素: 250- 66.66 = 183.33
4.1 第三个元素: 250- 66.66= 183.33*/


/*           分割             */


.index3 > .box:first-of-type {
    flex-shrink: 1;
}
.index3 > .box:nth-of-type(2) {
    flex-shrink: 2;
}
.index3 > .box:last-of-type {
    flex-shrink: 3;
}

/*
计算步骤:
1. 获取基本变量
1.1 多余待缩放空间: (250+ 250+250) - 550= 200
1.2 缩减因子之和: 1 + 2 + 3 = 6

2. 计算缩减比例
2.1 计算公式: 缩减比例 = 缩减因子 / 缩减因子之和
2.2 第一个元素缩减比例: 1 / 6 = 0.16666
2.3 第二个元素缩减比例: 2 / 6= 0.33333
2.4 第三个元素缩减比例: 3 / 6 = 0.5

3. 计算每个元素的缩减
3.1 第一个元素缩减: 200 * 0.16666= 33.332
3.2 第二个元素缩减: 200 * 0.33333 = 66.666
3.3 第三个元素缩减: 200 * 0.5 = 100
4. 计算每个元素最终宽度
4.1 第一个元素: 250- 33.332 = 216.668
4.1 第二个元素: 250- 66.666 = 183.334
4.1 第三个元素: 250- 100= 150*/



.index4 > .box:first-of-type {
    width: 220px;
    flex-shrink: 2;
}
.index4 > .box:nth-of-type(2) {
    width: 250px;
    flex-shrink: 2;
}
.index4 > .box:last-of-type {
    width: 280px;
    flex-shrink: 6;
}

/*
计算步骤:
1. 获取基本变量
1.1 多余待缩放空间: (220+ 280+250) - 550= 200
1.2 缩减因子缩小比例  缩减空间 / 每个弹性元素的宽度与缩减因子乘积的总和
    : 200 / (220 * 2) + (250 * 2) + (280 *6) = 200 / 2620 = 0.07633588




2. 计算每个元素的缩减
    计算公式:元素宽度 * ( 缩减因子 * 缩减因子的缩减比例)
2.1 第一个元素缩减: 220 * ( 2 * 0.07633588) = 33.5877 px
2.2 第二个元素缩减: 250 * ( 2 * 0.07633588) = 38.1679 px
2.3 第三个元素缩减:  280 * ( 6 * 0.07633588) = 128.2442 px
3. 计算每个元素最终宽度
3.1 第一个元素: 220 - 33.5877 = 186.4123 px
3.1 第二个元素: 250 - 38.1679 = 211.8321 px
3.1 第三个元素:  280 - 128.2442 = 151.7558 px

运行实例 »

点击 "运行实例" 按钮查看在线实例

截屏2019-11-06下午10.12.12.png


QQ截图20191107104951.png

QQ截图20191107105007.png

三、设置弹性元素的基准尺寸

实例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>设置弹性元素的基准尺寸</title>
    <link rel="stylesheet" href="CSS/public.css">
    <link rel="stylesheet" href="CSS/css3.css">
</head>
<body>
<h4>没有设置弹性元素狂赌,以内容宽度显示</h4>
<div class="container flex index1">
    <span class="box">1</span>
    <span class="box">2</span>
    <span class="box">3</span>
</div>

<h4>存在自定义元素宽度时,则以该宽度显示</h4>
<div class="container flex index2">
    <span class="box">1</span>
    <span class="box">2</span>
    <span class="box">3</span>
</div>
<h4>由游览器根据预定值自行判断</h4>
<div class="container flex index3">
    <span class="box">1</span>
    <span class="box">2</span>
    <span class="box">3</span>
</div>
<h4>当元素存在自定义宽度与基准宽度时, 以基准宽度为准 </h4>
<div class="container flex index4">
    <span class="box">1</span>
    <span class="box">2</span>
    <span class="box">3</span>
</div>
<h4>元素基准宽度支持百分比设置 </h4>
<div class="container flex index5">
    <span class="box">1</span>
    <span class="box">2</span>
    <span class="box">3</span>
</div>
</body>
</html>

运行实例 »

点击 "运行实例" 按钮查看在线实例

实例

.container {
    width: 550px;
}

/*没有设置弹性元素狂赌,以内容宽度显示*/
.index1 > .box {
    flex-basis: content;
}
/*存在自定义元素宽度时,则以该宽度显示*/
.index2 > .box {
    width: 100px;
}

/*由游览器根据预定值自行判断*/

.index3 > .box {
   flex-basis: auto;
}
/*当元素存在自定义宽度与基准宽度时, 以基准宽度为准*/
.index4 > .box {
    width: 100px;
    flex-basis:150px;
}

/*元素基准宽度支持百分比*/
.index5 > :first-child {
    flex-basis: 40%;
}

.index5 > :nth-child(2) {
    flex-basis: 10%;
}

.index5 >  :last-child {
    flex-basis: 50%;
}

运行实例 »

点击 "运行实例" 按钮查看在线实例

截屏2019-11-06下午10.14.40.png


QQ截图20191107113206.png

四、弹性元素的基本设置

实例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>弹性元素的基本设置</title>
    <link rel="stylesheet" href="CSS/public.css">
    <link rel="stylesheet" href="CSS/css4.css">
</head>
<body>
<h4>宽度计算,允许缩减适应容器</h4>
<div class="container flex index1">
    <span class="box">1</span>
    <span class="box">2</span>
    <span class="box">3</span>
</div>

<h4>元素完全适应容器</h4>
<div class="container flex index2">
    <span class="box">1</span>
    <span class="box">2</span>
    <span class="box">3</span>
</div>
<h4>元素失去弹性</h4>
<div class="container flex index3">
    <span class="box">1</span>
    <span class="box">2</span>
    <span class="box">3</span>
</div>
<h4>  一个数值表示增长因子,其它值默认</h4>
<div class="container flex index4">
    <span class="box">1</span>
    <span class="box">2</span>
    <span class="box">3</span>
</div>
<h4>第三个为具体值 </h4>
<div class="container flex index5">
    <span class="box">1</span>
    <span class="box">2</span>
    <span class="box">3</span>
</div>
<h4>单独设置一个元素弹性大小 </h4>
<div class="container flex index6">
    <span class="box">1</span>
    <span class="box">2</span>
    <span class="box">3</span>
</div>
</body>
</html>

运行实例 »

点击 "运行实例" 按钮查看在线实例

实例

.container {
    width: 550px;
}


.index1 > .box{
    width: 100px;
    height: 60px;
    flex: initial;
    /*初始值*/
    flex: 0 1 auto ;
}

.index2 > .box{
    width: 100px;
    height: 60px;
    flex: initial;
    /*元素完全适应盒子*/
    flex:  auto ;
}

.index3 > .box{
    width: 100px;
    height: 60px;
    flex: initial;
    flex: none;
    flex: 0 0  auto ;
}

.index4 > .box {
    width: 100px;
    height: 60px;
    flex: 1;
}

.index5 > .box {
    width: 100px;
    height: 60px;
    flex: 1 0 200px;
}

.index6 > .box {
    width: 100px;
    height: 60px;
}

.index6 > .box:first-of-type {
    flex: 1 1 60%;
}

运行实例 »

点击 "运行实例" 按钮查看在线实例

截屏2019-11-06下午10.16.22.png


QQ截图20191107113845.png

五、单独设置元素在交叉轴上排列方式

实例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>单独设置元素在交叉轴上排列方式</title>
    <link rel="stylesheet" href="CSS/public.css">
    <link rel="stylesheet" href="CSS/css5.css">
</head>
<body>
<h4>单独设置元素在交叉轴上排列方式</h4>
<div class="container flex">
    <span class="box">1</span>
    <span class="box">2</span>
    <span class="box">3</span>
</div>
</body>
</html>

运行实例 »

点击 "运行实例" 按钮查看在线实例

实例

.container {
    width: 500px;
    height: 300px;
    flex-flow: column nowrap;
    align-items: flex-end;
}
.box{
    width: 100px;
    height: 60px;
}
.box:last-of-type{
    align-self: flex-start;
}
.box:nth-last-of-type(2){
    background-color: #fff;
    width: auto;
    align-self: stretch;
}
.box:first-of-type{
    align-self: center;
}

运行实例 »

点击 "运行实例" 按钮查看在线实例

截屏2019-11-06下午10.17.54.png

QQ截图20191107143013.png



Correction status:qualified

Teacher's comments:图文结合 , 很直观
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post