Navigeer naar verschillende delen van een afbeelding

Bij grote afbeeldingen waar veel op gebeurt, bijvoorbeeld een foto van een drukke straat, kan het handig zijn om de bezoeker van je website bij de hand te nemen en hem/haar langs de interessante punten van de afbeelding te leiden.
Op deze pagina wordt zo'n aanpak besproken. Dat gebeurt aan de hand van een voorbeeld.

Je ziet een deel van een foto met daar boven twee knoppen: "Vorige" en "Volgende". Als je er op klikt verschuift de foto. Op deze manier worden interessante stukken van de foto zichtbaar.

Toon het voorbeeld

Het voorbeeld toont details van deze foto:

Het hangt af van de grootte van het browser-window welke details je te zien krijgt.
 
In een window van 1920 × 1080 px zijn dat achtereenvolgens:
•  (Alleen bij het starten van het voorbeeld) De grijze lucht, met daarin de dubbele regenboog,
•  De "echte" regenboog,
•  De oprit van een paar huizen,
•  De daken van die huizen en de schuttingen om een paar achtertuinen.
 
In een window van ca. 1000 × 1000 px zie je:
•  (Alleen bij het starten van het voorbeeld) De grijze lucht,
•  Een dubbele regenboog (heel vaag),
•  Een blinde muur,
•  Dezelfde muur maar nu met dak,
•  Een paar andere blinde muren.

Dit is een bewerking van een script dat ik aantrof in Webdesigner Magazine nr. 89 (september 2016), pag. 22 e.v. Dit blad wordt sinds eind november 2017 niet meer gemaakt.
Het oorspronkelijke script is niet meer beschikbaar op internet. De maker van het script is niet bij het betreffende artikel genoemd.

Voor deze website is het voorbeeld verfraaid en is de code wat vereenvoudigd. Een klein bugje is gerepareerd.

Deze aanpak is bijzonder geschikt om iets te presenteren op een één-pagina site, waarbij het document het hele scherm vult. Het is heel goed te combineren met een script dat de browser in 'Full Screen'-mode zet. Zie de items Website openen in full-screen mode en Webpagina omschakelen in full-screen modus.

Gebruik:

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

<link rel="stylesheet" href="styles.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js">
</script>
<script>
var locations = {"data":[], "index":-1};

var actions = {};
actions.go = function(){
  var containerRect = $("article")[0].getBoundingClientRect();
  $("article main").css({
    "left": (containerRect.left-locations.data[ locations.index ].left)+"px",
    "top": (containerRect.top-locations.data[ locations.index ].top)+"px"
  });
}
actions.Volgende = function(){
  if(locations.index < locations.data.length-1)locations.index++;
  actions.go();
}
actions.Vorige = function(){
  if(locations.index > 0)locations.index--;
  actions.go();
}
window.addEventListener("load",function(){
  $.each($('article main > *'),function(){
    var rect = this.getBoundingClientRect();
    locations.data.push({"left":parseInt(rect.left),
        "top":parseInt(rect.top)});
  });
  $.each($('article nav > *'),function(){
    $(this).on("click",actions[ $(this).attr("data-action") ] );
  });
});
</script>

(Zet dit in de <BODY>).

<article>
  <nav>
    <span data-action="Vorige">
        &nbsp;&nbsp;&lt;&lt;&nbsp;Vorige&nbsp; &nbsp;</span>
    <span data-action="Volgende">
        &nbsp;Volgende&nbsp;&gt;&gt;&nbsp;</span>
  </nav>
  <main>
    <span id="pointA">Nr. 1/4</span>
    <span id="pointB">Nr. 2/4</span>
    <span id="pointC">Nr. 3/4</span>
    <span id="pointD">Nr. 4/4</span>
  </main>
</article>

Downloaden:
 
Druk op de knop: Download deze code  File: voorb534.zip, 1590 bytes.

 
terug

html-534; Laatste wijziging: 28 mei 2020