Heim JS-Spezialeffekte HTML5-Spezialeffekte HTML5的岩浆动画背景特效

HTML5的岩浆动画背景特效

HTML5的岩浆动画背景特效

HTML5的岩浆动画背景特效

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>可设置动画属性的HTML5岩浆动画背景特效</title>

<style>
@charset "UTF-8";
*, *:before, *:after {
  box-sizing: border-box;
}

body {
  padding: 0;
  margin: 0;
  overflow: hidden;
  font-family: 'Roboto', sans-serif;
}

canvas {
  width: 100vw;
  height: 100vh;
}

h1 {
  position: absolute;
  z-index: 1;
  width: 100%;
  left: 0;
  top: 50%;
  -webkit-transform: translateY(-50%);
          transform: translateY(-50%);
  mix-blend-mode: overlay;
  color: rgba(0, 0, 0, 0.3);
  line-height: 0;
  font-size: 16px;
  letter-spacing: 4px;
  text-align: center;
  text-transform: uppercase;
  transform: translateY(-50%);
  cursor: pointer;
  -webkit-transition: color .2s ease-in-out;
  transition: color .2s ease-in-out;
  -webkit-user-select: none;
     -moz-user-select: none;
      -ms-user-select: none;
          user-select: none;
}
h1:hover {
  color: rgba(0, 0, 0, 0.8);
}
</style>
</head>
<body>

<script src="js/chroma.min.js"></script>
<script src="js/dat.gui.min.js"></script>

<canvas id="canvas"></canvas>

<h1>The Floor is Lava</h1>

<script>
'use strict';

function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }

var settings = {
  amplitudeX: 150,
  amplitudeY: 20,
  lines: 30,
  startColor: '#500c44',
  endColor: '#b4d455'
};

var c = document.getElementById("canvas");
var ctx = c.getContext("2d");
var winW = window.innerWidth;
var winH = window.innerHeight;
var Paths = [];
var color = [];
var mouseY = 0;
var mouseDown = false;
var time = 0;
var curves = undefined;
var velocity = undefined;

var Path = function () {
  function Path(y, color) {
    _classCallCheck(this, Path);

    this.y = y;
    this.color = color;
    this.root = [];
    this.create();
    this.draw();
  }

  Path.prototype.create = function create() {
    var rootX = 0;
    var rootY = this.y;

    this.root = [{ x: rootX, y: rootY }];

    while (rootX < winW) {
      var casual = Math.random() > 0.5 ? 1 : -1;
      var x = parseInt(settings.amplitudeX / 2 + Math.random() * settings.amplitudeX / 2);
      var y = parseInt(rootY + casual * (settings.amplitudeY / 2 + Math.random() * settings.amplitudeY / 2));
      rootX += x;
      var delay = Math.random() * 100;
      this.root.push({ x: rootX, y: y, height: rootY, casual: casual, delay: delay });
    }
  };

  Path.prototype.draw = function draw() {
    ctx.beginPath();
    ctx.moveTo(0, winH);

    ctx.lineTo(this.root[0].x, this.root[0].y);

    for (var i = 1; i < this.root.length - 1; i++) {

      var x = this.root[i].x;
      var y = this.root[i].y;
      var nextX = this.root[i + 1].x;
      var nextY = this.root[i + 1].y;

      var xMid = (x + nextX) / 2;
      var yMid = (y + nextY) / 2;
      var cpX1 = (xMid + x) / 2;
      var cpY1 = (yMid + y) / 2;
      var cpX2 = (xMid + nextX) / 2;
      var cpY2 = (yMid + nextY) / 2;

      ctx.quadraticCurveTo(cpX1, y, xMid, yMid);
      ctx.quadraticCurveTo(cpX2, nextY, nextX, nextY);
    }

    var lastPoint = this.root.reverse()[0];
    this.root.reverse();
    ctx.lineTo(lastPoint.x, lastPoint.y);
    ctx.lineTo(winW, winH);
    ctx.fillStyle = this.color;
    ctx.fill();
    ctx.closePath();
  };

  return Path;
}();

/* INIT */

var path = undefined;
function init() {
  c.width = winW;
  c.height = winH;
  Paths = [];

  color = chroma.scale([settings.startColor, settings.endColor]).mode('lch').colors(settings.lines);

  document.body.style = 'background: ' + settings.startColor;

  for (var i = 0; i < settings.lines; i++) {
    Paths.push(new Path(winH / settings.lines * i, color[i]));
    settings.startY = winH / settings.lines * i;
  }
}

/* WIN RESIZE */
window.addEventListener('resize', function () {
  winW = window.innerWidth;
  winH = window.innerHeight;
  c.width = winW;
  c.height = winH;
  init();
});
window.dispatchEvent(new Event("resize"));

/* RENDER */
function render() {
  c.width = winW;
  c.height = winH;

  curves = mouseDown ? 2 : 4;
  velocity = mouseDown ? 6 : 0.8;

  time += mouseDown ? 0.1 : 0.05;

  Paths.forEach(function (path, i) {
    path.root.forEach(function (r, j) {
      if (j % curves == 1) {
        var move = Math.sin(time + r.delay) * velocity * r.casual;
        r.y -= move / 2 - move;
      }
      if (j + 1 % curves == 0) {
        var move = Math.sin(time + r.delay) * velocity * r.casual;
        r.x += move / 2 - move / 10;
      }
    });

    path.draw();
  });

  requestAnimationFrame(render);
}
render();

/* MOUSEDOWN */
'mousedown touchstart'.split(' ').forEach(function (e) {
  document.addEventListener(e, function () {
    mouseDown = true;
  });
});

/* MOUSEUP */
'mouseup mouseleave touchend'.split(' ').forEach(function (e) {
  document.addEventListener(e, function () {
    mouseDown = false;
  });
});

/* MOUSEMOVE */
'mousemove touchmove'.split(' ').forEach(function (e) {
  document.addEventListener(e, function (e) {
    mouseY = e.clientY || e.touches[0].clientY;
  });
});

/* DATA GUI */
var gui = function datgui() {
  var gui = new dat.GUI();
  // dat.GUI.toggleHide();
  gui.closed = true;
  gui.add(settings, "amplitudeX", 40, 200).step(20).onChange(function (newValue) {
    init();
  });
  gui.add(settings, "amplitudeY", 0, 100).step(1).onChange(function (newValue) {
    init();
  });
  gui.add(settings, "lines", 5, 50).step(1).onChange(function (newValue) {
    init();
  });
  gui.addColor(settings, "startColor").onChange(function (newValue) {

    init();
    document.querySelector('h1').innerHTML = 'or whatever you want';
  });
  gui.addColor(settings, "endColor").onChange(function (newValue) {
    init();
    document.querySelector('h1').innerHTML = 'or whatever you want';
  });

  return gui;
}();
</script>

</body>
</html>

这是一款不错的可设置动画属性的HTML5岩浆动画背景特效,展开网页右顶部菜单便可以设置动画动画幅度、颜色等属性。

Haftungsausschluss

Alle Ressourcen auf dieser Website werden von Internetnutzern bereitgestellt oder von großen Download-Sites nachgedruckt. Bitte überprüfen Sie selbst die Integrität der Software! Alle Ressourcen auf dieser Website dienen nur als Referenz zum Lernen. Bitte nutzen Sie diese nicht für kommerzielle Zwecke. Andernfalls sind Sie für alle Folgen verantwortlich! Wenn ein Verstoß vorliegt, kontaktieren Sie uns bitte, um ihn zu löschen. Kontaktinformationen: admin@php.cn

Verwandter Artikel

Detaillierte Einführung von 20 wunderschönen HTML5/CSS3-Anwendungs-Plug-Ins (Bilder) Detaillierte Einführung von 20 wunderschönen HTML5/CSS3-Anwendungs-Plug-Ins (Bilder)

09 Mar 2017

Auf HTML5 basierende Anwendungen sind mittlerweile sehr weit verbreitet. Heute stellen wir Ihnen 20 wunderschöne HTML5/CSS3-Anwendungs-Plug-ins vor. Ich hoffe, es gefällt euch allen und teilt es mit euren Freunden. 1. Spezialeffekte für die Fragmentierung und Neuorganisation von HTML5-Videos, starke visuelle Wirkung Es gibt viele HTML5-Video-Spezialeffekte, aber diese Spezialeffekte für die Fragmentierung und Neuorganisation von HTML5-Videos sind sehr aufregend und verleihen den Menschen eine starke visuelle Wirkung. Klicken Sie auf eine beliebige Stelle im Video, und HTML5 zerlegt diese Bereiche. Nach einer Weile werden diese zerbrochenen Videofragmente automatisch wieder zusammengesetzt. Es ist ein sehr gutes HTML5-Video.

Detaillierte Einführung in CSS3 Detaillierte Einführung in CSS3

15 Jun 2017

Auf HTML5 basierende Anwendungen sind mittlerweile sehr weit verbreitet. Heute stellen wir Ihnen 20 wunderschöne HTML5/CSS3-Anwendungs-Plug-ins vor. Ich hoffe, es gefällt euch allen und teilt es mit euren Freunden. 1. Spezialeffekte für die Aufteilung und Neuorganisation von HTML5-Videos Es gibt viele HTML5-Videoplayer, aber diese Spezialeffekte für die Aufteilung und Neuorganisation von HTML5-Videos sind sehr aufregend und verleihen den Menschen eine starke visuelle Wirkung. Klicken Sie irgendwo im Video und HTML5 zerlegt diese Bereiche. Nach einer Weile werden diese kaputten Videofragmente automatisch wieder zusammengesetzt ...

Empfohlene 3 Artikel über Videofragmentierung und -reorganisation Empfohlene 3 Artikel über Videofragmentierung und -reorganisation

15 Jun 2017

Auf HTML5 basierende Anwendungen sind mittlerweile weit verbreitet. Heute stellen wir Ihnen 20 wunderschöne HTML5/CSS3-Anwendungs-Plug-ins vor. Ich hoffe, es gefällt euch allen und teilt es mit euren Freunden. 1. Spezialeffekte für die Aufteilung und Neuorganisation von HTML5-Videos Es gibt viele HTML5-Videoplayer, aber diese Spezialeffekte für die Aufteilung und Neuorganisation von HTML5-Videos sind sehr aufregend und verleihen den Menschen eine starke visuelle Wirkung. Klicken Sie irgendwo im Video und HTML5 zerlegt diese Bereiche. Nach einer Weile werden diese kaputten Videofragmente automatisch wieder zusammengesetzt ...

JavaScript HTML5 Canvas implementiert Bildfragmentierung und Reorganisationsanimation, Spezialeffekte_Javascript-Fähigkeiten JavaScript HTML5 Canvas implementiert Bildfragmentierung und Reorganisationsanimation, Spezialeffekte_Javascript-Fähigkeiten

16 May 2016

In diesem Artikel werden hauptsächlich die Video-Spezialeffekte der Fragmentierung und Reorganisation mithilfe der JavaScript-HTML5-Leinwand vorgestellt.

HTML5-Fortschrittsbalken Spezialeffekte_HTML5-Tutorial-Fähigkeiten HTML5-Fortschrittsbalken Spezialeffekte_HTML5-Tutorial-Fähigkeiten

16 May 2016

In diesem Artikel werden hauptsächlich die Spezialeffekte des HTML5-Fortschrittsbalkens vorgestellt. Freunde, die ihn benötigen, können darauf verweisen.

Teilen Sie einen HTML5-E-Magazin-Flipbook-Spezialeffektcode Teilen Sie einen HTML5-E-Magazin-Flipbook-Spezialeffektcode

28 Apr 2017

HTML5-E-Magazin-Flip-Book-Animations-Spezialeffekte, erstellen Sie ein Fotoalbum von Ihnen oder jemandem mit Ihren Fotos.

Zehn coole Weihnachtscodeeffekte für Programmierer [Kostenloser Download] Zehn coole Weihnachtscodeeffekte für Programmierer [Kostenloser Download]

23 Dec 2020

Dang Dang Dang~ Die neuesten coolen und wunderschönen Spezialeffekte für Weihnachtsanimationen sind da! Einschließlich in HTML5, CSS3, JQuery und anderen Sprachen implementierter Spezialeffekte, die einfach und schön sind. Sie können auf den Link im Text klicken, um eine Vorschau der Animationen anzuzeigen

Laden Sie 5 HTML5-Spezialeffekte herunter, die häufig in der Webentwicklung verwendet werden Laden Sie 5 HTML5-Spezialeffekte herunter, die häufig in der Webentwicklung verwendet werden

20 Jun 2017

HTML5 ist mittlerweile zu einem beliebten Trend in der WEB-Entwicklung geworden. HTML5 verfügt über viele lang erwartete neue Funktionen. Heutzutage beginnen viele Webentwickler, HTML5 anstelle von Flash zu verwenden, um verschiedene Rich-Webanwendungen zu erstellen. Die chinesische PHP-Website empfiehlt 5 HTML5-Spezialeffekte, die häufig in der Webentwicklung verwendet werden.

So implementieren Sie mit Vue Spezialeffekte für Flugzeugkriegsspiele So implementieren Sie mit Vue Spezialeffekte für Flugzeugkriegsspiele

20 Sep 2023

So verwenden Sie Vue, um die Spezialeffekte des Airplane War-Spiels zu implementieren. Im Spiel müssen wir Spezialeffekte wie die Bewegung von Flugzeugen, die Erzeugung feindlicher Flugzeuge und das Abfeuern implementieren von Kugeln. In diesem Artikel wird das Vue-Framework verwendet, um spezifische Codebeispiele für die Implementierung der Spezialeffekte des Flugzeugkampfspiels zu geben. Technologie-Stack Bei der Implementierung der Spezialeffekte des Flugzeugkampfspiels verwenden wir den folgenden Technologie-Stack: Vue.js: JavaScript-Framework zum Erstellen von Benutzeroberflächen; HTML5 zum Zeichnen von Spielbildschirmen

See all articles See all articles

Hot Tools

HTML5 Canvas爱心飘动动画特效

HTML5 Canvas爱心飘动动画特效

HTML5 Canvas爱心飘动动画特效是一款直接用浏览器打开可以看到一颗心的生成动画。

Quellcode des H5-Panda-Bounce-Spiels

Quellcode des H5-Panda-Bounce-Spiels

HTML5 Mobile Panda ist auch ein verrückter Spielquellcode. Spielbeschreibung: Halten Sie den Bildschirm gedrückt, um die Stärke der Panda-Feder anzupassen und zur Steinsäule zu springen. Das Spiel endet, wenn Sie in den Fluss fallen.

HTML5-Valentinstag-Box-Animations-Spezialeffekte

HTML5-Valentinstag-Box-Animations-Spezialeffekte

Zeichnen Sie basierend auf SVG Animationen zum Öffnen von Liebesbox-Geschenken am Valentinstag und Spezialeffekte für Liebesbox-Animationen.

Quellcode des H5 3D Rolling Ball-Spiels

Quellcode des H5 3D Rolling Ball-Spiels

HTML5 cooler 3D-Ball-Rolling-Handyspielcode herunterladen. Spieleinführung: Ein farbiger Ball rollt und die aktuelle Bahn des farbigen Balls wird durch Ziehen mit der Maus oder dem Touchscreen des Mobiltelefons gesteuert. Dies ist ein einfacher und leicht zu bedienender Quellcode für Mobilspiele.

Hot Article

Luma Island: So erhalten Sie Werkzeugtoken
14 Nov 2024 Leitfaden für mobile Spiele
So erhalten Sie den Zalissya-Journalistenvorrat in Stalker 2
26 Nov 2024 Leitfaden für mobile Spiele
Pokemon Pocket: Wie man mit Freunden spielt
02 Nov 2024 Leitfaden für mobile Spiele