フォトライブラリ 画像表示の修正
Showing
2 changed files
with
33 additions
and
43 deletions
... | @@ -3804,28 +3804,38 @@ body.itemid-132 table { | ... | @@ -3804,28 +3804,38 @@ body.itemid-132 table { |
3804 | } | 3804 | } |
3805 | 3805 | ||
3806 | .item-page.photos-custom #photo-popup { | 3806 | .item-page.photos-custom #photo-popup { |
3807 | display: block; | 3807 | /* display: block; */ |
3808 | position: fixed; | 3808 | position: fixed; |
3809 | top: 50%; | 3809 | top: 50%; |
3810 | left: 50%; | 3810 | left: 50%; |
3811 | transform: translate(-50%, -50%); | 3811 | transform: translate(-50%, -50%); |
3812 | z-index: 220; | 3812 | z-index: 220; |
3813 | width: 90%; | ||
3814 | height: 90%; | ||
3813 | max-width: 1260px; | 3815 | max-width: 1260px; |
3814 | max-height: 90%; | ||
3815 | overflow: auto; | ||
3816 | } | 3816 | } |
3817 | 3817 | ||
3818 | .item-page.photos-custom #photo-popup.Vertical { | 3818 | .item-page.photos-custom #photo-popup.vertical { |
3819 | width: 60%; | 3819 | display: flex; |
3820 | align-items: center; | ||
3821 | justify-content: center; | ||
3820 | } | 3822 | } |
3821 | 3823 | ||
3822 | .item-page.photos-custom #photo-popup.horizontal { | 3824 | .item-page.photos-custom #photo-popup.horizontal { |
3823 | width: 90%; | 3825 | overflow: auto; |
3824 | } | 3826 | } |
3825 | 3827 | ||
3826 | .item-page.photos-custom #photo-popup #photo-popup-img { | 3828 | .item-page.photos-custom #photo-popup #photo-popup-img { |
3829 | transition: opacity 0.5s; | ||
3830 | } | ||
3831 | |||
3832 | |||
3833 | .item-page.photos-custom #photo-popup.vertical #photo-popup-img { | ||
3834 | max-height: 100%; | ||
3835 | } | ||
3836 | |||
3837 | .item-page.photos-custom #photo-popup.horizontal #photo-popup-img { | ||
3827 | width: 100%; | 3838 | width: 100%; |
3828 | transition: all 0.5s; | ||
3829 | } | 3839 | } |
3830 | 3840 | ||
3831 | .item-page.photos-custom #photo-popup-under { | 3841 | .item-page.photos-custom #photo-popup-under { | ... | ... |
... | @@ -23,29 +23,12 @@ jQuery(function($) { | ... | @@ -23,29 +23,12 @@ jQuery(function($) { |
23 | for (let i = 0; i < $imgWrppers.length; i++) { | 23 | for (let i = 0; i < $imgWrppers.length; i++) { |
24 | // 子要素が空の場合削除(自動生成されたp要素は子要素が入っていない) | 24 | // 子要素が空の場合削除(自動生成されたp要素は子要素が入っていない) |
25 | if ($imgWrppers[i]['children'].length === 0) { | 25 | if ($imgWrppers[i]['children'].length === 0) { |
26 | $('.item-page.photos-custom > div p').eq(i).remove(); | 26 | $imgWrppers[i].remove(); |
27 | } | 27 | } |
28 | } | 28 | } |
29 | }); | 29 | }); |
30 | 30 | ||
31 | /** | 31 | /** |
32 | * 画面サイズが4:3より縦長の場合は、写真を画面幅いっぱいに表示する。 | ||
33 | */ | ||
34 | function setPopup() { | ||
35 | const winW = $(window).innerWidth(); | ||
36 | const winH = $(window).innerHeight(); | ||
37 | // 画面表示領域のアスペクト比を取得 | ||
38 | const asp = winH / winW; | ||
39 | if (asp < 0.75) { | ||
40 | $('#photo-popup').removeClass('horizontal'); | ||
41 | $('#photo-popup').addClass('Vertical'); | ||
42 | } else { | ||
43 | $('#photo-popup').removeClass('Vertical'); | ||
44 | $('#photo-popup').addClass('horizontal'); | ||
45 | } | ||
46 | } | ||
47 | |||
48 | /** | ||
49 | * 画像のクリックをトリガーにして、ポップアップで表示する画像URLの取得と、 | 32 | * 画像のクリックをトリガーにして、ポップアップで表示する画像URLの取得と、 |
50 | * popupの制御を行う関数の実行。 | 33 | * popupの制御を行う関数の実行。 |
51 | */ | 34 | */ |
... | @@ -60,19 +43,14 @@ jQuery(function($) { | ... | @@ -60,19 +43,14 @@ jQuery(function($) { |
60 | const $img = $('#photo-popup-img'); | 43 | const $img = $('#photo-popup-img'); |
61 | // popupに画像URLをセット | 44 | // popupに画像URLをセット |
62 | $img.attr('src', src); | 45 | $img.attr('src', src); |
63 | setPopup(); | 46 | // 画像URLのセットから時間をあけることで、表示がなめらかになる。 |
64 | $(window).resize(function () { | ||
65 | setPopup(); | ||
66 | }); | ||
67 | setTimeout(function () { | 47 | setTimeout(function () { |
68 | // popupの表示 | 48 | // popupの表示 |
69 | $('#photo-popup-wrapper').fadeIn(); | 49 | $('#photo-popup-wrapper').fadeIn(); |
70 | // popupのみスクロール可とする。 | 50 | // popupのみスクロール可とする。 |
71 | $('body').css('overflow','hidden'); | 51 | $('body').css('overflow','hidden'); |
52 | addClassToImage($img); | ||
72 | }, 50); | 53 | }, 50); |
73 | setTimeout(function () { | ||
74 | popupScrollSet($img); | ||
75 | }, 100); | ||
76 | }); | 54 | }); |
77 | 55 | ||
78 | /** | 56 | /** |
... | @@ -97,11 +75,12 @@ jQuery(function($) { | ... | @@ -97,11 +75,12 @@ jQuery(function($) { |
97 | src = $('.item-page.photos-custom > div p').eq(index).children('img').attr('src'); | 75 | src = $('.item-page.photos-custom > div p').eq(index).children('img').attr('src'); |
98 | } | 76 | } |
99 | setTimeout(function () { | 77 | setTimeout(function () { |
100 | // transitionで透明になりきった時点で画像の差し替えを実行 | 78 | // transitionで透明になりきるまでまって画像の差し替えを実行 |
101 | $img.attr('src', src); | 79 | $img.attr('src', src); |
102 | }, 400); | 80 | }, 400); |
103 | setTimeout(function () { | 81 | setTimeout(function () { |
104 | popupScrollSet($img); | 82 | // 画像URLのセットからすこし待つことで関数で正しい数値を取得できる。 |
83 | addClassToImage($img); | ||
105 | }, 500); | 84 | }, 500); |
106 | setTimeout(function () { | 85 | setTimeout(function () { |
107 | $('#photo-popup').css('display',''); | 86 | $('#photo-popup').css('display',''); |
... | @@ -126,7 +105,7 @@ jQuery(function($) { | ... | @@ -126,7 +105,7 @@ jQuery(function($) { |
126 | $img.attr('src', src); | 105 | $img.attr('src', src); |
127 | }, 400); | 106 | }, 400); |
128 | setTimeout(function () { | 107 | setTimeout(function () { |
129 | popupScrollSet($img); | 108 | addClassToImage($img); |
130 | }, 500); | 109 | }, 500); |
131 | setTimeout(function () { | 110 | setTimeout(function () { |
132 | $('#photo-popup').css('display',''); | 111 | $('#photo-popup').css('display',''); |
... | @@ -146,18 +125,19 @@ jQuery(function($) { | ... | @@ -146,18 +125,19 @@ jQuery(function($) { |
146 | } | 125 | } |
147 | 126 | ||
148 | /** | 127 | /** |
149 | * 画像が縦長の場合、ポップアップ表示の際にスクロール値を画像の縦中央にセットする。 | 128 | * 表示する画像のアスペクト比に応じたクラスを付与する。 |
150 | * @param {*} $img ポップアップに表示している画像 | 129 | * @param {*} $img ポップアップに表示している画像 |
151 | */ | 130 | */ |
152 | function popupScrollSet($img) { | 131 | function addClassToImage($img) { |
153 | const imgHeight = $img[0].naturalHeight; // 画像の本来の高さ | 132 | const imgHeight = $img[0].naturalHeight; // 画像の本来の高さ |
154 | const imgWidth = $img[0].naturalWidth; // 画像の本来の幅 | 133 | const imgWidth = $img[0].naturalWidth; // 画像の本来の幅 |
155 | if (imgHeight > imgWidth) { | 134 | const asp = imgHeight / imgWidth; |
156 | const wrapperWidth = $('#photo-popup').width(); // 画像の包括要素の幅 | 135 | if (asp < 1) { |
157 | const scaleW = wrapperWidth / imgWidth; // 画像の横幅の縮尺比率 | 136 | $('#photo-popup').removeClass('horizontal'); |
158 | const scrollTop = imgHeight * scaleW * 0.25; // スクロール位置(画像の縮尺後の高さ×25%) | 137 | $('#photo-popup').addClass('vertical'); |
159 | $('#photo-popup').scrollTop(scrollTop); | 138 | } else { |
160 | console.log('test'); | 139 | $('#photo-popup').removeClass('vertical'); |
140 | $('#photo-popup').addClass('horizontal'); | ||
161 | } | 141 | } |
162 | } | 142 | } |
163 | }); | 143 | }); |
... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
-
Please register or sign in to post a comment