预先给出这样的样式ide
<style> .container { width: 100%; height: 200px; background-color: azure; } .child { width: 150px; height: 150px; background-color: bisque; margin: 0 10px; } </style>
使用 text-align: center;
的方法flex
<div class="container"> <div class="child"></div> <div class="child"></div> <div class="child"></div> </div> <style> .container { text-align: center; } .child { display: inline-block; } </style>
使用 margin: 0 auto;
的方法ui
<div class="container"> <div class="child"></div> </div> <style> .container {} .child { margin: 0 auto; } </style>
若是你有两个或更多的 block-level 元素须要在一行内居中flexbox
方法一:
改变 display
的类型为 inline-block
翻译
<div class="container"> <div class="child"></div> <div class="child"></div> <div class="child"></div> </div> <style> .container { text-align: center; } .child { display: inline-block; } </style>
方法二:
使用 flexboxcode
<div class="container"> <div class="child"></div> <div class="child"></div> <div class="child"></div> </div> <style> .container { display: flex; justify-content: center; } .child {} </style>
一个小技巧是将 height
与 line-height
设置为相同的值orm
<div class="container"> <a class="child">center</a> </div> <style> .container {} .child { height: 150px; line-height: 150px; } </style>
能够尝试将父元素的 display
设置为 table
,同时设置该元素的 display
为 table-cell
,而后设置vertical-align: middle
ip
<div class="container"> <a class="child">I'm vertically centered multiple lines of text in a CSS-created table layout.</a> </div> <style> .container { display: table; width: 150px; } .child { display: table-cell; vertical-align: middle; } </style>
或者实际的将其放入 table
中get
<table> <tr> <td> I'm vertically centered multiple lines of text in a real table cell. </td> </tr> </table> <style> table { width: 150px; height: 200px; background-color: azure; } table td { background-color: bisque; } </style>
或者使用 flexbox
<div class="container"> <a class="child">I'm vertically centered multiple lines of text in a flexbox container.</a> </div> <style> .container { display: flex; justify-content: center; flex-direction: column; } .child { height: auto; } </style>
若是上面的方法都不起做用的话,能够使用一个幽灵元素。在文本前面插入一个高度为百分百的伪元素,让文本与其垂直对齐。
<div class="container"> <p class="child">I'm vertically centered multiple lines of text in a flexbox container.</p> </div> <style> .container::before { content: ""; display: inline-block; height: 100%; vertical-align: middle; } .child { height: auto; display: inline-block; vertical-align: middle; } </style>
<div class="container"> <div class="child"></div> </div> <style> .container { position: relative; } .child { position: absolute; top: 50%; transform: translateY(-50%); } </style>
或者使用 flexbox
<div class="container"> <div class="child"></div> </div> <style> .container { display: flex; flex-direction: column; justify-content: center; } .child {} </style>
<div class="container"> <div class="child"></div> </div> <style> .container { position: relative; } .child { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); } </style>
或者使用 flexbox
<div class="container"> <div class="child"></div> </div> <style> .container { display: flex; justify-content: center; align-items: center; } .child {} </style>