27445d63 by TaishiTokudome

フォトライブラリ 画像表示の修正

1 parent e10bf87b
...@@ -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
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!