CSS 布局 - 水平和垂直对齐
元素居中
水平和垂直居中的元素
居中对齐元素
要使块元素(例如 <div> )水平居中,请使用 margin: auto;。
设置元素的宽度将防止其延伸到容器的边缘。
然后,元素将占用指定的宽度,剩余空间将在两个外边距之间平均分配:
代码如下:
<!DOCTYPE html><html><head><style>.center {margin: auto;width: 60%;border: 3px solid #73AD21;padding: 10px;}</style></head><body><h1>居中对齐元素</h1><p>要使块元素(例如 div)水平居中,请使用 margin: auto;</p><div class="center"><p>Hello World!</p></div></body></html>
注意:如果未设置 width 属性(或将其设置为 100%),则居中对齐无效。
居中对齐文本
如果仅需在元素内居中文本,请使用 text-align: center;:
代码如下:
<!DOCTYPE html><html><head><style>.center {text-align: center;border: 3px solid green;}</style></head><body><h2>居中文本</h2><div class="center"><p>这段文本是居中的。</p></div></body></html>
提示:有关如何对齐文本的更多例子,请参见 CSS 文本 这一章。
居中对齐图像
如需居中图像,请将左右外边距设置为 auto,并将其设置为块元素:

代码如下:
<!DOCTYPE html><html><head><style>img {display: block;margin-left: auto;margin-right: auto;}</style></head><body><h1>居中图像</h1><p>要使图像居中,请将左右外边距设置为 auto,并使其成为一个块元素。</p><img src="/znadmin/md/1243/0.jpg" style="width:40%"></body></html>
左和右对齐 - 使用 position
对齐元素的一种方法是使用 position: absolute; :
代码如下:
<!DOCTYPE html><html><head><style>.right {position: absolute;right: 0px;width: 300px;border: 3px solid #73AD21;padding: 10px;}</style></head><body><h1>右对齐</h1><p>如何用 position 属性将元素右对齐的例子:</p><div class="right"><p>在我更年轻,更脆弱的岁月中,父亲给了我一些建议,从那以后我就一直在思考。</p></div></body></html>
注意:绝对定位的元素将从正常流中删除,并可能出现元素重叠。
左和右对齐 - 使用 float
对齐元素的另一种方法是使用 float 属性:
<!DOCTYPE html><html><head><style>.right {float: right;width: 300px;border: 3px solid #73AD21;padding: 10px;}</style></head><body><h1>右对齐</h1><p>如何使用 float 属性将元素右对齐的例子:</p><div class="right"><p>在我更年轻,更脆弱的岁月中,父亲给了我一些建议,从那以后我就一直在思考。</p></div></body></html>
注意:如果一个元素比包含它的元素高,并且它是浮动的,它将溢出其容器。您可以使用 clearfix hack 来解决此问题(请看下面的例子)。
clearfix Hack
然后我们可以向包含元素添加 overflow: auto;,来解决此问题:
<!DOCTYPE html><html><head><style>div {border: 3px solid #4CAF50;padding: 5px;}.img1 {float: right;}.clearfix {overflow: auto;}.img2 {float: right;}</style></head><body><h1>Clearfix</h1><p>在本例中,图像高于包含它的元素,然而它被浮动了,所以它会在容器之外溢出:</p><div><img class="img1" src="/images/demo.png" width="180" height="180">这是一些文本,这是一些文本。</div><p style="clear:right">请为包含元素添加一个带有 overflow: auto; 的 clearfix 类,以解决此问题:</p><div class="clearfix"><img class="img2" src="/images/demo.png" width="180" height="180">这是一些文本,这是一些文本。</div></body></html>
垂直对齐 - 使用 padding
有很多方法可以在 CSS 中垂直对齐元素。一个简单的解决方案是使用上下内边距:
代码如下:
<!DOCTYPE html><html><head><style>.center {padding: 70px 0;border: 3px solid green;}</style></head><body><h1>垂直居中</h1><p>在此例中,我们使用 padding 属性将 div 元素垂直居中:</p><div class="center"><p>我是垂直居中的。</p></div></body></html>
如需同时垂直和水平对齐,请使用 padding 和 text-align: center;:
代码如下:
<!DOCTYPE html><html><head><style>.center {padding: 70px 0;border: 3px solid green;text-align: center;}</style></head><body><h1>居中</h1><p>在此例中,我们使用 padding 和 text-align 将 div 元素垂直和水平居中:</p><div class="center"><p>我是垂直和水平居中。</p></div></body></html>
垂直对齐 - 使用 line-height
另一个技巧是使用其值等于 height 属性值的 line-height 属性:
代码如下:
<!DOCTYPE html><html><head><style>.center {line-height: 200px;height: 200px;border: 3px solid green;text-align: center;}.center p {line-height: 1.5;display: inline-block;vertical-align: middle;}</style></head><body><h1>居中</h1><p>在此例中,我们使用 line-height 属性,其值等于 height 属性,以使 div 元素居中:</p><div class="center"><p>我是垂直和水平居中。</p></div></body></html>
垂直对齐 - 使用 position 和 transform
如果您的选择不是 padding 和 line-height,则另一种解决方案是使用 position 和 transform 属性:
代码如下:
<!DOCTYPE html><html><head><style>.center {height: 200px;position: relative;border: 3px solid green;}.center p {margin: 0;position: absolute;top: 50%;left: 50%;-ms-transform: translate(-50%, -50%);transform: translate(-50%, -50%);}</style></head><body><h1>居中</h1><p>在此例中,我们使用 position 和 transform 属性将 div 元素垂直和水平居中:</p><div class="center"><p>我是垂直和水平居中。</p></div></body></html>
提示:您将在 2D 转换 这一章中学习有关 transform 属性的更多知识。
垂直对齐 - 使用 Flexbox
您还可以使用 flexbox 将内容居中。请注意,IE10 以及更早的版本不支持 flexbox:
代码如下:
<!DOCTYPE html><html><head><style>.center {display: flex;justify-content: center;align-items: center;height: 200px;border: 3px solid green;}</style></head><body><h1>弹性框</h1><p>同时将 justify-content 和 align-items 属性设置为 <em>center</em> 的容器将使项目在中心(在两个轴上)对齐。</p><div class="center"><p>我同时在水平和垂直方向对齐。</p></div></body></html>
提示:您将在我的 CSS Flexbox 这一章中学到更多关于 Flexbox 的知识。