Home >Web Front-end >CSS Tutorial >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?

Susan Sarandon
Susan SarandonOriginal
2024-10-30 12:34:03450browse

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.

The above is the detailed content of How to Create a Smooth Left-Right CSS Animation for a Div Within Its Container?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn