Heim  >  Artikel  >  Web-Frontend  >  Fassen Sie die Lösungen für das CSS-Zentrierungsproblem zusammen

Fassen Sie die Lösungen für das CSS-Zentrierungsproblem zusammen

高洛峰
高洛峰Original
2017-03-13 15:02:021359Durchsuche

Probleme bei der CSS-ZentrierungZusammenfassung

Horizontale Zentrierung

  • [Inline-Elemente] anwendbar auf Inline, Inline-Block, Inline-Tabelle , Inline-Flex-Element

    .center {
      text-align: center;
    }
  • [Block-Level-Element] gilt für Block-Level-Element

    ①Ein Block-Level-Element

       .center {
     margin: 0 auto;
       }

    ②Mehrere Elemente auf Blockebene

    方法一:将块级元素变为行内块级元素
    
    html部分:
    <main class="inline-block-center">
      <p>1</p>
      <p>2</p>
      <p>3</p>
    </main>
    css部分:
    .inline-block-center {
      text-align: center;
    }
    .inline-block-center p {
      display: inline-block;
      text-align: left;
    }
    
    
    方法二:flex布局
    
    html部分:
    <main class="flex-center">
      <p>1</p>
      <p>2</p>
      <p>3</p>
    </main>
    css部分:
    .flex-center{
        display:flex;
      justify-content:center;
    }

Vertikal zentriert

  • [Inline-Elemente]

    ①Einzelnes Inline-Element:

    Fall 1: Wenn der Link oder Text Umbruchelemente hat, stellen Sie den gleichen oberen und unteren Abstand ein.

    .link {
      padding-top: 30px;
      padding-bottom: 30px;
    }

    Fall 2: Wenn der Link oder Text keine Umbruchelemente hat, legen Sie die Zeilenhöhe fest und Höhe müssen gleich sein

    .center-text-trick {
      height: 100px;
      line-height: 100px
    }

    ②Mehrere Inline-Elemente:

    方法一:将多个行内元素分别置于table-cell中
    
    html部分:
    <table>
      <tr>
    <td>
      1
    </td>
      </tr>
    </table>
    css部分:
    table td {
      background: black;
      color: white;
      padding: 20px;
      border: 10px solid white;
      /* default is vertical-align: middle; */
    }
    
    
    方法二:将父元素设置为display:table,将自身设置为display:table-cell
    
    html部分:
    <p class="center-table">
      <p>1</p>
    </p>
    css部分:
    .center-table {
      display: table;
      height: 250px;
      width: 240px;
    }
    .center-table p {
      display: table-cell;
      vertical-align: middle;
    }
    
    
    方法三:使用felex
    
    html部分:
    <p class="flex-center">
      <p>1</p>
    </p>
    css部分:
    .flex-center{
      display: flex;
      justify-content: center;
      flex-direction: column;
      height: 400px;/*父容器必须有固定高度*/
    }
    
    
    方法四:当以上代码均不可用时,可尝试此奇淫巧技
    
    html部分:
    <p class="ghost-center">
      <p>1</p>
    </p>
    css部分:
    .ghost-center {
      position: relative;
    }
    .ghost-center::before {
      content: " ";
      display: inline-block;
      height: 100%;
      width: 1%;
      vertical-align: middle;
    }
    .ghost-center p {
      display: inline-block;
      vertical-align: middle;
    }
  • [Elemente auf Blockebene]

    ①Bekannte Elementhöhe (Absolute Positionierung+negativer Rand)

    .parent {
      position: relative;
    }
    .child {
      position: absolute;
      top: 50%;
      height: 100px;
      margin-top: -50px; /* 为元素高度的一半,没有box-sizing时,为height+padding+border的一半*/
    }

    ②Ich kenne die Höhe des Elements nicht (ähnlich der vorherigen Methode)

    .parent {
      position: relative;
    }
    .child {
      position: absolute;
      top: 50%;
      transform: translateY(-50%);
    }

    ③Flex-Layout

    .parent {
      display: flex;
      flex-direction: column;
      justify-content: center;
    }

Horizontal und vertikal zentriert

① Elemente mit fester Breite und Höhe

.parent {
  position: relative;
}

.child {
  width: 300px;
  height: 100px;
  padding: 20px;

  position: absolute;
  top: 50%;
  left: 50%;

  margin: -70px 0 0 -170px;/* 注意此处为height+padding+的一半*/
}

② Elemente ohne feste Breite und Höhe (wie die vorherige Elemente ohne feste Breite und Höhe, Transformationslösung verwenden)

.parent {
  position: relative;
}
.child {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
}

③Flexbox-Layout verwenden

.parent {
  display: flex;
  justify-content: center;
  align-items: center;
}

Das obige ist der detaillierte Inhalt vonFassen Sie die Lösungen für das CSS-Zentrierungsproblem zusammen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn