Three.js als hintergrund der website möglich?
Habe ich mit three.js für ein lustiges experiment auf einer Website. Ich würde gerne auf einen aktuellen Test (für die ich bereits den code für), und verwenden Sie es als hintergrund für meine Website.
Weiß jemand, wie dies zu tun?
Sah ich es hier getan: http://janjorissen.be/
Drei JS-API: https://github.com/mrdoob/three.js/wiki/API-Reference
- roflmao! Keine Sorge, es ist für ein proof-of-concept-experiment für mein Profil, nicht für die tatsächliche Nutzung. Ich weiß besser als Sie, dass. Beruhigen Sie sich.
- Okay, gut zu wissen. 🙂 Es gibt Leute da draußen, wer würde das nicht, also ich habe nur gefragt. Ich habe keine Ahnung, mit was für seltsamen Krankheiten, die Sie besessen sind. Aber du hast Recht - warum sollten Sie nicht Experimentieren. Sorry für den Verdacht, dass Sie eine von denen. 😛
- hehe! 🙂 Keine sorgen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
normalerweise verwende ich iframe für, die. Damit Sie nicht in Konflikt mit der base-Seite.
ist ein Beispiel dafür
https://github.com/jeromeetienne/www.jetienne.com/blob/master/index-webgl.html#L128 für die Quelle
http://jetienne.com/index-webgl.html für den Lebens-code
Ich werde noch eine andere Lösung. Ich würde verwenden
Ist hier, warum:
Viele Menschen nutzen
canvas { width: 100%; height: 100% }
aber, dass wohl nicht viel Sinn machen. Sie wollen nicht die Leinwand, um 100% des Körpers. Sie wollen, dass es zu 100% der Bildschirm/Fenster. Das ist es, wascanvas { width: 100vw; height: 100vh; }
tut. Es ist 100% der viewport-Breite und die viewport-Höhe.Bedeutet dies, dass Sie nicht brauchen, um die body auf height: 100%, was auch nicht sinnvoll wäre, vor allem, wenn die Seite größer als das Fenster/Bildschirm
display: block;
behebt einige Probleme mit Scrollbalken auf bestimmte Browser. Einige Seiten verwendenhtml, body { overflow: none; }
aber wieder, das macht keinen Sinn, wenn deine Seite landet, dass größer als der Bildschirm/Fenster.position: fixed;
lässt den canvas-position relativ zu der Oberseite des Fensters, damit es nicht zu scrollen mit der Seite. Wenn Sieposition: absolute
dann die Leinwand flimmert, wenn die Seite größer als der Bildschirm/Fenster. Zum Beispiel auf dieser Seite.top: 0; left 0;
bringt es auf den Links oben. Ohne, dass es standardmäßig der default-position ist innerhalb des Körpers Margen. Oft ist das Problem durch die Einstellungbody { margin: 0; }
aber in der Regel bedeutet das, dass Sie am Ende brauchen einige einen anderen Behälter, um einen Rand hinzuzufügen zurück in die sonst Ihr normales Gehalt bekommt, der sich an der Kante des Fensters.z-index: -9999;
ist es, zu versuchen zu zwingen, es weiter hinten, als irgendetwas anderes, nur für den Fall, die Seite selbst ist mit einigen negativen Werte fürz-index
Hier ist ein Beispiel, wie ein snippet
JS:
CSS:
HTML:
Und hier ist ein Beispiel draußen, SO so können Sie es leichter in voller Größe.
iframe
s so gut funktionierenBeachten Sie, dass es das Problem, dass, wenn Sie Ihre Leinwand-animation und interaktive Elemente vor der Leinwand fressen die Maus/touch-events. Es gibt keine einfache Lösung, die ich kenne, für, die. Sie können markieren alles, aber das canvas - /iframe-als
pointer-events: none
und markieren Sie die Leinwand/iframe alspointer-events: auto
aber dann Sie laufen in das Problem, dass kein text auf der Seite ausgewählt werden können und keine links angeklickt werden können. Man könnte dann sagen, setzen<a>
tags zu habenpointer-events: auto
so, dass links arbeiten, aber ich bin sicher, dass es Probleme hier und dort, je nachdem, welche Informationen auf Ihrer Seite (versuchen zu kopieren eine E-Mail-Adresse oder eine Adresse, etc...)Ein Hinweis: die meisten three.js Beispiele sind strukturierte verschiedenen (weniger flexibel) durch verweisen auf
window.innerWidth
undwindow.innerHeight
und setzen die canvas-Bereich innerhalb eines div mit einerid="canvas"
aus irgendeinem Grund.Hier ist ein Ausschnitt mit der Struktur. Es gibt mehrere Zeilen von code, redundante Aufrufe an
renderer.setSize
und Einstellung der Kamera-Aspekt an 2 stellen (nicht sehr D. R. Y.) aber, soweit dies F&Eine ist besorgt, der einzige Unterschied ist#canvas
stattcanvas
als die CSS, um die Größe des div-statt der Leinwand.JS:
CSS:
HTML:
Dies ist nicht eine tatsächliche hintergrund, aber eine 100% Breite/Höhe element ist die Anzeige der animation, mit dem rest des Inhalts "erhöhten" mit
z-index
oder ähnliches vor, dass fake-hintergrund.Folgende sehr einfache Beispiel auf threejs.org (hier), hatte ich nur ändern Sie die Leinwand-Stil-Abschnitt:
Bewegt die Leinwand, um den hintergrund.