Advanced Configuration
Config options
Deep control of the Blava is possible with more advanced options.
new Blava(c, {
/**
* Overrides "style" and "pointCount" options.
* Points are based on a 100×100 coordinate system.
* Animation can be set individually on each
* point in each dimension
*/
points: [
{ x: 30, y: 30, animated: true },
{ x: 60, y: 30, animated: false },
{ x: 60, y: 60, animated: { x: true, y: false } },
{ x: 60, y: 30 },
],
/**
* Allows for reproducible randomness.
* Used for any configuration and manipulation based on
* randomness (including initial positioning, movement,
* and gradient hue selection)
*/
seed: 'apsv9a8wj938nvas',
gradient: {
from: {
//Position is based on a 100×100 grid
position: {
x: 0,
y: 50,
},
color: 'hsl(20, 100%, 82%)',
},
to: {
position: {
x: 100,
y: 50,
},
color: 'hsl(58, 100%, 82%)',
},
},
/**
* How much on the 100×100 grid animated points will move
* in each dimension
*/
variance: {
x: 10,
y: 15,
},
/**
* A function to run before the Blava is drawn on the canvas.
* Points are calculated before this function runs
*
* @arg {Blava} instance The Blava instance for accessing properties
*/
beforePaint: (instance) => {
//Access properties of the Blava by deconstructing the
//passed instance argument
let { points, canvas, context } = instance;
//Set the context.globalCompositeOperation before returning
//to affect the Blava paint
},
/**
* A function to run after the Blava is drawn on the canvas.
*
* @arg {Blava} instance The Blava instance for accessing properties
*/
afterPaint: (instance) => {},
});
Resizing the Blava canvas
Blava responds to layout changes of its containing canvas element, automatically resizing itself to fit its 100×100 grid. The element's width
and height
attributes are automatically set, so handle all layout through CSS.
Other notes
Since Blava is based on the canvas element, all manipulations relevant to that API are also available.