为什么Flex容器里的元素在移动端显示时会超出屏幕宽度?
我用Flex布局做移动端导航栏,设置了容器display: flex,里面三个等宽按钮。但在手机真机测试时,第三个按钮总是溢出屏幕边缘,左右两边留白也不一致。试过加flex-wrap: wrap和设置容器width: 100%都不管用,这是为什么?
.nav {
display: flex;
justify-content: space-between;
width: 100%;
}
.nav button {
flex: 1;
padding: 12px;
min-width: 100px;
}
手机调试发现每个按钮实际宽度比计算值大,比如设计稿每个按钮应该80px,但实际测量显示有120px。明明设置了min-width和flex,为什么会这样?
min-width和padding上,这两个属性会让按钮的实际宽度超出你预期的等分宽度。省事的话,把min-width去掉,然后给.nav加个box-sizing: border-box,顺便确认下html和body的宽度是不是 100%。代码调整如下:
如果还不行,检查一下是否有默认样式或者外边距影响,加个全局样式重置更省心: