dactylo
Typewriter effect in JS using CSS.
By Rémino Rem
https://remino.net/
Docs | Code Repo | npm Package
Installation
npm install dactyloUsage
Apply the effect automatically:
import 'dactylo/auto'Or call it yourself:
import { dactylo } from 'dactylo'
dactylo(document.body)Or configure the groups yourself:
dactylo({
root: document.querySelector('main'),
caret: '_',
prompt: '>',
startDelay: 600,
groups: [
{
sels: 'h1, h2',
duration: 600,
},
{
sels: 'p, li',
interval: 18,
parallel: true,
},
],
})Options
caret: character shown after the typed output. Default:_.prompt: character shown before typing starts. Default:>.root: parent node to search. Default:document.body.startDelay: milliseconds to show the prompt before typing starts. Default:600.groups: selector groups to type. By default, headings run first in parallel, then body text runs in parallel, then links and controls run in parallel.
Each group accepts:
sels: selector string or array of selector strings.notIn: parent selectors to exclude.duration: total milliseconds for each element in the group. Default:500.interval: milliseconds per character. Overridesdurationwhen set.parallel: type all matching elements at once instead of in series.
Add data-dactylo-skip to any element that should not be processed.
API
const controller = dactylo(document.body)
await controller.finished
controller.reset()The finished promise resolves after all groups complete. The reset() method restores any element that is still typing.
Development
npm install
npm run dev
npm run buildThe library source lives in src/lib. The documentation site is built with Astro and lives in the rest of src.
Contributing
- Fork the repository.
- Create a feature branch:
git checkout -b feature/amazing-feature. - Make your changes.
- Run
npm run build. - Commit, push, and open a pull request.
Issues and ideas are welcome.
Licence
Licensed under the ISC licence. See LICENSE.md.