Transition timing functions control how a CSS animation speeds up or slows down. They make changes look smooth and natural.
Transition timing functions in CSS
Start learning this pattern below
Jump into concepts and practice - no test required
transition-timing-function: ease | linear | ease-in | ease-out | ease-in-out | cubic-bezier(n,n,n,n) | steps(n, start|end);ease is the default and starts slow, speeds up, then slows down.
You can create custom speeds with cubic-bezier or step changes with steps.
transition-timing-function: ease;transition-timing-function: linear;transition-timing-function: ease-in;transition-timing-function: cubic-bezier(0.1, 0.7, 1.0, 0.1);
This page shows four blue boxes stacked vertically, each with a label below. Each box uses a different transition timing function for scaling up when hovered or focused. You can see how the speed changes feel different for each box.
Keyboard users can also focus on each box using Tab key, making it accessible.
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Transition Timing Functions Demo</title> <style> body { font-family: Arial, sans-serif; padding: 2rem; background-color: #f0f0f0; } .box { width: 150px; height: 150px; margin: 1rem; background-color: #4a90e2; border-radius: 0.5rem; display: inline-block; transition-property: transform; transition-duration: 1.5s; cursor: pointer; } .ease { transition-timing-function: ease; } .linear { transition-timing-function: linear; } .ease-in { transition-timing-function: ease-in; } .ease-out { transition-timing-function: ease-out; } .box:hover, .box:focus { transform: scale(1.5); } .label { text-align: center; margin-top: 0.5rem; font-weight: bold; color: #333; } </style> </head> <body> <div> <div class="box ease" tabindex="0" aria-label="Box with ease timing function"></div> <div class="label">ease</div> </div> <div> <div class="box linear" tabindex="0" aria-label="Box with linear timing function"></div> <div class="label">linear</div> </div> <div> <div class="box ease-in" tabindex="0" aria-label="Box with ease-in timing function"></div> <div class="label">ease-in</div> </div> <div> <div class="box ease-out" tabindex="0" aria-label="Box with ease-out timing function"></div> <div class="label">ease-out</div> </div> </body> </html>
Use transition-timing-function with transition-property and transition-duration for smooth animations.
Try different timing functions to see which feels best for your design.
Remember to test animations for accessibility and avoid too fast or too slow transitions.
Transition timing functions control the speed curve of CSS animations.
Common values include ease, linear, ease-in, and ease-out.
They help make changes look smooth and natural on your webpage.
Practice
transition-timing-function control?Solution
Step 1: Understand the property purpose
Thetransition-timing-functiondefines how the speed of the transition changes over time, like speeding up or slowing down.Step 2: Compare options to definition
Only The speed curve of the transition animation describes controlling the speed curve of the animation, others describe unrelated properties.Final Answer:
The speed curve of the transition animation -> Option AQuick Check:
Timing function controls speed curve [OK]
- Confusing timing function with delay
- Thinking it changes color or size
- Mixing with transition-duration
Solution
Step 1: Recall CSS property syntax
CSS properties use colon:to assign values without quotes for keywords.Step 2: Check each option
transition-timing-function: linear; uses correct syntax: property, colon, value without quotes or parentheses. Others have invalid syntax.Final Answer:
transition-timing-function: linear; -> Option BQuick Check:
Correct CSS syntax uses colon and no quotes [OK]
- Using equals sign instead of colon
- Adding quotes around keywords
- Adding parentheses to keywords
div {
width: 100px;
height: 100px;
background: blue;
transition: width 2s ease-in;
}
div:hover {
width: 200px;
}Solution
Step 1: Understand
ease-intiming functionease-inmeans the animation starts slow and speeds up towards the end.Step 2: Apply to width change on hover
When hovering, width changes from 100px to 200px over 2 seconds, starting slow and accelerating.Final Answer:
The width will increase slowly at first, then speed up. -> Option CQuick Check:
ease-in= slow start, speed up [OK]
ease-in means slow start, speed up [OK]- Confusing
ease-inwithease-out - Expecting constant speed
- Thinking no animation occurs
button {
transition-timing-function linear;
transition-duration: 1s;
}Solution
Step 1: Check CSS property syntax
CSS properties require a colon:between property and value.Step 2: Locate error in snippet
The linetransition-timing-function linear;misses the colon after the property name.Final Answer:
Missing colon aftertransition-timing-function-> Option AQuick Check:
Property-value pairs need colon [OK]
- Omitting colon after property name
- Confusing property names
- Assuming semicolon is optional
transition-timing-function should you use?Solution
Step 1: Understand timing function meanings
ease-outmeans the animation starts fast and slows down at the end, exactly what is needed.Step 2: Compare other options
ease-inis slow start, fast end;linearis constant speed;ease-in-outis slow start and end with fast middle.Final Answer:
ease-out -> Option DQuick Check:
Fast start, slow end =ease-out[OK]
ease-out = fast start, slow end [OK]- Mixing up
ease-inandease-out - Choosing
linearfor smooth easing - Assuming
ease-in-outfits all cases
