In some recent blog posts, I added quite a lot of images.
So, I thought it would be nice, to be able to click on an image to view it full screen and then to scroll through all images on the page.
I did not find a minimal script that did just that, all options were very bloated, so I just wrote my own slideshow script.
The script is so simple, that this blog post contains all the code, so you can take it, adapt it, and make it your own.
Example
An example can be found here: SIRUB.com
Features
- click on any image on the page to view it full screen
- use $\leftarrow$/$\rightarrow$ or k/jorh/lora/dorw/sto flip through all images
- hit Escapeorqor tap anywhere to leave the gallery and return to the page
Installation
The installation is simple:
- Just include the gallery.jsfile at the end of yourhtmlpage
| 1
 | <script src="gallery.js"></script>
 | 
- add this to your cssstylesheet:
|  1
 2
 3
 4
 5
 6
 7
 8
 9
10
 | #gallery {
    max-width: 100%;
    max-height: 100%;
    position: fixed;
    left: 50%;
    top: 50%;
    transform: translate(-50%, -50%);
    border: 100rem solid black;
    background: white;
}
 | 
- you do not have to change how you embed your images, all <img>tags are used for the gallery:
| 1
2
 | <img src="photo1.jpg" />
<img src="photo2.jpg" />
 | 
Source code
Here are the contents of gallery.js:
|  1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
 | /*
    Simple JavaScript Gallery v1.0
    by Desmond Kabus
    https://www.kabus.eu/blog/2019/05-26-simple-js-gallery.html
*/
const imgs = document.images;
var img_index_open = -1;
function close() {
    var gallery = document.getElementById("gallery");
    if ( gallery )
    { document.body.removeChild(gallery); }
    img_index_open = -1;
}
function open(i) {
    close();
    if( 0 <= i && i < imgs.length )
    {
        img_index_open = i;
        var gallery = imgs[img_index_open].cloneNode(true);
        gallery.style = "width:auto; height:auto;";
        gallery.id = "gallery";
        gallery.onclick = close;
        document.body.appendChild(gallery);
    }
}
for ( let i = 0; i < imgs.length; i++ ) {
    imgs[i].onclick = function(){ open(i) };
}
window.addEventListener("keydown", function (event) {
    if ( img_index_open < 0 || img_index_open >= imgs.length )
    { return; }
    else if ( ["Escape", "q"].includes(event.key) )
    { close(); }
    else if ( ["ArrowLeft","ArrowUp","h","k","w","a"].includes(event.key) )
    { open(img_index_open - 1); }
    else if ( [" ","ArrowRight","ArrowDown","l","j","s","d"].includes(event.key) )
    { open(img_index_open + 1); }
});
 |