Tekenen door scrollen

Sorry, uw browser ondersteunt geen inline SVG.

Als je deze pagina naar beneden scrollt, verschijnt er een driehoek. Als je terug scrollt verdwijnt de driehoek weer. Op deze pagina wordt uitgelegd hoe je zoiets maakt.

Gebruik:

De code van het voorbeeld ziet er als volgt uit:
 
(Zet dit in de <HEAD>).

<meta name="viewport" content="width=device-width, initial-scale=1">
 
<style>
#mySVG {
  position: fixed;
  top: 15%;
  width: 400px;
  height: 210px;
  margin-left:-50px;
  display:none;
}
</style>
 
<script>
function init() {
  // Haal het id van het SVG <path> element op en bepaal de lengte
  // van <path>
  var triangle = document.getElementById("triangle");
  var length = triangle.getTotalLength();
 
  // De start positie van de tekening
  triangle.style.strokeDasharray = length;
 
  // Verberg de driehoek door dash te offsetten. Verwijder deze regel
  // als je de driehoek wilt zien voordat er wordt gescrolled
  triangle.style.strokeDashoffset = length;
 
  // Bepaal het scroll percentage (o.b.v. cross-browser properties),
  // en offset de dash met hetzelfde percentage.
  // De tekening wordt nu zichtbaar of wordt verborgen
  window.addEventListener("scroll", tekenOfGumUit);

  // Maak de driehoek zichtbaar
  document.getElementById('mySVG').style.display = "block";
 
  function tekenOfGumUit() {
    var scrollfraction = (document.body.scrollTop
        + document.documentElement.scrollTop)
        / (document.documentElement.scrollHeight
        - document.documentElement.clientHeight);
 
    var draw = length * scrollfraction;

    // teken het relevante deel van de driehoek
    triangle.style.strokeDashoffset = length - draw;
  }
}
 
// Voer init() uit zodra de pagina is geladen
window.addEventListener("load", init);
</script>

(Zet dit in de <BODY>, bij voorkeur helemaal bovenaan).

<svg id="mySVG">
  <path fill="none" stroke="red" stroke-width="3" id="triangle"
    d="M150 0 L75 200 L225 200 Z" />
  Sorry, uw browser ondersteunt geen inline SVG.
</svg>

Downloaden:
 
Druk op de knop: Download deze code  File: voorb678.zip, 986 bytes.

 
terug

html-678; Laatste wijziging: 4 september 2022