Awesome
Click for more examples
Starback.js
<table> <tr> <th>Sponsored by</th> </tr> <tr> <td> <p align="center"> <a href="https://lokal.so/?ref=zuramai"> <img src="https://github.com/zuramai/zuramai/blob/master/sponsors/lokalso.png?raw=true" width="50%"> </a> </p> </td> </tr> </table>Getting Started
You can use starback.js directly with <script>
tag or import syntax.
-
With
<script>
tag# Using CDN <script src="https://unpkg.com/starback@2.1.1/dist/starback.global.js"></script> # Using downloaded files <script src="PATH_TO_YOUR_DIST_FOLDER/starback.js"></script>
-
With import
Install via NPM first:
npm install starback
and then
import Starback from 'starback'
Example Usage
<canvas id="canvas"></canvas>
<script src="PATH_TO_DIST_FOLDER/starback.js"></script>
<script>
const canvas = document.getElementById('canvas')
const starback = new Starback(canvas, {
type: 'dot',
quantity: 100,
direction: 225,
backgroundColor: ['#0e1118', '#232b3e'],
randomOpacity: true,
})
</script>
You can check the more options in Options section
Options
Key | Type | Description | Required | Default Value |
---|---|---|---|---|
type | String | Required. Star type to use. The values are 'dot' or 'line' | true | |
width | Number | Canvas width to set | no | 800 |
height | Number | Canvas height to set | no | 600 |
backgroundColor | String|Array | Color of the background, use string for solid color, or array of colors for linear gradient | no | #ccc |
quantity | Number | Number of stars to show | no | 100 |
showFps | Boolean | Show FPS on the top left screen | no | false |
speed | Number | Star speed | no | 0.5 |
starSize | Number|Array | Use number for fixed star size. Use [minSize, maxSize] value for random the size within the range | no | [0, 3] for type: dot , 100 for type: line |
Additional options for type: 'dot'
Key | Type | Description | Required | Default Value |
---|---|---|---|---|
direction | Number | Use 360 degree to set the direction | no | 225 |
randomOpacity | Boolean|Array | If true , random star will get random opacity. Use array [minOpacity, maxOpacity] to limit the random opacity | no | false |
starColor | String | Color of the stars, you can use rgb or hex like css color. | no | white |
Additional options for type: 'line'
Key | Type | Description | Required | Default Value |
---|---|---|---|---|
directionY | Number | The direction the star to move vertically (1 = to bottom, 0 = to top) | no | 1 |
directionX | Number | The direction the star to move vertically (1 = to right, 0 = to left) | no | 1 |
distanceX | Number | Distance horizontally the star should reaching at | no | 0.1 |
frequency | Number | The frequency of star will be rotated | no | 10 |
slope | Object | The quadraticCurve coordinate that will be applied to stars. Read MDN | no | {x: 1, y: 1} |
starColor | String|Array | Color of the stars, use string for solid color, or array of colors for linear gradient | no | ['#fb00ff', '#00dde0'] |
spread | Number | The spread level of the stars | no | 1 |
Methods
Name | Parameter | Description |
---|---|---|
generateStar(amount) | amount: number | The quantity of stars that will be shown |
addToFront(callback(ctx)) | function(ctx: CanvasRenderingContext2D) | Add to front of the falling star by given context |
addToBehind(callback(ctx)) | function(ctx: CanvasRenderingContext2D) | Add to back of the falling star by given context |
Example method usage: adding image to front
let starback = new Starback(canvas, options)
let mountainImage = new Image()
mountainImage.src = 'images/mountain.png'
mountainImage.onload = () => {
starback.addToFront((ctx) => {
ctx.drawImage(
mountain,
0,
0,
mountain.width,
mountain.height,
0,
canvas.height - mountain.height,
canvas.width,
mountain.height
)
})
}
Contributing
You can contribute to this repository. See CONTRIBUTING.md
Donate
If you have used this library and it's useful for you, please consider to donate:
License
This library is under MIT license.