You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

88 lines
2.7 KiB

<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
#div0 {
display: flex;
width: 400px;
height: 500px;
background-color: aqua;
}
#div0 div {
width: 200px;
height: 200px;
background-color: blue;
/* flex-basis 属性用于设置或检索弹性盒伸缩基准值(就是设置子元素的宽度),上面的 width 将失效 */
/* flex-basis: 30%; 30% 是父元素宽度的 30% ,也可以使用 px、rem */
}
#div0 div:nth-child(1) {
flex-basis: 50px;
/* flex-grow 属性用于设置或检索弹性盒子的扩展比率 */
/* 计算过程:
父元素宽度 - 第一个子元素宽度 - 第二个子元素宽度 400 - 50 - 100 = 250px
再将剩余的 250px 的宽度 除以 总份数(全部子元素的份数),因为第一个和第二个子元素都设置了 flex-grow: 1 ,表示每个子元素占一份,总共 2 份
250 / 2 = 125 每份为 125 px
再将子元素的宽度 + 占比份数 x 每份宽度(1 x 125, 如果是两份就是 2 x 125)
第一个子元素宽度: 50 + 125 = 175
第二个子元素宽度: 100 + 125 = 225
*/
flex-grow: 1;
}
#div0 div:nth-child(2) {
flex-basis: 100px;
flex-grow: 1;
}
#div1 {
display: flex;
margin-top: 50px;
width: 400px;
height: 500px;
background-color: aqua;
}
#div1 div {
width: 200px;
height: 200px;
background-color: blue;
}
#div1 div:nth-child(1) {
flex-basis: 300px;
/* flex-shrink 是设置弹性盒子的缩小比率 */
/* 计算过程跟 flex-grow 一样
计算超出部分:父元素宽度 - 所有子元素宽度 400 - 300 - 300 = -200
超出部分 / 所有子元素份数的总和 200 / 4 = 50
第一个子元素:300 - 50 x 1 = 250
第二个子元素:300 - 50 x 3 = 150
*/
flex-shrink: 1;
}
#div1 div:nth-child(2) {
flex-basis: 300px;
flex-shrink: 3;
}
</style>
</head>
<body>
<div id="div0">
<div>1</div>
<div>2</div>
</div>
<div id="div1">
<div>3</div>
<div>4</div>
</div>
</body>
</html>