>웹 프론트엔드 >CSS 튜토리얼 >CSS에서 `transform:translate(-50%, -50%)`는 어떻게 완벽한 센터링을 달성합니까?

CSS에서 `transform:translate(-50%, -50%)`는 어떻게 완벽한 센터링을 달성합니까?

Barbara Streisand
Barbara Streisand원래의
2024-12-03 01:58:12755검색

How Does `transform: translate(-50%, -50%)` Achieve Perfect Centering in CSS?

변환의 마법: 번역(-50%, -50%)

큰 이미지나 전체 화면 요소를 다룰 때, CSS 개발자는 종종 다음과 같은 호기심 많은 코드 조각을 사용합니다.

.item {
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
}

이 코드의 목적은 무엇이며, 어떻게 작동하나요?

변환 속성은 원래 참조 지점을 기준으로 요소의 위치를 ​​이동합니다. 이 특정한 경우,translate(-50%, -50%)는 X축과 Y축 모두의 요소를 자체 크기의 -50%만큼 변환합니다.

이것이 왜 필요한지 이해하려면 살펴보겠습니다.

  • translateX(-50%): 요소를 너비의 50%만큼 왼쪽으로 이동하고 중심점을 원래 위치로 이동합니다. 이전 왼쪽 상단 모서리.
  • translateY(-50%): 요소를 높이의 50%만큼 위쪽으로 이동하고 다시 중심점을 원래 왼쪽 상단 모서리로 가져옵니다.

상단 및 왼쪽을 50%로 설정하면 처음에 요소의 왼쪽 상단 모서리가 상위 컨테이너의 중앙으로 이동됩니다. 그러나 이는 상위 요소의 중심에서 요소의 중심점 오프셋을 유지합니다.

transform:translate(-50%, -50%)는 요소를 왼쪽으로 다시 이동하고 위쪽으로 절반만큼 이동하여 이를 수정합니다. 그 자체의 크기. 이렇게 하면 이제 요소의 중심점이 상위 요소의 중심점과 정렬되어 완벽한 수평 및 수직 중심점이 달성됩니다.

효과를 시각화하려면 다음 코드 조각 위로 마우스를 가져가세요.

body {
  margin: 0;
  padding: 0;
}

.parent {
  background-color: #ccc;
  width: 100vw;
  height: 100vh;
  position: relative;
}

.child {
  background-color: rgba(0,0,255,0.5);
  width: 50px;
  height: 50px;
  position: absolute;
  top: 50%;
  left: 50%;
}

.child::before {
  background-color: rgba(255, 0, 0, 0.5);
  position: absolute;
  top: 0;
  left: 0;
  width: 50px;
  height: 50px;
  content: '';
  transition: all .5s ease-in-out;
}

body:hover .child::before {
  transform: translate(-50%, -50%);
}

상위 컨테이너 위로 마우스를 가져가면 중앙에 있는 요소의 빨간색 "유령"이 어떻게 제자리로 부드럽게 이동하는지 확인하세요. 이는 CSS에서 완벽한 중앙 정렬을 달성하기 위해 변환: 번역(-50%, -50%)을 사용하는 방법을 보여줍니다.

위 내용은 CSS에서 `transform:translate(-50%, -50%)`는 어떻게 완벽한 센터링을 달성합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.