"If a worker wants to do his job well, he must first sharpen his tools." - Confucius, "The Analects of Confucius. Lu Linggong"
Front page > Programming > How to Create a Smooth Left-Right CSS Animation for a Div Within Its Container?

How to Create a Smooth Left-Right CSS Animation for a Div Within Its Container?

Posted on 2025-03-25
Browse:910

How to Create a Smooth Left-Right CSS Animation for a Div Within Its Container?

Generic CSS Animation for Left-Right Movement

In this article, we'll explore creating a generic CSS animation to move a div left and right, reaching the edges of its container. This animation can be applied to any div with absolute positioning, regardless of its unknown length.

The Issue: Using Left Directly Causes a Momentary Disappearance

Initially, using left at 0% and 100% can cause the div to momentarily disappear while moving. This is because at 100%, the div's left property overshoots the container's width, leading to a negative value and a position off the screen.

A More Fluid Solution: Mixing Transform and Left

To address this issue and achieve a smooth, linear movement, we introduce transform. This allows us to move the div relative to its current position, ensuring it doesn't overshoot the container's bounds.

Here's an updated version of the animation using transform:

@keyframes destraSinistra {
  0% {
    left: 0;
  }
  100% {
    left: 100%;
    transform: translateX(-100%);
  }
}

#div1 {
  /* ... */
  animation: destraSinistra 1s linear infinite alternate;
}

In this code, the keyframe at 100% utilizes both left and transform. Left moves the div to the right edge, while transform further translates it to the left to compensate for the overshoot. This combination effectively prevents the div from going off-screen.

Latest tutorial More>

Disclaimer: All resources provided are partly from the Internet. If there is any infringement of your copyright or other rights and interests, please explain the detailed reasons and provide proof of copyright or rights and interests and then send it to the email: [email protected] We will handle it for you as soon as possible.

Copyright© 2022 湘ICP备2022001581号-3