[ css 弹性盒子模型 flex-basis 属性 ] 弹性盒子模型flex布局中flex-basis属性讲解及实例演示的区别
设置或检索弹性盒伸缩基准值:
如果所有子元素的基准值之和大于剩余空间,则会根据每项设置的基准值,按比率伸缩剩余空间
计算值 – 绝对数:在flex-container主方向大小不足以容纳flex items的flex-basis总和时,浏览器会自动缩小它们
实例:
<!DOCTYPE html>
<html lang="zh-cmn-Hans">
<head>
<meta charset="utf-8" />
<title>flex-basis_CSS参考手册_web前端开发参考手册系列</title>
<meta name="author" content="Joy Du(飘零雾雨), dooyoe@gmail.com, www.doyoe.com" />
<style>
.Grid {
color: #FFF;
display: -webkit-flex;
width: 400px;
border: 1px solid red;
}
.first {
background: green;
flex-basis: 400px;
}
.last {
background: orange;
flex-basis: 200px;
}
</style>
</head>
<body>
<div class='Grid'>
<div class='first'>我曾在天上见过地的繁华</div>
<div class='last'>陈三说的</div>
</div>
</body>
</html>
解析:
这里,.first的宽度是267px,.last的宽度是133px,它们是这样计算的:
代码如下 | |
.example-first(宽度) = 400 * (400 / (400 + 200)) = 266.666666667 .example-last(宽度) = 400 * (200 / (400 + 200)) = 133.333333333 |
也就是说,flex container按比例分配flex items的大小
计算值 – 百分比:
百分比的情况与计算值是一样的,如果flex container足够包含flex items的flex-basis总值,则10%的意思就是flex container在主方向的大小乘以10%。
如果flex container不足以包含flex items的flex-basis总值
实例:
<!DOCTYPE html>
<html lang="zh-cmn-Hans">
<head>
<meta charset="utf-8" />
<title>-webkit-flex-basis_CSS参考手册_web前端开发参考手册系列</title>
<meta name="author" content="Joy Du(飘零雾雨), dooyoe@gmail.com, www.doyoe.com" />
<style>
.example2-Grid {
border: 3px solid black;
display: -webkit-flex;
width:700px;
height: 200px;
}
.example2-Grid div:nth-of-type(1) {
background: rgb(0, 137, 250);
-webkit-flex-basis: 100%; //190/100
}
.example2-Grid div:nth-of-type(2) {
background: rgb(105, 0, 88);
-webkit-flex-basis: 20%;
}
.example2-Grid div:nth-of-type(3) {
background: rgb(255, 59, 0);
-webkit-flex-basis: 30%;
}
.example2-Grid div:nth-of-type(4) {
background: rgb(0, 197, 73);
-webkit-flex-basis: 40%;
}
</style>
</head>
<body>
<div class="example2-Grid">
<div></div>
<div></div>
<div></div>
<div></div>
</div>
</body>
</html>
解析:
其中第一个flex item的flex-basis取值为100%,则计算时,它的main size占比是:
代码如下 | |
100% / (100% + 20% + 30% + 40%) = 52.631578947% |
真正设计或实现页面时,我们通常不可能做这样的计算,但了解计算过程的话,心里有底,碰上问题,就知道怎么解决。