300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > css display:flex 弹性布局 子标签设置宽度无效的问题

css display:flex 弹性布局 子标签设置宽度无效的问题

时间:2021-03-28 10:59:58

相关推荐

css display:flex 弹性布局 子标签设置宽度无效的问题

前言

最难的果然还是css,工作中经常使用display:flex;让多个竖直排列的元素变成横向排列,直到今天才发现display:flex;会导致子标签的宽度失效。

正文

问题

<div class="outer"><div class="inner">1</div><div class="inner">2</div><div class="inner">3</div></div>.outer {width: 300px;border: 1px solid black;overflow-x: auto;display: flex;.inner {width: 200px;height: 20px;background: pink;margin-right: 10px;}}

按理说,父元素应该会出现横向滚动条,但实际结果如下:

原因

百度查了一下,原因如下:

父元素设置了display:flex,那么所有的子标签都会默认加上flex:0 1 auto;其中1 就是 flex中的 flex-shrink 属性,表示开启了元素的收缩功能,所以子元素宽度才会失效。

flex 属性是 flex-grow、flex-shrink 和 flex-basis 属性的简写属性。

flex的默认值就是0 1 auto

解决

方法1

flex: 0 0 auto;width: 200px;

方法2

flex: 0 0 200px;

方法3

flex-shrink: 0;width: 200px;

方法4

min-width:200px;

效果

推荐使用方法3

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。