Verticale scroll-indicator I: puntjes

Als je een klein beetje naar beneden scrollt, verschijnen aan de rechterkant vier puntjes, op ongeveer halverwege de hoogte van het browserwindow. Het bovenste puntje is heeft een andere kleur dan de andere drie. Als je verder scrollt verschuift het bovenste puntje naar beneden, totdat je bijna aan het einde van het document bent. Dan is het vierde puntje gekleurd.

Op deze pagina wordt uitgelegd hoe je zoiets maakt. De code van het voorbeeld staat onderaan de pagina. Je kunt de code ook downloaden om zelf te gebruiken.

Gebruik:

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

<style>
.container {
  position: fixed;
  top: 45%;
  right: 15px;
  width: 45px;
  height: 150px;
  z-index: 9999;
  visibility: hidden;
}
.puntje {
  position: relative;
  width: 0;
  height: 0;
  border: 6px solid navy;
  border-radius: 50%;
  margin: 20px 15px;
  opacity: 50%;
}
.actief {
  border-color: #d00;
  transition: all .5s;
  border-width: 8px;
  left:-2px;
}
</style>
<script>
window.addEventListener("load", function() {
  aa = document.getElementById('container');
  window.addEventListener("resize", puntjes);
  window.addEventListener("scroll", puntjes);
  puntjes();
});

var yPerc, i, aa;

function puntjes() {
  // Verberg de puntjes
  aa.style.visibility = "hidden";
 
  // Alleen tonen als er minstens 400px hoogte is voor het document
  if (window.innerHeight < 400) return;
 
  // Hoe ver is er gescrolled?
  yPerc = 100 * window.pageYOffset / document.body.clientHeight;
  // Er moet minstens 2% zijn gescrolled
  if (yPerc > 2) aa.style.visibility = "visible";
 
  // Zet alle puntjes inactief
  for (i=1; i<=4; i++)
    document.getElementById('P'+i).classList.remove('actief');
 
  // Bepaal actief te maken puntje en activeer dat
  if (yPerc < 15) document.getElementById('P1').classList.add('actief'); 
  else if (yPerc >= 15 && yPerc < 40)
    document.getElementById('P2').classList.add('actief');
  else if (yPerc >= 50 && yPerc < 65)     document.getElementById('P3').classList.add('actief');
  else document.getElementById('P4').classList.add('actief');
}
</script>

(Zet dit "ergens" in de <BODY>, bijvoorbeeld aan het begin).

  <div id="P1" class="puntje"></div>
  <div id="P2" class="puntje"></div>
  <div id="P3" class="puntje"></div>
  <div id="P4" class="puntje"></div>
</div>

Downloaden:
 
Druk op de knop: Download deze code  File: voorb115.zip, 935 bytes.

 
terug

html-115; Laatste wijziging: 4 mei 2021