npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

solid-snowfall

v0.3.1

Published

A solidjs component that creates a snowfall effect

Downloads

15

Readme

Snowfall Demo

Solid Snowfall

npm GitHub stars Conventional 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";
import SnowFall from "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.

| Property | Description | Default | | ----------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------- | | changeFrequency | The frequency in frames that the wind and speed values will update. | 200 | | color | The color of the snowflake, can be any valid CSS color. | '#dee4fd' | | images | An array of images that will be rendered as the snowflakes instead of the default circle shapes. | undefined | | radius | The 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] | | rotationSpeed | The 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] | | snowflakeCount | The number of snowflakes to be rendered. | 150 | | speed | The 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] | | style | Any style properties that will be passed to the canvas element. | undefined | | wind | The 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.

const snowflake1 = document.createElement('img')
snowflake1.src = '/assets/snowflake-1.png'
const snowflake2 = document.createElement('img')
snowflake2.src = '/assets/snowflake-2.jpg'
const images = [snowflake1, snowflake2]
const Demo = () => {
  return (
    <Snowfall
      // Applied to the canvas element
      style={{ background: '#fff' }}
      // Controls the number of snowflakes that are created (default 150)
      snowflakeCount={200}
      // Pass in the images to be used
      images={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:

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