나는 당신이 원하는 것은 클릭했을 때 올바른 라이트 박스를 호출하는 앵커 태그를 가지고 있다고 생각한다. 예상되는대로 반응하는 CSS로 sample_img를 스타일링하는 것은 멋진 일을 할 필요가 없기 때문이다.하지만 내가 틀렸다면 제 생각에는 3 가지 선택 사항이 있습니다. 미디어 쿼리를 사용하여 .desktop 링크를 숨기고 말한 것처럼 할 수 있습니다. 이미지가 정확히 동일하므로 사용자가 이미지를 다시로드해야하고 사용자 브라우저가 display:none
으로 설정됩니다. 그 요소를 렌더링하지 않으므로, 유일한 단점은 혼란스러워하는 html을 보게 될 것이고, 그것은 진흙 투성이라고 느낄 것입니다. 그러나 제 생각에는 다른 걱정거리가 없습니다.
또 다른 옵션은 js 코드를 사용하는 것입니다. 라이트 박스 코드는 일반적으로 라이트와 관련된 모든 링크에 이벤트 처리기를 추가하는 방법을 사용하므로 적절한 형식 지정을 사용하면 rel을 사용할 수 있습니다. 당신이 링크 rel attr을 변경 한 후에 해당 이벤트를 수동으로 트리거하거나, 전에 일어난 일이 일어나지 않는 한 adaptLinks()
을 실행하십시오. 이를 위해 라이트 박스 페이지에서 수행하는 방법을 확인할 수 있습니다. 여기
가
코드
var adaptLinks = (function(){
var $winHeight = $(window).height();
var $lightBoxLinks = $('a.lightBox');
return function() {
var isPrettyPhoto = false;
if($winHeight < 1000){
$lightBoxLinks
.removeClass('desktop')
.addClass('mobile')
.attr('rel','external');
} else {
$lightBoxLinks
.removeClass('mobile')
.addClass('desktop')
.attr('rel','prettyPhoto');
isPrettyPhoto = true;
}
// Call the link processing method of the lightbox
if(isPrettyPhoto) {
$lightBoxLinks.prettyPhoto();
} else {
// photoSwipe method
}
}
})();
$(window).resize(adaptLinks());
그리고 THIR 옵션, 데스크톱과 모바일 모두에서 작동하는 라이트 박스를 사용, 난 그게 옳은 방법이라고 생각합니다.
행운을 빈다.
서버 측에서 모바일 vs pc를 결정하고 올바른 이미지 만 클라이언트로 보내는 것을 고려해야합니다. 로드 시간은 다른 두 배가 될 수 있습니다 (모바일 및 데스크톱 이미지가 다르다고 가정하면 동일합니다. HTML 크기가 중요하지 않으므로로드 시간은 비슷합니다). – JCOC611
'mobile'과'desktop'은 2 세트의 서로 다른 이미지를로드합니까? 그들이 동일한 이미지 세트를로드한다면,'display : none'은 성능에 아무런 영향이없이 잘 동작 할 것입니다. –
[관심이있을 수 있습니다] (http://blog.cloudfour.com/css-media-query-for-mobile-is-fools-gold/) TLDR : 두 이미지가 다운로드됩니다. – steveax