diff --git a/snippets/pulse-loader.md b/snippets/pulse-loader.md new file mode 100644 index 000000000..b6aa9d084 --- /dev/null +++ b/snippets/pulse-loader.md @@ -0,0 +1,60 @@ +--- +title: Pulse loader +tags: animation,beginner +--- + +Creates a pulse effect loader animation using the `animation-delay` property. + +```html +
+
+
+
+``` + +```css +.ripple-loader { + position: relative; + width: 64px; + height: 64px; +} + +.ripple-loader div { + position: absolute; + border: 4px solid #76ff03; + border-radius: 50%; + animation: ripple-loader 1s ease-out infinite; +} + +.ripple-loader div:nth-child(2) { + animation-delay: -0.5s; +} + +@keyframes ripple-loader { + 0% { + top: 32px; + left: 32px; + width: 0; + height: 0; + opacity: 1; + } + 100% { + top: 0; + left: 0; + width: 64px; + height: 64px; + opacity: 0; + } +} +``` + +#### Explanation + +- Use `@keyframes` to define an animation at two points in the cycle, start (`0%`), where the two `
` elements have no `width` or `height` and are positioned at the center and end (`100%`), where both `
` elements have increased `width` and `height`, but their `position` is reset to `0`. +- Use `opacity` to transition from `1` to `0` when animating to give the `
` elements a disappearing effect as they expand. +- `.ripple-loader`, which is the parent container, has a predefined `width` and `height`. It uses `position: relative` to position its children. +- Use `animation-delay` on the second `
` element, so that each element starts its animation at a different time. + +#### Browser support + +- https://caniuse.com/#feat=css-animation