Função translate(): Movendo elementos (X, Y, Z)
Aprenda a deslocar elementos horizontalmente, verticalmente e em profundidade.
A função translate() é uma das mais fundamentais e frequentemente usadas dentro da propriedade transform. Ela permite que você desloque um elemento de sua posição original no layout, sem afetar a posição dos elementos vizinhos. É como se você pegasse o elemento e o "empurrasse" para um lado, para cima ou para baixo, ou até mesmo para frente e para trás em um espaço 3D.
Pense na função translate() como um "teletransporte visual" para seus elementos. O elemento ainda ocupa o mesmo espaço no fluxo do documento, mas sua representação visual é movida para outro lugar.
Como funciona translate()
A função translate() aceita um ou mais valores que representam o deslocamento ao longo dos eixos X (horizontal), Y (vertical) e Z (profundidade).
1. translate(X, Y) (2D)
Esta é a forma mais comum e permite mover o elemento em duas dimensões.
X: Valor para o deslocamento horizontal.- Valores positivos movem para a direita.
- Valores negativos movem para a esquerda.
Y: Valor para o deslocamento vertical.- Valores positivos movem para baixo.
- Valores negativos movem para cima.
Sintaxe: transform: translate(<valor-X>, <valor-Y>);
Exemplos:
transform: translate(50px, 100px);- Move o elemento 50 pixels para a direita e 100 pixels para baixo.
transform: translate(-20px, -30px);- Move o elemento 20 pixels para a esquerda e 30 pixels para cima.
transform: translate(50%, 0);- Move o elemento 50% da sua própria largura para a direita. (Útil para centralização).
2. translateX(X) (2D)
Move o elemento apenas ao longo do eixo horizontal (X).
Sintaxe: transform: translateX(<valor-X>);
Exemplo:
transform: translateX(75px);- Move o elemento 75 pixels para a direita.
3. translateY(Y) (2D)
Move o elemento apenas ao longo do eixo vertical (Y).
Sintaxe: transform: translateY(<valor-Y>);
Exemplo:
transform: translateY(-40px);- Move o elemento 40 pixels para cima.
4. translateZ(Z) (3D)
Move o elemento ao longo do eixo de profundidade (Z). Para que translateZ() tenha um efeito visível, o elemento pai (ou um ancestral) precisa ter a propriedade perspective definida.
Z: Valor para o deslocamento em profundidade.- Valores positivos movem o elemento para mais perto do observador (parece maior).
- Valores negativos movem o elemento para mais longe do observador (parece menor).
Sintaxe: transform: translateZ(<valor-Z>);
Exemplo:
transform: translateZ(100px);- Move o elemento 100 pixels para mais perto.
5. translate3d(X, Y, Z) (3D)
Esta é a forma 3D completa, permitindo mover o elemento em todos os três eixos de uma vez.
Sintaxe: transform: translate3d(<valor-X>, <valor-Y>, <valor-Z>);
Exemplo:
transform: translate3d(50px, 20px, 80px);- Move 50px para a direita, 20px para baixo e 80px para mais perto.
Exemplo Prático:
<!DOCTYPE html>
<html lang="pt-BR">
<head>
<meta charset="UTF-8">
<title>Função translate()</title>
<style>
body {
font-family: Arial, sans-serif;
display: flex;
flex-wrap: wrap;
gap: 30px;
justify-content: center;
align-items: center;
min-height: 100vh;
background-color: #f4f4f4;
padding: 20px;
/* Para ver o efeito 3D, precisamos de perspectiva no pai */
perspective: 1000px; /* Define a profundidade da perspectiva */
}
.box {
width: 120px;
height: 120px;
background-color: #FF5733;
border: 2px solid #C70039;
display: flex;
justify-content: center;
align-items: center;
color: white;
font-weight: bold;
font-size: 1.1em;
transition: transform 0.4s ease-out; /* Transição suave */
cursor: pointer;
position: relative; /* Para que o z-index funcione se houver sobreposição */
}
.box:hover {
background-color: #FFC300;
}
/* --- Exemplos de translate() --- */
.translate-xy-box:hover {
transform: translate(30px, 30px); /* Move direita e para baixo */
}
.translate-x-box:hover {
transform: translateX(-40px); /* Move para a esquerda */
}
.translate-y-box:hover {
transform: translateY(50px); /* Move para baixo */
}
.translate-z-box {
/* Para ver o efeito de translateZ, o elemento precisa de um contexto 3D */
/* O body já tem perspective, mas o elemento precisa de transform-style */
transform-style: preserve-3d;
}
.translate-z-box:hover {
transform: translateZ(150px); /* Move para frente (parece maior) */
}
.translate3d-box {
transform-style: preserve-3d;
}
.translate3d-box:hover {
transform: translate3d(20px, -20px, 100px); /* Move em X, Y e Z */
}
.centralize-box {
position: absolute; /* Para demonstrar centralização com translate */
top: 50%;
left: 50%;
transform: translate(-50%, -50%); /* Centraliza o elemento */
background-color: #33FF57;
border-color: #008000;
width: 150px;
height: 150px;
z-index: 10; /* Para ficar acima dos outros */
}
.centralize-box:hover {
transform: translate(-50%, -50%) scale(1.1); /* Combina centralização com escala */
}
</style>
</head>
<body>
<div class="box translate-xy-box">translate(X,Y)</div>
<div class="box translate-x-box">translateX(X)</div>
<div class="box translate-y-box">translateY(Y)</div>
<div class="box translate-z-box">translateZ(Z)</div>
<div class="box translate3d-box">translate3d(X,Y,Z)</div>
<div class="box centralize-box">Centralizar com translate</div>
</body>
</html>
Resultado:
- Passe o mouse sobre cada caixa para ver o efeito de
translate()em ação. - Observe como a caixa
translate-z-boxparece "saltar" para fora da tela quando você passa o mouse, devido aoperspectivenobody. - A caixa
centralize-boxdemonstra uma técnica comum para centralizar elementos.
Pontos Chave:
- Unidades: Você pode usar qualquer unidade CSS válida (px, %, em, rem, vw, vh).
- Centralização:
translate(-50%, -50%)é uma técnica poderosa para centralizar elementos quando combinada comtop: 50%; left: 50%;em um elemento posicionado (absolute,fixed,relative). - Contexto 3D: Para que
translateZ()etranslate3d()tenham um efeito visual de profundidade, um elemento ancestral (geralmente o pai) precisa ter a propriedadeperspectivedefinida. - Não afeta o layout: Lembre-se que
translate()move o elemento visualmente, mas o espaço que ele ocupa no layout permanece o mesmo.
A função translate() é um bloco de construção essencial para criar animações e interações, permitindo que você controle o posicionamento visual dos seus elementos de forma precisa e eficiente.