Skip to content

Repository files navigation

Snowfall Demo

Solid Snowfall

npmGitHub starsConventional Commits

A solid component that creates a snowfall effect

Installation

With npm

npm i solid-snowfall

With yarn

yarn add solid-snowfall

Or wit pnpm

pnpm add solid-snowfall

Usage

Basic usage requires no properties - it will grow to fill the nearest relative positioned parent element.

import{render}from"solidjs/web";importSnowFallfrom"solid-snowfall";render(()=>(<><SnowFall/>
),
document.getElementById("root") as HTMLDivElement,
);

Configuration

Optional properties can be provided to customise the animation.

<Snowfall// The color of the snowflake, can be any valid CSS color.color="#fff"// Applied to the canvas element.style={{background: '#fff'}}// Controls the number of snowflakes that are created (defaults to 150).snowflakeCount={200}/>

All available properties are detailed below.

PropertyDescriptionDefault
changeFrequencyThe frequency in frames that the wind and speed values will update.200
colorThe color of the snowflake, can be any valid CSS color.'#dee4fd'
imagesAn array of images that will be rendered as the snowflakes instead of the default circle shapes.undefined
radiusThe minimum and maximum radius of the snowflake in pixels.

The value for each snowflake will be randomly selected within this range.
[0.5, 3.0]
rotationSpeedThe minimum and maximum rotation speed of the snowflake (in degrees of rotation per frame).

The rotation speed determines how quickly the snowflake rotates when an image is being rendered.

The value for each snowflake will be randomly selected within this range.
[-1.0, 1.0]
snowflakeCountThe number of snowflakes to be rendered.150
speedThe minimum and maximum speed of the snowflake (in pixels per frame).

The speed determines how quickly the snowflake moves along the y axis (vertical speed).

The value for each snowflake will be randomly selected within this range.
[1.0, 3.0]
styleAny style properties that will be passed to the canvas element.undefined
windThe minimum and maximum wind of the snowflake (in pixels per frame).

The wind determines how quickly the snowflake moves along the x axis (horizontal speed).

The value for each snowflake will be randomly selected within this range.
[-0.5, 2.0]

Using Images

Instead of rendering colored circles you can instead pass in an array of image elements that will be randomly selected and used as the snowflake instead.

NOTE: If the images provided are not square they will be stretched into a 1:1 aspect ratio.

constsnowflake1=document.createElement('img')snowflake1.src='/assets/snowflake-1.png'constsnowflake2=document.createElement('img')snowflake2.src='/assets/snowflake-2.jpg'constimages=[snowflake1,snowflake2]constDemo=()=>{return(<Snowfall// Applied to the canvas elementstyle={{background: '#fff'}}// Controls the number of snowflakes that are created (default 150)snowflakeCount={200}// Pass in the images to be usedimages={images}>
)
}

Positioning

The snowfall container is absolute positioned and has the following default styles (see the definition):

position: absolute;
top:0;
left:0;
width:100%;
height:100%;

If you want the component to cover the entire screen then you can change the position to fixed by passing in an overriding styles object:

<Snowfallstyle={{position: 'fixed',top: 0,bottom: 0,right: 0,left: 0}}/>

About

A solid component that creates a snowfall effect

Topics

Resources

Stars

9 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages