이미지 라이트박싱이 수동 크기 조정 또는 [grid] 태그를 무시합니다

우선순위/심각도: 낮음.
플랫폼: Windows 10의 Firefox 127.0 및 Android 14의 Chrome 125.0.6422.165에서 확인됨.
설명: 아래를 참조하세요.
재현 단계: 해상도가 690×500픽셀 이하인 이미지를 업로드한 후, 수동으로 크기 조절(예: ![|336x456,x150](upload://uoNNF6SaHfaM6bRapNRZoeKQqjU.png))하거나 [grid] 안에 배치(예: [grid] ![|336x456](upload://uoNNF6SaHfaM6bRapNRZoeKQqjU.png) [/grid])합니다.


기대되는 동작

Discourse의 라이트박스(Lightboxing) 작동 방식은 다음과 같습니다. 게시글에 맞춰 이미지가 축소된 경우, 클릭하여 전체 해상도로 볼 수 있도록 라이트박스가 적용되어야 합니다.

문제점

현재 구현 방식에 버그가 있습니다: 이미지의 원래 해상도를 웹사이트의 “최대 이미지 너비” 및 “최대 이미지 높이 설정”(기본값 690×500픽셀)과만 비교할 뿐, 수동 크기 조절 및 이미지 그리드는 무시합니다. 이로 인해 [최대 이미지 너비]×[최대 이미지 높이] 미만으로 축소된 이미지는 라이트박스가 적용되지 않을 수 있습니다.

수동 크기 조절[1]

이미지가 수동으로 축소된 경우 라이트박스가 적용되지 않는 예시입니다 – 아래 이미지 위에 마우스를 올리면 일관성 없이 라이트박스가 적용되는 것을 확인할 수 있으며, 라이트박스가 적용된 이미지를 클릭하면 좌우 키를 눌렀을 때 일부 이미지가 표시되지 않는 것을 볼 수 있습니다:[2]

이미지 그리드

이미지 그리드에서의 문제는 그리드가 사실상 항상 이미지를 크기 조절 – 그리고 종종 잘라내기(Crop) – 하므로, 이후 전체 이미지를 보기 위해 클릭할 수 없을 때 문제가 된다는 것입니다.

해결책

업데이트된 제안된 해결책은 아래 토론에서 확인할 수 있습니다.

원래 제안된 해결책… 해결책은 다음 사항을 보장하는 것입니다:
  1. 라이트박스가 이미지의 페이지 상 크기를 원래 해상도와 비교하고,
  2. 그리드 내 이미지는 항상 라이트박스가 적용되도록 하는 것입니다.

제 이해로는 라이트박스 적용이 클라이언트 측에서 이루어지므로, 적어도 불가능한 수준으로 어려울 것이라고는 생각하지 않습니다.


  1. 이 문제의 이 부분은 이전에 포럼에서 언급된 바 있으며, 해당 스레드에서는 해결책이 무엇인지에 대해 거의 동일한 결론이 도출되었습니다. ↩︎

  2. 처음에는 제가 별도로 보고한 문제로 인해 상당한 서식 문제가 발생했으나, 이 게시글을 편집하고 이 부분을 작성하는 시점에는 이미 수정되었습니다. ↩︎

6개의 좋아요

제가 떠올린 생각이 하나 있습니다. 모든 이미지에 라이트박스를 적용하지 않을 이유가 있을까요? 적어도 모바일에서 정보 바와 작은 “확대” 아이콘을 가리지 않으면서도 이미지가 충분히 들어맞을 수 있는 이미지는 말입니다. 라이트박스는 고해상도 이미지를 볼 수 있게 해주는 것 외에도 두 가지 측면에서 가치가 있습니다:

  • 대체 텍스트(alt text)를 표시합니다(대체 텍스트는 미리 입력되어 있고, title 텍스트의 구문이 더 난해하기 때문에 게시자가 title 텍스트보다 훨씬 더 자주 입력할 가능성이 있으므로 매우 중요합니다) 그리고
  • 라이트박스를 클릭한 후 이미지를 넘길 때 해당 이미지가 누락되지 않습니다.

전체적으로 볼 수 있는 이미지에 라이트박스를 적용하지 않을 이유가 있을까요?

한 가지 옵션은 그리드에서 모든 이미지에 라이트박스를 적용하는 것 외에도, 페이지에서 특정 크기(예: 72×72픽셀 이상)를 초과하는 모든 이미지에 라이트박스를 적용하는 것입니다(여기서는 줄 단위로 생각하고 있습니다 – 크기가 약 3줄을 초과하는 모든 이미지). 어떻게 생각하시나요?

1개의 좋아요

동의하며, 과거에 OP에서 링크하신 것처럼 이 문제를 이미 언급한 바 있습니다. Some images don't lightbox? - #3 by piffy

제가 보기엔 문제의 핵심은 “리사이즈 및 라이트박스” 설정이 서로 묶여 있다는 점입니다.

이상적으로는 리사이즈 설정은 690x500px의 기본값과 유사하게 유지하되, 라이트박스 설정은 72x72px에 더 가깝게(큰 이모지나 “스티커” 크기의 이미지보다 큰 것들) 설정하고 싶습니다.

라이트박스의 주요 의도는 이미지의 축소되지 않은 버전을 보는 것인 것 같지만, 저는 이를 캐러셀 스타일의 갤러리로 더 많이 사용합니다. 그래서 같은 그리드에 있는 이미지인데도 502px 높이의 이미지와 499px 높이의 이미지가 다르게 처리되는 것은 다소 어색하게 느껴집니다.

1개의 좋아요

저는 이것이 제가 생각했던 내용을 완벽하게 요약한 것이라 생각합니다. 라이트박스가 필요하지 않은 유일한 사용 사례가 아닌가요? 바로 이미지가 텍스트의 일부이거나 게시물의 포맷의 일부일 때 말입니다.

전반적으로 더 나은 해결책이라고 생각합니다. '크기 […] 이상인 라이트박스 이미지’를 독립적인 설정으로 분리하고 기본값을 훨씬 낮추는 것입니다. 이는 현재 구현 방식과 두 가지 면에서 더 달라져야 한다고 생각합니다:

  • 페이지에서의 크기를 기준으로 판단해야 하며, 이미지의 원래 크기가 아닌 것입니다.
  • 두 차원 모두를 초과해야 하며, 하나만 초과해서는 안 됩니다 – 예를 들어, 690×10픽셀(페이지 기준)인 이미지가 라이트박스로 열리기를 원하는 사용 사례를 상상하기 어렵습니다.

사용 사례에 대한 참고로, 저는 때때로 이모지처럼 작은 이미지를 포함합니다. 하지만 고해상도로 처리하여 고DPI 화면에서 흐려지지 않도록 합니다. 예를 들어:

! 이 이미지는 1) 이모티콘이지만, 더 중요한 것은 2) 모바일에서 오른쪽 하단의 작은 확장 아이콘이 이미지의 대부분을 가리게 되므로, 라이트박스로 열리지 않아야 합니다. 현재는 고해상도 원본 이미지의 크기가 690×500픽셀(정확히는 372×468픽셀) 미만이기 때문에 라이트박스로 열리지 않지만, 축소된 상태이더라도 라이트박스로 열리지 않아야 합니다. 판단의 진정한 핵심 기준은 페이지에서의 크기입니다.

1개의 좋아요

해상도가 100 x 100픽셀 이상인 이미지는 이제 라이트박스로 표시됩니다.

4개의 좋아요