baffle.js
A tiny javascript library for obfuscating and revealing text in DOM elements.camwiegert.github.io/baffle
- ~1.8kb gzipped :zap:
- Dependency-free :tada:
- IE9+ :heavycheckmark:
// Select elements and start.
let b = baffle('.someSelector').start();
// Do something else.
someAsyncFunction(result => {
// Change the text and reveal over 1500ms.
b.text(text => result.text).reveal(1500);
});
Getting Started
Step 0: Install
Download the latest release or install with npm.npm install --save baffle
Step 1: Reference
If you linked baffle directly in your HTML, you can usewindow.baffle
. If you're using a module bundler, you'll need to import baffle.// CommonJS
let baffle = require('baffle');
// ES6
import baffle from 'baffle';
Step 2: Initialize
To initialize baffle, all you need to do is call it with some elements. You can pass a NodeList, Node, or CSS selector.// With a selector.
let b = baffle('.baffle');
// With a NodeList
let b = baffle(document.querySelectorAll('.baffle'));
// With a Node
let b = baffle(document.querySelector('.baffle'));
Step 3: Use It
Once you have a baffle instance, you have access to all of the baffle methods. Usually, you'll want tob.start()
and, eventually, b.reveal()
.// Start obfuscating...
b.start();
// Or stop obfuscating...
b.stop();
// Obfuscate once...
b.once();
// You can set options after initializing...
b.set({...options});
// Or change the text at any time...
b.text(text => 'Hi Mom!');
// Eventually, you'll want to reveal your text...
b.reveal(1000);
// And they're all chainable...
b.start()
.set({ speed: 100 })
.text(text => 'Hi dad!')
.reveal(1000);
Options
You can set options on baffle during initialization or anytime afterward withbaffle.set()
.// During initialize
baffle('.baffle', {
characters: '+#-•=~*',
speed: 75
});
// Any time with set()
b.set({
characters: '¯\_(ツ)_/¯',
speed: 25
});
The characters baffle uses to obfuscate your text. It can be a string or an array of characters.
options.characters
Default:'AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz~!@#$%^&*()-+=[]{}|;:,./<>?'
These are the characters that baffle ignores in your text when obfuscating it. You can pass in an array of characters.
options.exclude
Default:[' ']
This is the frequency (in milliseconds) at which baffle updates your text when running.
options.speed
Default:50
Methods
An instance of baffle has six methods, all of which are chainable.Obfuscates each element once, using
baffle.once()
options.characters
.
Starts obfuscating your elements, updating every
baffle.start()
options.speed
milliseconds.
Stops obfuscating your elements. This won't reveal your text. It will only stop updating it. To reveal it, use
baffle.stop()
reveal()
.
Reveals your text over
baffle.reveal([duration], [delay])
duration
milliseconds (default:0
), with the option to delay bydelay
milliseconds.
Updates instance options using the passed
baffle.set([options])
options
object. You can set any number of keys, even while running.
Updates the text in each element of your instance using function
baffle.text(fn)
fn
, which receives the current text as it's only parameter. The value returned fromfn
will be used as the new text.
- License MIT
- Made by Cam Wiegert
- Inspired by Oak