JSFiddle - React, Tailwind, and code Playground

by HDL52

HTML

<div id="bg"></div>

<main>
  <section>
    <div>
      <h1>SVG Noise filter</h1>
      <h2>#4 fractalNoise</h2>
    </div>
  </section>
</main>

<svg>
  <filter id='noise'>
    <feTurbulence type='fractalNoise' baseFrequency='0.3' numOctaves='1' seed='10'>
      <!--
<animate attributeName="seed" dur="0.5s" values="1;5" repeatCount="indefinite" />

      <animate attributeName="baseFrequency" dur="5s" values="-0.01;0.01;-0.01" repeatCount="indefinite" />
-->
    </feTurbulence>
    <feDisplacementMap xChannelSelector="B" yChannelSelector="G" scale="50" in="SourceGraphic">
      <animate attributeName="scale" dur="8s" values="50;1;1;50" repeatCount="indefinite" />
    </feDisplacementMap>
  </filter>
</svg>

CSS

@font-face {
  font-family: "NeueMontreal-Bold";
  src: url("https://raw.githubusercontent.com/Hongda-OSU/PicGo-2.3.1/master/imgNeueMontreal-Bold.otf");
  font-display: swap;
}


* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

*::before,
*::after {
  box-sizing: border-box;
}

html,
body {
  overscroll-behavior-x: none;
  overscroll-behavior-y: none;
  scroll-behavior: smooth;
}

body {
  font-family: "NeueMontreal-Bold", sans-serif;
  font-size: 3rem;
  position: relative;
  width: 100vw;
  min-height: 100vh;
  text-align: center;
  overflow-x: hidden;
  background: black;
  color: #e2e2e2;
}

:root {
  --angle: 0deg;
}

@property --angle {
  syntax: "<angle>";
  initial-value: 0deg;
  inherits: false;
}

#bg {
  position: fixed;
  top: 0;
  left: 0;
  width: 100vw;
  height: 100vh;
  background-image: url(https://upload.wikimedia.org/wikipedia/commons/6/63/Vincent_van_Gogh_-_Wheat_Field_with_Cypresses_-_Google_Art_Project.jpg);
  background-size: cover;
  --origin: bottom center;
  background-position: var(--origin);
  transform-origin: center;
  transform: scale3d(1.3, 1.3, 1);
  filter: hue-rotate(var(--angle)) url(#noise);
  animation: anim 30s linear infinite;
}

@keyframes anim {
  0% {
    --angle: 0deg;
  }

  100% {
    --angle: 360deg;
  }
}

svg {
  position: fixed;
  top: 0;
  left: 0;
  width: 0;
  height: 0;
  z-index: -1;
}

main {
  position: relative;
  mix-blend-mode: color-dodge;
}

section {
  position: relative;
  width: 100vw;
  min-height: 100vh;
  display: flex;
  align-items: center;
  justify-content: center;
}

h2 {
  font-size: 2rem;
}

@media screen and (max-width: 900px) {
  body {
    font-size: 1rem;
  }
  h2 {
    font-size: 0.8rem;
  }
}