css - 关于flex布局的疑问

查看:74
本文介绍了css - 关于flex布局的疑问的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

各位大佬,在使用flex box 布局的时候,这样写。为什么只有水平居中而不能竖直居中?

给form元素加上flex以后

解决方案

研究了一下这个问题。我详细说下吧,给各位同学讲讲:

首先,我们在HTML中搞几个dom,结构如下:

<div id="app">
        <input placeholder="name" name="name" id="inputName" class="animated fadeInDown">
        <input placeholder="mail" name="mail" id="inputMail" class="animated fadeInDown">
        <button class="animated fadeInDown" id="btn" type="submit">submit</button>
</div>

然后我们使用flex布局来搞一下,按照网上的教程,基本都是这么个套路:

#app {
            display: flex;
            justify-content: center;
            align-items: center;
        }

其中justify-content和align-items这两个属性是flex的关键属性,它俩掌管页面上X/Y轴的对齐方式(文档中叫做main-axis和cross-axis)具体大家可以搜索查看。

理论上来说,当我们完成这样的DOM结构和CSS样式表以后,我们的两个input就应该在打开的页面当中实现水平以及垂直居中。

但实际上,我们的页面中的实际显示是俩input框会贴在页面的顶部并水平居中,只是水平居中,并没有垂直居中。

在我看了大家的回答和自己的研究之后,这个问题的关键点在于:

<div id=""app>
    ...
</div>

这个DOM结构成了body的子节点,但是在DOM文档结构中,我们的body 并没有指定的height和width,所以整个文档流默认了这个DOM节点成了整个容器。因此,在这个页面里,id="app"的节点就是整个容器了。

所以,在我看来flex布局的方式,需要给容器指定一个固定的高度,或者给最外层的容器指定一个高度。

另外,如果有同学还是没明白的,建议可以看看MDN上关于DOM节点的文档,看完就会明白啦~~

这篇关于css - 关于flex布局的疑问的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆