8 Ben's Hobbyhoekje -- Horizontaal verschuivend menu

Horizontaal verschuivend menu

Onderaan deze bladzijde zie je een menu. Als je er met de muis overheen gaat of het aantikt op een aanraakscherm, verschuift het, zodat je door het menu kunt 'bladeren'. Daarbij geldt: Als je de muis naar rechts verschuift, gaat het menu naar links, en omgekeerd.
Op deze pagina wordt verteld hoe je dat maakt.

Dit verhaal is een bewerking van code bij een artikel in Webdesigner Magazine 99 (november 2017), pag. 64 en 65. Het oorspronkelijke script is niet meer beschikbaar op internet. Een auteur staat niet bij het artikel genoemd. Voor deze site is de code wat vereenvoudigd, verbeterd en is de opmaak verfraaid.
Dit blad wordt sinds eind november 2017 niet meer gemaakt.
De code van het voorbeeld kun je downloaden om zelf te gebruiken.

Gebruik:

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

<style>
body { overflow-x: hidden; }
#block {
  width: 1550px;
  height: 85px;
  transition: transform 0.7s cubic-bezier(0.36, 0.36, 0.59, 1);
  position: fixed;
  bottom: 0;
  z-index: 1;
}
.menu {
  box-sizing: border-box;
  background: #09c;
  padding: 20px;
  color: #fff;
  font-weight: bold;
  font-size: 120%;
  text-align: center;
  width: 200px;
  height: 55px;
  display: inline-block;
  margin-left: 10px;
}
</style>

(Zet dit ergens in de <BODY>, bijvoorbeeld aan het begin.
Belangrijk is dat het JavaScript komt na de HTML).

<div id="block" onmousemove="mover(event)">
  <div class="menu">Home</div>
  <div class="menu">Handig</div>
  <div class="menu">Fractals</div>
  <div class="menu">HTML</div>
  <div class="menu">Varia</div>
  <div class="menu">Webmasterij.nl</div>
</div>
<script>
var posX = 0;
var offset = 0;
var w = document.body.clientWidth;
var block = document.getElementById('block');
var diff = 1300 - w;

function map(n, start1, stop1, start2, stop2) {
  return ((n - start1) / (stop1 - start1)) * (stop2 - start2) + start2;
}

function mover(e) {
  posX = e.clientX;
  offset = Math.floor(map(posX, 0, w, 0, diff));
  offset = -1 * offset;
  block.style.transform = "translateX(" + offset + "px)"
}
</script>

(Zet dit aan het eind van de <BODY>, net voor de </BODY>-tag.)

<div style="height:100px; width:20px;"></div>

Downloaden:
 
Druk op de knop: Download deze code  File: voorb596.zip, 879 bytes.

 
terug

html-596; Laatste wijziging: 12 april 2022