위의 예에서 요소는 상단에서 100px로 이동하고 원래 위치의 왼쪽에서 50px로 이동합니다.
<:> 변환을 사용할 때 : 번역 (x, y) 우리는 상대 위치를 사용하는 것과 매우 유사한 시각적 결과를 얻습니다. 위와 동일한 결과는 다음과 같은 스 니펫으로 달성 될 수 있습니다.
<span><span>.thing</span> {
</span> <span>position: relative;
</span> <span>top: 100px;
</span> <span>left: 50px;
</span><span>}</span>
이 경우 요소의 좌표를 x 축을 따라 50px로, y 축을 따라 100px로 변환합니다. 최종 결과는 이전 위치 예와 시각적으로 동일합니다.
그래서 왜 우리는 같은 일을하는 두 가지 방법이 있습니까? 글쎄,이 접근법들 사이에
가 가 있습니다
브라우저 지원
위치는 CSS2 속성이고 변환은 CSS3 속성입니다. 2D 변환을 지원하지 않는 유일한 브라우저는 IE8 이하입니다.
IE의 이전 버전을 지원 해야하는 경우 변환은 옵션이 아닙니다.
GPU 가속도
변환 속성은 가능한 경우 하드웨어 가속도를 사용하므로 Translate ()를 사용하면 위치에 애니메이션이나 전환이 요소에 사용되는 경우 성능 혜택이 표시됩니다.
전환 또는 키 프레임 애니메이션의 일부로 요소를 이동하려면 위치가 아닌 번역을 사용하는 것이 좋습니다 (이는 절대 및 상대 포지셔닝 모두에 적용됩니다). 설명 및 공연 프로파일 링을 포함하여 더 깊이 있으려면 Paul Irish 의이 비디오를 확인하십시오.
백분율 기반 값은 다르게 행동합니다
이 두 가지 요소를 배치하는 방법 사이의 주요 차이점 중 하나는 백분율 기반 값에 반응하는 방법입니다.
다음 마크 업과 스타일을 가져 가십시오 :
<span><span>.thing</span> {
</span> <span>transform: translate(50px, 100px);
</span><span>}</span>
두 요소 모두 왼쪽 가장자리에서 50%에서 오프셋이 주어졌습니다.
빨간색 상자의 왼쪽 가장자리는 모 컨테이너의 가장자리에서 50% 떨어져 있습니다.
파란색 상자의 왼쪽 가장자리는 모 컨테이너의 왼쪽 가장자리에서 100px 떨어져 있습니다. 이 거리는 200px의 50%가 100px이기 때문입니다
번역으로 백분율 값을 설정하면 백분율은 계산 된 너비 또는 높이의 요소의 백분율로 측정됩니다.
Codepen에서 sitepoint (@sitepoint)의 펜 vyyxgj를 참조하십시오
위치를 결합하고 함께 번역
최종 요점 중 하나는 위치와 변환이 두 가지 다른 속성이기 때문에 함께 결합 할 수 있다는 것입니다. 이를 통해 절대 포지셔닝을 결합하여 요소를 페이지의 매우 구체적인 위치에 배치 한 다음 해당 위치를 변환으로 수정할 수 있습니다.
이것의 예는 배치 요소가 위아래로 또는 왼쪽과 오른쪽에 애니메이션을 갖는 것일 수 있습니다. 또는 포지셔닝과 번역을 결합하여 유연한 수직 센터링을 달성 할 수 있습니다.
따라서 요소를 배치하는이 두 가지 방법을 사용하여 유사한 결과를 달성 할 수 있지만, 몇 가지 중요한 차이점이 있으며 각 접근 방식의 강점을 결합하면 정말 강력한 도구 세트가됩니다.
.
CSS에 대한 자주 묻는 질문 (FAQ)은 vs 위치 에 대해 번역합니다
CSS 번역과 위치의 주요 차이점은 무엇입니까? CSS 번역과 위치의 주요 차이점은 요소의 위치를 조작하는 방법에 있습니다. CSS 위치는 문서 흐름에서 요소의 위치를 변경하여 다른 요소의 레이아웃에 영향을 줄 수 있습니다. 반면, CSS Translate는 다른 요소의 레이아웃에 영향을 미치지 않고 요소를 움직이는 변환 함수입니다. 문서 흐름의 실제 위치가 아닌 시각적 렌더링 위치가 변경됩니다.
위치 대신 CSS를 사용해야하는시기는 언제입니까? 다른 요소의 레이아웃에 영향을 미칩니다. 또한 더 나은 성능과 매끄러운 애니메이션을 홍보하기 때문에 애니메이션에도 도움이됩니다. Translate는 그래픽 및 애니메이션을 렌더링하는 데 더 효율적인 GPU (그래픽 처리 장치)를 사용하기 때문에 CSS를 모두 동일한 요소에서 번역하고 위치를 사용할 수 있습니까?
예, 예, 그렇습니다. 동일한 요소에서 CSS 번역 및 위치를 모두 사용할 수 있습니다. 그러나 그들이 어떻게 협력하는지 이해하는 것이 중요합니다. 위치 속성은 먼저 문서 흐름에서 요소의 위치에 영향을 미치고 번역 함수는 해당 위치에서 요소를 이동합니다.
CSS는 왜 위치를 통해 애니메이션에 자주 권장 되는가? CSS Translate는 GPU를 사용하기 때문에 애니메이션에 권장되는 경우가 많으며 그래픽 및 애니메이션을 렌더링하는 데 더 효율적입니다. 이로 인해 더 부드러운 애니메이션과 CPU가 적은 CPU (Central Processing Unit) 사용이 발생하여 웹 페이지의 전반적인 성능을 향상시킬 수 있습니다. CSS는 모든 유형의 위치 값으로 작동합니까? CSS는 정적, 상대, 절대, 고정 및 끈적 끈적한 모든 유형의 위치 값과 함께 작동합니다. 번역 함수는 위치 값에 관계없이 요소를 위치에서 이동합니다.
CSS와 함께 사용할 수있는 단위는 무엇입니까?
CSS 번역을 사용하면 픽셀 값, 백분율 및 뷰포트 장치를 사용할 수 있습니다. 백분율은 부모가 아닌 요소 자체의 크기와 관련이 있습니다. 이것은 당신에게 요소의 움직임에 대한 유연성과 제어를 제공합니다. CSS 위치로 요소의 움직임을 애니메이션 할 수 있습니까?
기술적으로 요소의 움직임을 애니메이션 할 수는 있지만 요소의 움직임은 기술적으로 가능합니다. CSS 위치, 권장되지 않습니다. 위치 속성을 변경하면 레이아웃 이동이 트리거되어 성능에 부정적인 영향을 줄 수 있기 때문입니다. 애니메이션의 경우 CSS 번역이 더 나은 옵션입니다.
CSS 번역이 요소의 z-index에 어떤 영향을 미칩니 까?
CSS 번역은 요소의 z-index에 직접적인 영향을 미치지 않습니다. 그러나 변환 기능을 요소에 적용하면 새로운 스태킹 컨텍스트가 생겨 z- 인덱스가 적용되는 방식에 영향을 줄 수 있습니다. CSS를 사용할 수 있습니까? CSS 번역을 사용하여 요소를 대각선으로 움직일 수 있습니다. 번역 함수에서 x와 y 값을 모두 지정하여이를 수행 할 수 있습니다. 예를 들어, 번역 (50px, 50px)은 요소 50 픽셀을 오른쪽으로, 50 픽셀로 이동하여 효과적으로 대각선 움직임을 만듭니다.
CSS는 요소의 클릭 가능한 영역에 영향을 미칩니 까?