How to create a bouncing animation with CSS?
Define @keyframes bounce with 0%, 100% at translateY(0) and 50% at translateY(-20px) to create a basic bounce. 2. Apply the animation to an element using animation: bounce 0.6s ease-in-out infinite for smooth, continuous motion. 3. For realism, use @keyframes realistic-bounce with scale(1.1, 0.9) at 50% and ease-in-out timing to simulate squish on impact. Adjust height, duration, and effects like shadow or opacity for enhanced results. The animation is achieved using transform for performance and natural movement, ending with a complete sentence.
Creating a bouncing animation with CSS is straightforward using keyframes and the animation
property. Here's how you can make an element bounce up and down:

1. Define the Keyframes for Bouncing
Use @keyframes
to specify the animation behavior. A simple bounce can go from the top position, down (simulating a drop), and back up.
@keyframes bounce { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-20px); } }
This keyframe animation moves the element up by 20px at the midpoint and returns to the original position, creating a bounce effect.

2. Apply the Animation to an Element
Select the element you want to animate and apply the animation with desired timing and repetition.
.bounce-element { width: 50px; height: 50px; background-color: #3498db; margin: 100px auto; animation: bounce 0.6s ease-in-out infinite; }
bounce
: name of the keyframe animation0.6s
: duration of one cycleease-in-out
: makes the motion feel more natural (slows at start and end)infinite
: repeats the animation continuously
3. Make It Feel More Realistic (Optional)
For a more natural bounce, you can add scaling to simulate squish on impact.

@keyframes realistic-bounce { 0%, 100% { transform: translateY(0) scale(1); animation-timing-function: ease-out; } 50% { transform: translateY(-20px) scale(1.1, 0.9); animation-timing-function: ease-in; } }
This version slightly stretches the element vertically at the top and squashes it horizontally at the peak, mimicking physical compression.
Apply it the same way:
.bounce-element { animation: realistic-bounce 0.6s infinite; }
Tips for Better Results
- Adjust
translateY
value to control bounce height - Tweak animation duration for faster or slower bounces
- Use
animation-delay
if sequencing multiple bounces - Combine with
opacity
or shadow changes for added depth
Basically, it's about moving the element vertically with smooth timing. The key is using transform
for performance and ease-in-out
for natural motion. With small tweaks, you can simulate anything from a light hop to a heavy ball drop.
The above is the detailed content of How to create a bouncing animation with CSS?. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undress AI Tool
Undress images for free

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Backdrop-filter is used to apply visual effects to the content behind the elements. 1. Use backdrop-filter:blur(10px) and other syntax to achieve the frosted glass effect; 2. Supports multiple filter functions such as blur, brightness, contrast, etc. and can be superimposed; 3. It is often used in glass card design, and it is necessary to ensure that the elements overlap with the background; 4. Modern browsers have good support, and @supports can be used to provide downgrade solutions; 5. Avoid excessive blur values and frequent redrawing to optimize performance. This attribute only takes effect when there is content behind the elements.

User agent stylesheets are the default CSS styles that browsers automatically apply to ensure that HTML elements that have not added custom styles are still basic readable. They affect the initial appearance of the page, but there are differences between browsers, which may lead to inconsistent display. Developers often solve this problem by resetting or standardizing styles. Use the Developer Tools' Compute or Style panel to view the default styles. Common coverage operations include clearing inner and outer margins, modifying link underscores, adjusting title sizes and unifying button styles. Understanding user agent styles can help improve cross-browser consistency and enable precise layout control.

The style of the link should distinguish different states through pseudo-classes. 1. Use a:link to set the unreached link style, 2. a:visited to set the accessed link, 3. a:hover to set the hover effect, 4. a:active to set the click-time style, 5. a:focus ensures keyboard accessibility, always follow the LVHA order to avoid style conflicts. You can improve usability and accessibility by adding padding, cursor:pointer and retaining or customizing focus outlines. You can also use border-bottom or animation underscore to ensure that the link has a good user experience and accessibility in all states.

The best use scenario for CSS will-change attribute is to inform browser elements in advance of possible changes in order to optimize rendering performance, especially for animation or transition effects. ① It should be applied before the animation properties (such as transform, opacity or position) changes; ② Avoid premature use or long-term retention, and should be set before the change occurs and removed after completion; ③ It should only be used for necessary properties rather than using will-change:all; ④ Suitable for scenarios such as large scrolling animations, interactive UI components, and complex SVG/Canvas interfaces; ⑤ Modern browsers can usually optimize automatically, so there is no need to use will-change in all animations. Proper use can improve

Theaspect-ratioCSSpropertydefinesthewidth-to-heightratioofanelement,ensuringconsistentproportionsinresponsivedesigns.1.Itisapplieddirectlytoelementslikeimages,videos,orcontainersusingsyntaxsuchasaspect-ratio:16/9.2.Commonusecasesincludemaintainingres

Tocenteradivhorizontally,setawidthandusemargin:0auto.2.Forhorizontalandverticalcentering,useFlexboxwithjustify-content:centerandalign-items:center.3.Alternatively,useCSSGridwithplace-items:center.4.Forolderbrowsers,useabsolutepositioningwithtop:50%,l

Define@keyframesbouncewith0%,100%attranslateY(0)and50%attranslateY(-20px)tocreateabasicbounce.2.Applytheanimationtoanelementusinganimation:bounce0.6sease-in-outinfiniteforsmooth,continuousmotion.3.Forrealism,use@keyframesrealistic-bouncewithscale(1.1

To achieve CSS element overlap, you need to use positioning and z-index attributes. 1. Use position and z-index: Set elements to non-static positioning (such as absolute, relative, etc.), and control the stacking order through z-index, the larger the value, the higher the value. 2. Common positioning methods: absolute is used for precise layout, relative is used for relatively offset and overlap adjacent elements, fixed or sticky is used for fixed positioning of suspended layers. 3. Actual example: By setting the parent container position:relative, child element position:absolute and different z-index, the card overlap effect can be achieved.
