在 CSS 布局中,咱们经常会遇到一个问题,让某个 DOM 垂直居中在它的父级元素中。这个问题必须分有些状况,在区别的状况下采用的方法不同样。
采用 line-height 属性
这种方式很平常,当 line-height 和 height 两个属性设置相同的高度时,该元素内部的文字将会居中。
#parent {
height: 100px;
line-height: 100px;
border: solid 1px #333;
}
优缺点: [优点]设置简单;[缺点]只能对一行文字进行垂直居中;采用 display:table-cell 和 vertical-align:middle
这种现实方式能够让标签元素以表格单元格的形式呈现,标签就像 table 中的 td,这般一来咱们就能够经过vertical-align:middle这个样式使得其内部的元素居中表示。
#parent {
height: 100px;
display: table-cell;
vertical-align: middle;
border: solid 1px #333;
}
优缺点: [优点]设置多行文字居中;[缺点]会被其它样式破坏例如:float、position:absolute;采用 position: absolute 和 margin-top
经过绝对定位能够给元素设置距父元素上部top:50%,然则还没结束该元素还必须做必定的偏移才行,偏移量为该元素的一半高度margint-top:-height/2。
#parent {
height: 100px;
position: relative;
border: solid 1px #333;
}
#child {
height: 20px;
margin-top: -10px;
position: absolute;
top: 50%;
}
优缺点: [优点]居中元素对其它同级元素无影响;[缺点]子元素的高度必须固定;采用 padding-top 和 padding-bottom
这种方式只必须将顶部和底部的padding设置一样高度就行。
#parent {
padding-top: 20px;
padding-bottom: 20px;
border: solid 1px #333;
}
优缺点: [优点]父级元素高度可变;[缺点]父级元素高度可变;总结
垂直居中的方式非常多,都有优缺点,咱们必须按照区别的需求和布局来确定运用哪种方法。
|