水平居中

inline元素用text-align: center;即可,如下:

  1. .container {
  2. text-align: center;
  3. }

block元素可使用margin: auto;PC时代的很多网站都这么搞。

  1. .item {
  2. width: 1000px;
  3. margin: auto;
  4. }

绝对定位元素可结合leftmargin实现,但是必须知道宽度。

  1. .container {
  2. position: relative;
  3. width: 500px;
  4. }
  5. .item {
  6. width: 300px;
  7. height: 100px;
  8. position: absolute;
  9. left: 50%;
  10. margin: -150px;
  11. }

垂直居中

inline元素可设置line-height的值等于height值,如单行文字垂直居中:

  1. .container {
  2. height: 50px;
  3. line-height: 50px;
  4. }

绝对定位元素,可结合leftmargin实现,但是必须知道尺寸。

  • 优点:兼容性好
  • 缺点:需要提前知道尺寸
    1. .container {
    2. position: relative;
    3. height: 200px;
    4. }
    5. .item {
    6. width: 80px;
    7. height: 40px;
    8. position: absolute;
    9. left: 50%;
    10. top: 50%;
    11. margin-top: -20px;
    12. margin-left: -40px;
    13. }

绝对定位可结合transform实现居中。

  • 优点:不需要提前知道尺寸
  • 缺点:兼容性不好
    1. .container {
    2. position: relative;
    3. height: 200px;
    4. }
    5. .item {
    6. width: 80px;
    7. height: 40px;
    8. position: absolute;
    9. left: 50%;
    10. top: 50%;
    11. transform: translate(-50%, -50%);
    12. background: blue;
    13. }

绝对定位结合margin: auto不需要提前知道尺寸,兼容性好。

  1. .container {
  2. position: relative;
  3. height: 300px;
  4. }
  5. .item {
  6. width: 100px;
  7. height: 50px;
  8. position: absolute;
  9. left: 0;
  10. top: 0;
  11. right: 0;
  12. bottom: 0;
  13. margin: auto;
  14. }