Touch Ripple For Web
Use web components to implement efficient and simple and flexible touch ripple effects.
Preview
This is just a preview of a simple example of that package.
This may be different from the real thing (by gif)
How to apply ripple element
Please refer to the following codes for details!
Staticly
This is a solution of converting a string into a function and using it.
Not recommended to use it in this way and it can mainly be used for debugging purposes.
<touch-ripple ontap="console.log('tap!')">
<h1 style="padding: 15px;">
Hello, world!
</h1>
</touch-ripple>
Locally
This is the most ideal and widely used solution.
<touch-ripple id="ripple">...</touch-ripple>
<script>
const ripple = document.getElementById("ripple");
ripple.ontap = () => console.log("tap!");
ripple.ondoubletap = () => console.log("double tap!");
ripple.onlongtap = () => console.log("long tap!");
</script>
How to wait callback until ripple effects are spread all?
This is can implement by adding a attribute wait
to a touch-ripple element.
<touch-ripple ontap="() => ..." wait>
How to use with react in typescript?
This is can easily implement this by adding import like the code below.
import "web-touch-ripple";
import { TouchRipple } from "web-touch-ripple/jsx";
export function TestPage() {
return (
<TouchRipple onTap={() => console.log("tap!")}>
<h1>Hello, world!</h1>
</TouchRipple>
);
}
Static variables of CSS
Name | Description | Default Value |
---|
--ripple | background color of touch-ripple effect. | rgba(0, 0, 0, 0.2) |
--ripple-fadein-duration | Duration until the ripple effect completely fills the element. | 0.25s |
--ripple-fadein-curve | This is curve about fade-in and spread animation of ripples. | cubic-bezier(.2,.3,.4,1) |
--ripple-fadeout-duration | Duration until the ripple effect disappears. | 0.4s |
--ripple-fadeout-curve | This is curve about fade-out animation of ripples. | default of browser |
--ripple-cancel-duration | This is curve about fade-out animation of ripples when cancels. | 0s |
--ripple-cancel-curve | This is curve about fade-out animation of ripples when cancels. | default of browser |
--ripple-blur-radius | The blur effect radius of touch ripple. | 15px |
--ripple-lower-scale | The ripple scale of start point. | 0.3 |
--ripple-upper-scale | The ripple scale of end point. | 1 |
--tap-preview-duration | The rejectable duration about tap event. | 0.15s |
--tappable-duration | After a pointer down occurs, gestures are rejected after this duration. | none |
--double-tappable-duration | This duration required to define if it is a double tap. | 0.1s |
--ripple-overlap-behavior | This option defines the behavior of a touch ripple when it overlaps. (overlappable, cancel, ignoring) | overlappable |
How to customize gestures?
Use the Gesture Arena
and Gesture Recognizer
provide on this package.
this.arena = new GestureArena();
this.arena.registerBuilder(() =>
new TapGestureRecognizer(...args)
);
How to make gesture recognizer?
Please refer to the following codes for details!
export class TouchRippleGestureRecogzier extends GestureRecognizer { ... }
export class TestGestureRecognizer extends TouchRippleGestureRecogzier {
constructor(
public callback1: GestureEventCallback,
public callback2: GestureEventCallback,
public callback3: GestureEventCallback,
) {
super();
}
pointerDown(position: PointerPosition): void { ... }
pointerMove(positoin: PointerPosition): void { ... }
pointerUp(positoin: PointerPosition): void { ... }
pointerCancel(positoin: PointerPosition): void { ... }
dispose(): void {
}
onAccept(): void { ... }
onReject(): void { ... }
}