我试图在另一个div元素中垂直居中一个span或div元素。然而,当我输入vertical-align: middle时,什么都没有发生。我试着改变这两个元素的显示属性,但似乎都不起作用。
这是我目前在我的网页上做的事情:
.main {
身高:72 px;
vertical-align:中间;
边框:1px纯黑色;
填充:2 px;
}
在{
vertical-align:中间;
边框:1px纯红色;
}
接着{
边框:1px纯蓝色;
}
< div class = "主" >
< div class = "内部" >
这个盒子应该放在大盒子的中间
<div class="second">这里还有一个盒子</div>
< / div >
< / div >
下面是实现的jsfiddle,显示它不起作用:http://jsfiddle.net/gZXWC/
这里有两种方法做垂直对齐的例子。我用过,效果很好。一个是使用绝对定位,另一个是使用flexbox。
垂直对齐示例
使用flexbox,你可以通过display: flex;使用align-self。如果你也需要水平对齐,你可以在容器中使用align-items和justify-content。
如果不想使用flexbox,可以使用position属性。如果容器是相对的,内容是绝对的,那么内容就可以在容器内自由移动。如果你用top: 0;左:0;在内容中,它将位于容器的左上角。
然后,对齐它,你只需要改变顶部和左侧的引用为50%。这将从内容的左上角开始将内容定位在容器中心。
所以你需要纠正这个,将内容的一半大小平移到左边和上面。
这是一个现代的方法,它利用CSS Flexbox功能。
现在,只需将这些样式添加到.main容器中,就可以垂直对齐父容器中的内容
.main {
display: flex;
flex-direction: column;
justify-content: center;
align-items: center; // To center align it horizontally as well
}
你也可以使用CSS网格(一个二维网格布局系统)。
.main {
display: grid;
justify-content: center;
align-content: center;
}
下面是一个简写方法,但浏览器的支持仍然很低- https://caniuse.com/?search=place-items。
.main {
display: grid; // flex - works for both
place-items: center;
}
你就可以开始了!