Elementen tegelijkertijd animeren

Voor sommige toepassingen is het handig om een bepaalde figuur steeds over het scherm te laten gaan. Een voorbeeld daarvan is de tram hier rechts. In het voorbeeld gaat die tram van links naar rechts over het scherm, of omgekeerd. In het voorbeeld is het scherm in drie kolommen verdeeld. In elk van deze kolommen rijdt de tram heen en weer.

Het kan gebeuren dat het .svg-plaatje niet in het document wordt getoond als het in een apart bestand staat en als het document wordt ingeladen vanaf internet. De oorzaak moet worden gezocht bij de webserver, die geen .svg wil serveren aan de PC van de gebruiker. Bij dit voorbeeld is dat het geval.
Als je het document lokaal opent (dus vanaf je PC) in een browser loopt het goed. Dus: het voorbeeld downloaden en lokaal uitproberen. Daarna testen met de server van je hosting provider!

Toon het voorbeeld

Op deze pagina wordt uitgelegd hoe je zoiets maakt. De code kun je downloaden om zelf te gebruiken, inclusief het plaatje.

Dit is een bewerking van code die ik vond in Webdesigner Magazine 98 (september 2017), pag. 70 en 71.
Dit blad wordt sinds eind november 2017 niet meer gemaakt.
Voor deze site is de opmaak van het voorbeeld aangepast. Een kleine onvolkomenheid in de code is gerepareerd.

Gebruik:

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

<link rel="stylesheet" href="styles.css">

(Zet dit in de <BODY>).

div id="content">
  <div class="container">
    <div class="tram"></div>
  </div>
  <div class="container">
    <div class="tram"></div>
  </div>
  <div class="container">
    <div class="tram"></div>
  </div>
</div>

(Zet dit in de <BODY>, na de HTML).

<script>
var content = document.getElementById('content');
var timer;

function makeChange() {
  var trams = content.querySelectorAll('.tram');

  function change() {
    for (var i = 0; trams.length > i; i++) {
      trams[i].classList.remove('left');
      trams[i].classList.remove('right');

      var random = Math.random();
      var ht = Math.ceil(random * 400);

      trams[i].style.marginTop = ht + "px";

      if (Math.ceil(2 * random) === 2) {
        trams[i].classList.add('left');
      } else {
        trams[i].classList.add('right');
      }
    }
    timer = setTimeout(change, 2910);
  }
  change();
}
makeChange();

</script>

Downloaden:
 
Druk op de knop: Download deze code  File: voorb584.zip, 2384 bytes.

 
terug

html-584; Laatste wijziging: 30 mei 2020