css3 flex 子元素添加边框后的问题

父元素设置为flex后,子元素{flex:0 0 33.3333%}在同一排可以三等分,
图片描述

但是如果子元素添加了边框,那么同一排只能排列2个,flex弹性伸缩,不计算border宽度吗?
图片描述

阅读 8.7k
3 个回答

你只要给flex设置了flex-wrap: wrap;,它就不是伸缩了,超出了就会换行。

解决方法如一楼所示,当然你也可以使用calc函数将flex的值减去border的值(flex:0 0 calc(33.333% - 2px)),或者使用outline: 1px solid red;,outline是不会将宽度计算进去的,你的这段代码可以不用flex: 0 0 33.333%这样写,直接写width:33.33%或者flex:33.33%

新手上路,请多包涵

我也遇到了这个问题,楼上的解决方案:outline: 1px solid red是可行的,但是如果遇到了需要添加圆角的情况下,就不行了。
最后我用另一种方式实现了圆角+边框

box-shadow: 0 0 0 1px red;
border-radius: 4px
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题