Skip to content
forked from tengbao/vanta

Plug & play animated 3D backgrounds for your website

License

Notifications You must be signed in to change notification settings

impin2rex/vanta

 
 

Repository files navigation

Vanta JS

alt text

What is Vanta? / FAQs

  • Add 3D animated digital art to any webpage with just a few lines of code.
  • Think of it as wrapper around a digital artwork that allows it to be inserted into an HTML element as a background.
  • Effects can interact with mouse/touch inputs.
  • Effect parameters (e.g. color) can be easily modified to match your brand.
  • Effects are powered by three.js (using WebGL) or p5.js.
  • Total additional filesize is ~120kb minified and gzipped (mostly three.js), which is smaller than comparable background images/videos.
  • Vanta includes many pre-defined effects to try out. More effects will be added soon!

Basic usage:

<script src="three.min.js"></script>
<script src="vanta.waves.min.js"></script>
<script>
  VANTA.WAVES('#my-background')
</script>

View fiddle →

More options:

VANTA.WAVES({
  el: '#my-background', // element id or DOM object reference
  color: 0x000000,
  waveHeight: 20,
  shininess: 50,
  waveSpeed: 1.5,
  zoom: 0.75
})

Each effect has different parameters. Explore them all!

Cleanup:

var effect = VANTA.WAVES('#my-background')
effect.destroy() // e.g. call this in React's componentWillUnmount

Usage with React Hooks (requires React 16.8):

Import vanta.xxxxx.min.js as follows. Make sure three.js or p5.js is also included.

import React, { useState, useEffect, useRef } from 'react'
import * as THREE from './three.min.js'
import BIRDS from './vanta.birds.min.js'

const MyComponent = (props) => {
  const [vantaEffect, setVantaEffect] = useState(0)
  const myRef = useRef(null)
  useEffect(() => {
    if (!vantaEffect) {
      setVantaEffect(BIRDS({
        el: myRef.current
      }))
    }
    return () => { 
      if (vantaEffect) vantaEffect.destroy()
    }
  }, [vantaEffect])
  return <div ref={myRef}>
    Foreground content goes here
  </div>
}

Usage with React Classes:

import React from 'react'
import * as THREE from './three.min.js'
import BIRDS from './vanta.birds.min.js'

class MyComponent extends React.Component {
  constructor() {
    super()
    this.myRef = React.createRef()
  }
  componentDidMount() {
    this.effect = BIRDS({
      el: this.myRef.current
    })
  }
  componentWillUnmount() {
    if (this.effect) this.effect.destroy()
  }
  render() {
    return <div ref={this.myRef}>
      Foreground content goes here
    </div>
  }
}

Local dev:

Clone the repo, run npm install and npm run dev, and go to localhost:8080.

Credits

About

Plug & play animated 3D backgrounds for your website

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 78.4%
  • CSS 16.3%
  • HTML 5.3%