博客列表 >flex属性的用法

flex属性的用法

手机用户701003573
手机用户701003573原创
2019年11月07日 14:30:38538浏览

实例公共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



声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议