JS.19 ディレクトリ内の画像をフォトギャラリーで表示する。

ディレクトリ内部の画像全てでフォトギャラリーを作成します。なお、LIGHTBOXというライブラリを用いています。

画像サイズ(現在12%):5% 100%

コード

html

<div style='text-align: center;'>
  <label for='InputFiles'>
    ディレクトリを選択してください。
    <input id="InputFiles" type="file" webkitdirectory style='display:none;'>
  </label>
</div>
<ul id="gallery" class="galleryCover">
</ul>

js

// 以下のライブラリを使用。
<script src="https://iwasakishuto.github.io/js/jquery.js" type="text/javascript"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/lightbox2/2.7.1/js/lightbox.min.js" type="text/javascript"></script>
<script>
  var DirInputTag = document.getElementById('InputFiles');
  var GalleryTag = document.getElementById('gallery');
  var sizeRange = document.getElementById('sizeRange');
  var currentSize = document.getElementById('currentSize');
  var files, file;

  sizeRange.addEventListener('change', function (e) {
    let size = sizeRange.value + "%";
    currentSize.innerHTML = size;
    let target = document.getElementsByClassName("__canvas");
    for (var i = 0; i < target.length; i++) {
      target[i].style.width = size;
    }
  });

  DirInputTag.addEventListener('change', function(e){
    files = e.target.files;
    var img, div;
    var files = [].slice.call(files)
    // Sort files by file name.
    files.sort(function(a,b){
      if(a.name < b.name) return -1;
      if(a.name > b.name) return 1;
      return 0;
    });
    const validImageTypes = ['image/gif', 'image/jpeg', 'image/png'];
    for (var i=0; i<files.length; i++) {
      if (validImageTypes.includes(files[i]['type'])){
        let reader = new FileReader();
        reader.fileName = files[i].name
        reader.onload = function(e) {
          //  <img src="{e.target.result}" class="__canvas">
          img = document.createElement('img');
          img.setAttribute('src', e.target.result);
          img.className = '__canvas';
          // <a href="{e.target.result}" data-title="{e.target.name}" data-lightbox="photowall">
          a = document.createElement('a');
          a.setAttribute('href', e.target.result);
          a.setAttribute('data-title', e.target.fileName);
          a.setAttribute('data-lightbox', "photowall")
          a.appendChild(img);
          // <li>
          li = document.createElement('li');
          li.appendChild(a);
          li.className = 'galleryElements';
          GalleryTag.appendChild(li)
        }
        reader.readAsDataURL(files[i]);
      }
    }
  });
</script>
other contents
social