flex弹性布局中关于设置子项目内部padding的均分问题

    技术2023-09-08  105

    <!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进行均分。即使加自动内减也是无效的。

    Processed: 0.010, SQL: 10