V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
xiaoming1992
V2EX  ›  程序员

margin: auto; 有点强大

  •  
  •   xiaoming1992 · 2020-07-14 10:39:18 +08:00 · 1269 次点击
    这是一个创建于 1628 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    slime7
        1
    slime7  
       2020-07-14 12:51:12 +08:00
    试试在 flex 布局下,超出父元素的那个子元素设置
    ```css
    min-height: 0;
    overflow-y: auto;
    ```

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

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

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

    好像是给子元素在 flex 方向上设置大小就可以,min 属性也算,如果你本身没有 min 的需求就等于没影响
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2222 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 01:40 · PVG 09:40 · LAX 17:40 · JFK 20:40
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.