Html CSS:垂直对齐

Html CSS:垂直对齐,html,css,vertical-alignment,Html,Css,Vertical Alignment,如何在不使用显示表格/表格单元格或绝对位置的情况下进行垂直对齐 #父级{ 边框:1px纯红; 高度:100vh; } .孩子{ 边框:1px纯蓝色; } 我想垂直对齐 您可以使用相对位置,顶部为50%,平移为-50% #父级{ 边框:1px纯红; 高度:100vh; } .孩子{ 位置:相对位置; 最高:50%; 转换:翻译(0,-50%); 边框:1px纯蓝色; } 我想垂直对齐 您可以使用显示:flex: #parent { border: 1px solid red; he

如何在不使用显示表格/表格单元格或绝对位置的情况下进行垂直对齐

#父级{
边框:1px纯红;
高度:100vh;
}
.孩子{
边框:1px纯蓝色;
}

我想垂直对齐


您可以使用相对位置,顶部为50%,平移为-50%

#父级{
边框:1px纯红;
高度:100vh;
}
.孩子{
位置:相对位置;
最高:50%;
转换:翻译(0,-50%);
边框:1px纯蓝色;
}

我想垂直对齐


您可以使用
显示:flex

#parent {
  border: 1px solid red;
  height: 100vh;
  display:flex;
  align-items:center;
  justify-content:center;
}

另一种方法是使用浮动div

#父级{
边框:1px纯红;
高度:100vh;
}
.漂浮物{
浮动:左;
身高:50%;
宽度:100%;
边缘底部:-25px;
}
.孩子{
边框:1px纯蓝色;
明确:两者皆有;
高度:50px;
}

我想垂直对齐


我想你可以这样使用

position: fixed; top: 50%;

下面是另一个使用“Flex”属性的选项

<div id="parent">
  <div class="child">
    <p>I want to be vertical aligned</p>
  </div>
</div>

#parent {
  border: 1px solid red;
  display: flex;
  align-items: center;
  height: 100vh;
}

.child {
  border: 1px solid blue;
  flex-grow: 1;
}

我想垂直对齐

#母公司{ 边框:1px纯红; 显示器:flex; 对齐项目:居中; 高度:100vh; } .孩子{ 边框:1px纯蓝色; 柔性生长:1; }

如果您不介意浏览器兼容性,我会选择
flex
——请参见@rblarsen,@Satheesh Kumars-answers

但如果您需要扩展浏览器支持,这里有一个更复杂但更可靠的解决方案:经过测试的IE9+FF Chrome和其他主要浏览器

看看这把小提琴:

HTML 注-上述
translate
解决方案虽然相当简单,但有时会导致较差的渲染问题,请查看:
您可以尝试使用display:flex。
CSS

#父级{
边框:1px纯红;
高度:100vh;
显示器:flex;
对齐项目:居中;/*垂直*/
对齐内容:居中;/*水平*/
}
.孩子{
边框:1px纯蓝色;
}

我想垂直对齐


#父{边框:1px实心红色;高度:100vh;显示:表格;宽度:100%;}。子{边框:1px实心蓝色;显示:表格单元格;文本对齐:中心;垂直对齐:中间;}我喜欢这个解决方案@satheesh kumar您认为使用不同的子类(如grow-1、grow-2)来控制flex grow是一个好主意吗?这对多个子类如何起作用?我可以让-50%更具动态性吗?在这种情况下,您可以拥有一个包含多个孩子的容器,并对其应用翻译。
<div class="wrapper">
   <div class="content">Middle aligned</div>
   <div class="middle"></div>
</div>
.wrapper{
   width : 100%;
   height : 100%;
   text-align: center;
}

.content{
   display: inline-block;
   vertical-align: middle;
}

.middle{
   height: 100%;
   display: inline-block;
   vertical-align: middle;
}