margin: auto; 有点强大

2020-07-14 10:39:18 +08:00
 xiaoming1992

需要实现一个水平或(不是"和",是"或")垂直方向的居中,用的 flex,但是当子元素尺寸超出父元素时,flex-start 方向竟然直接看不到了。。。
想了很久想不到合适的方法,关键字一搜,果然搜到了,flex 布局在垂直居中里,元素超过容器大小后,不能通过滚动条滚动到顶端,这是个 flex 的 bug
里面提到的margin: auto;,从我刚开始学前端的时候就用到了,没想到这么强大,浏览器开发者太强了。

1256 次点击
所在节点    程序员
3 条回复
slime7
2020-07-14 12:51:12 +08:00
试试在 flex 布局下,超出父元素的那个子元素设置
```css
min-height: 0;
overflow-y: auto;
```

就是你发的文章里的例子,把父元素的 2 个居中对齐加回来,子元素 margin: auto 去掉,加上上面那 2 条
xiaoming1992
2020-07-14 13:57:07 +08:00
@slime7 主要是,我不知道哪个元素超出了父元素,甚至不知道会不会超出父元素。

其实我的需求是,一组子元素,个数不定,排列方向不定(可水平可竖直),父元素尺寸也不是恒定的,可以自定义,这样的情况,文章所示的应该是最简单的了吧?

你说的“超出父元素的那个子元素设置***”,可能实现不了,因为我不知道哪个超出了
slime7
2020-07-14 20:37:10 +08:00
@xiaoming1992
```
父元素 > * {
min-width: 0;
min-height: 0;
overflow: auto;
}
```

好像是给子元素在 flex 方向上设置大小就可以,min 属性也算,如果你本身没有 min 的需求就等于没影响

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/689814

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX