> 웹 프론트엔드 > CSS 튜토리얼 > CSS 수직 및 수평 전체 센터링 매뉴얼

CSS 수직 및 수평 전체 센터링 매뉴얼

高洛峰
풀어 주다: 2017-02-04 16:01:47
원래의
1289명이 탐색했습니다.

센터링은 항상 CSS의 일반적인 불만 사항이었습니다. 구현하기가 왜 그렇게 어려운가요? 그래서 누군가 비웃었습니다. 문제는 방법이 없는 것이 아니라 상황에 따라 다를 뿐이지 어떤 방법을 사용해야 하는지 파악하기 어렵다고 생각합니다.

그래서 저는 그 사람의 일이 더 쉬워지길 바라면서 이 글을 썼습니다.

가로 중심

인라인 요소(inline 또는 inline-*)를 가운데에 배치하시겠습니까?

상위 블록 수준 요소를 기준으로 가운데에 배치할 수 있습니다

.center-children {
  text-align: center;
}
로그인 후 복사

블록 수준 요소(블록 수준)가 중앙에 있습니까?

margin-left 및 margin-right를 자동으로 설정하여 중앙에 배치할 수 있습니다(또한 너비도 설정합니다. 그렇지 않으면 전체 컨테이너를 채우고 볼 수 없습니다). 센터링 효과)와 같은.

.center-me {
  margin: 0 auto;
}
로그인 후 복사

블록 수준 요소가 많으면 어떻게 되나요?

행에서 수평으로 중앙에 배치되어야 하는 매우 균일한 블록 수준 요소가 있는 경우 다른 디스플레이 유형을 사용하는 것이 좋습니다. 다음은 inline-block과 flex를 사용한 예입니다.

<main class="inline-block-center">
  <div>
    I&#39;m an element that is block-like with my siblings and we&#39;re centered in a row.
  </div>
  <div>
    I&#39;m an element that is block-like with my siblings and we&#39;re centered in a row. I have more content in me than my siblings do.
  </div>
  <div>
    I&#39;m an element that is block-like with my siblings and we&#39;re centered in a row.
  </div>
</main>
<main class="flex-center">
  <div>
    I&#39;m an element that is block-like with my siblings and we&#39;re centered in a row.
  </div>
  <div>
    I&#39;m an element that is block-like with my siblings and we&#39;re centered in a row. I have more content in me than my siblings do.
  </div>
  <div>
    I&#39;m an element that is block-like with my siblings and we&#39;re centered in a row.
  </div>
</main>
로그인 후 복사
rrree

세로 센터링

CSS에서는 세로 센터링이 약간 까다롭습니다

텍스트 및 링크와 같은 인라인 요소(인라인 또는 인라인-*)를 센터링합니까?

한 줄인가요? <… line-height를 사용하고 높이와 동일하게 만들어 텍스트를 정렬합니다.

아아아

다선인가요?

상단 및 하단과 같은 패딩 방법도 여러 줄을 중앙에 배치할 수 있지만 이 방법이 작동하지 않으면 이러한 텍스트의 컨테이너를 표 셀 모드에 표시하도록 할 수 있습니다. , 그런 다음 텍스트를 설정합니다. talbe

body {
  background: #f06d06;
  font-size: 80%;
}
main {
  background: white;
  margin: 20px 0;
  padding: 10px;
}
main div {
  background: black;
  color: white;
  padding: 15px;
  max-width: 125px;
  margin: 5px;
}
.inline-block-center {
  text-align: center;
}
.inline-block-center div {
  display: inline-block;
  text-align: left;
}
.flex-center {
  display: flex;
  justify-content: center;
}
로그인 후 복사
.link {
  padding-top: 30px;
  padding-bottom: 30px;
}
로그인 후 복사

블록 레벨 요소(블록 레벨)가 수직으로 가운데에 맞춰지나요?

요소의 높이를 알고 계시나요?

여러 가지 이유로 웹페이지 레이아웃의 높이를 모르는 경우가 많습니다.

그러나 레이아웃의 높이가 고정된 경우 다음과 같이 세로로 가운데에 배치할 수 있습니다.

.center-text-trick {
  height: 100px;
  line-height: 100px;
  white-space: nowrap;
}
로그인 후 복사

요소의 높이를 알 수 없습니다

알 수 없지만 너비를 50%까지 늘릴 수는 있습니다

rree
flexbox를 사용할 수 있나요?

Flexbox를 사용하는 것이 훨씬 쉽습니다.

<table>
  <tr>
    <td>
      I&#39;m vertically centered multiple lines of text in a real table cell.
    </td>
  </tr>
</table>
<div class="center-table">
  <p>I&#39;m vertically centered multiple lines of text in a CSS-created table layout.</p>
</div>
로그인 후 복사
body {
  background: #f06d06;
  font-size: 80%;
}
table {
  background: white;
  width: 240px;
  border-collapse: separate;
  margin: 20px;
  height: 250px;
}
table td {
  background: black;
  color: white;
  padding: 20px;
  border: 10px solid white;
  /* default is vertical-align: middle; */
}
.center-table {
  display: table;
  height: 250px;
  background: white;
  width: 240px;
  margin: 20px;
}
.center-table p {
  display: table-cell;
  margin: 0;
  background: black;
  color: white;
  padding: 20px;
  border: 10px solid white;
  vertical-align: middle;
}
로그인 후 복사

가로와 세로를 동시에 가운데에 배치하는 것이 훨씬 쉽습니다.

요소의 너비와 높이가 고정되어 있습니다


요소의 너비와 높이가 고정된 경우 먼저 중앙에 배치한 다음 위로 이동해야 합니다. 왼쪽으로 50% 너비가 충분하며 이 솔루션은 브라우저 간 지원이 뛰어납니다.

.parent {
  position: relative;
}
.child {
  position: absolute;
  top: 50%;
  height: 100px;
  margin-top: -50px; /* 如果没有使用: border-box; 的盒子模型则需要设置这个 */
}
로그인 후 복사

요소의 너비와 높이를 알 수 없습니다

높이와 너비(변수)를 모르는 경우 transofrm을 사용할 수 있습니다. 양방향 속성 Pan negative 50%

.parent {
  position: relative;
}
.child {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
}
로그인 후 복사

더 많은 CSS 수직 및 수평 중앙 정렬 매뉴얼 관련 기사를 보려면 PHP 중국어 웹사이트를 주목하세요!
관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿