Heim > Web-Frontend > CSS-Tutorial > Hauptteil

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

高洛峰
Freigeben: 2017-03-13 15:02:02
Original
1405 Leute haben es durchsucht

Probleme bei der CSS-ZentrierungZusammenfassung

Horizontale Zentrierung

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

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

    ①Ein Block-Level-Element

       .center {
     margin: 0 auto;
       }
    Nach dem Login kopieren

    ②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;
    }
    Nach dem Login kopieren

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;
    }
    Nach dem Login kopieren

    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
    }
    Nach dem Login kopieren

    ②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;
    }
    Nach dem Login kopieren
  • [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的一半*/
    }
    Nach dem Login kopieren

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

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

    ③Flex-Layout

    .parent {
      display: flex;
      flex-direction: column;
      justify-content: center;
    }
    Nach dem Login kopieren

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+的一半*/
}
Nach dem Login kopieren

② 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%);
}
Nach dem Login kopieren

③Flexbox-Layout verwenden

.parent {
  display: flex;
  justify-content: center;
  align-items: center;
}
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!