CSS

CSS Translate() Property: Syntax, Usage, and Examples

The CSS translate() function moves elements from their original position on the page. It’s part of the transform property and lets you shift elements along the X and Y axes without changing their layout space. The CSS translate property is useful for animations, hover effects, UI positioning, and responsive layouts—offering precise control over how elements appear and move.

How to Use the CSS Translate Property

You apply translate() as a value to the transform property. The function accepts one or two arguments: the amount to move an element horizontally and vertically.

selector {
  transform: translate(x, y);
}
  • x moves the element horizontally (left or right).
  • y moves the element vertically (up or down).

You can use pixel values (px), percentages (%), em, or other length units.

.box {
  transform: translate(50px, 20px);
}

This moves the box 50 pixels to the right and 20 pixels down from its original position.

If you only need to move on one axis, you can use translateX() or translateY():

.move-right {
  transform: translateX(30px);
}

.move-down {
  transform: translateY(40px);
}

When to Use Translate Property CSS

You can use CSS translate for both practical layout adjustments and creative animations. It works well when:

You Want to Move Elements Without Affecting Surrounding Layout

Unlike margin or position, transform: translate() doesn’t take up space in the layout. The element appears moved, but its original spot remains the same in the document flow.

You’re Creating Hover Effects or Transitions

Use translate to create smooth movement on interaction:

.card:hover {
  transform: translateY(-10px);
}

This gives a subtle "lift" effect, great for buttons, tiles, or cards.

You Need Smooth Performance for Animation

CSS translate is GPU-accelerated in most browsers, which means animations using it are faster and smoother compared to properties like top, left, or margin.

Examples of Translate in CSS

Translate on Hover

.button {
  transition: transform 0.3s ease;
}

.button:hover {
  transform: translateY(-5px);
}

This moves the button slightly upward when hovered, providing a responsive feel.

Slide an Element from the Side

.panel {
  transform: translateX(-100%);
  transition: transform 0.4s ease;
}

.panel.open {
  transform: translateX(0);
}

Use this for off-canvas menus, modals, or drawers.

Animate Entry on Scroll

.fade-in {
  opacity: 0;
  transform: translateY(50px);
  transition: all 0.5s ease-out;
}

.fade-in.visible {
  opacity: 1;
  transform: translateY(0);
}

This creates a scroll animation effect where the element fades in and moves into place.

Learn More About Translate in CSS

Percentage-Based Movement

You can use percentages to move elements relative to their own size. For example:

.slider {
  transform: translateX(100%);
}

This moves the element to the right by 100% of its own width.

This is ideal for sliding transitions, carousel effects, or dynamic UI panels.

Combining Translate with Other Transforms

You can chain multiple transform functions together:

.transform-box {
  transform: translate(20px, 10px) scale(1.2) rotate(10deg);
}

The order of transforms matters. Typically, you want to translate first, then apply scale or rotate.

3D Translation with TranslateZ and Translate3d

To move elements in three dimensions, use translateZ() or translate3d():

.card {
  transform: translate3d(0, 0, 50px);
}

This brings the element 50 pixels closer in 3D space. Combine it with perspective for real 3D effects.

.container {
  perspective: 800px;
}

Animate with Keyframes Using Translate

@keyframes slideIn {
  from {
    transform: translateX(-100%);
  }
  to {
    transform: translateX(0);
  }
}

.banner {
  animation: slideIn 0.5s ease forwards;
}

This slides the banner in from the left using the translate function.

CSS Transform Translate vs Position

When deciding between transform: translate() and position: relative/top/left, remember:

  • transform doesn't affect document flow.
  • top/left moves elements in layout context and may trigger layout recalculations, which is more performance-intensive.
  • Use transform for animations and dynamic effects.
  • Use positioning for fixed layout needs.

Translate in CSS for Responsive Design

Because translate() can use percentages, it's great for responsive design. For example, centering an element:

.centered {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
}

This moves the element exactly to the center of its parent, both horizontally and vertically.

Translate with CSS Selectors by ID

You can apply translate styles using an ID:

#menu {
  transform: translateX(-100%);
  transition: transform 0.3s ease;
}

#menu.open {
  transform: translateX(0);
}

This is helpful for toggling navigation menus, dropdowns, or content sections.

Using the CSS ID selector allows you to apply the translate property precisely. The id selector in CSS targets one unique element, making it ideal for animation triggers tied to specific sections or modals.

Accessibility Considerations

When moving elements with translate, be cautious. If content appears visually in a different place than its layout position, screen readers might not follow. Use aria attributes and test with accessibility tools to ensure users with assistive technology have the same experience.

Learn CSS for Free
Start learning now
button icon
To advance beyond this tutorial and learn CSS by doing, try the interactive experience of Mimo. Whether you're starting from scratch or brushing up your coding skills, Mimo helps you take your coding journey above and beyond.

Sign up or download Mimo from the App Store or Google Play to enhance your programming skills and prepare for a career in tech.

You can code, too.

© 2025 Mimo GmbH