<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
.box {
display: flex;
width: 400px;
height: 100px;
}
span {
flex: 1;
}
span:nth-child(2n-1) {
background-color: rebeccapurple;
}
span:nth-child(even) {
background-color: red;
}
span:nth-child(2) {
padding-left: 10px;
box-sizing: border-box;
}
</style>
</head>
<body>
<div class="box">
<span>1</span>
<!-- (400-10)/4 +10=107.5 -->
<span>2</span>
<span>3</span>
<span>4</span>
</div>
</body>
</html>
可以看到父元素共400px的宽度,现在第一个、三个、四个分别占有97.5px,设置了padding left为10px的第二个为107.5px,跟原来我预想的每个100px并不同。
原因如下:
flex属性 占的份数(剩余空间),设置了padding left:10px的元素,该值不参与剩余空间的均分过程,即400-10=390进行均分。即使加自动内减也是无效的。