1. 수요
이미지를 클릭하면 큰 이미지를 볼 수 있고, 큰 이미지를 클릭하면 숨길 수 있습니다. 모바일 화면이 작고 큰 이미지를 봐야 할 수도 있기 때문에 모바일 기기에서 주로 사용됩니다.
2. 코드
<!DOCTYPE html> <html> <meta charset="utf-8"/> <head runat="server"> <title>JQuery点击图片查看大图by starof</title> <style type="text/css"> .exampleImg { height:100px; cursor:pointer;} </style> <script src="http://code.jquery.com/jquery-latest.js"></script> <script type="text/javascript"> //alert($); // (function (window, undefined) { // var MyJQuery = function () { // window.MyjQuery = window.$ = jQuery; window.$ = MyJQuery; // }; // })(window); // alert($); $.fn.ImgZoomIn = function () { bgstr = '<div id="ImgZoomInBG" style=" background:#000000; filter:Alpha(Opacity=70); opacity:0.7; position:fixed; left:0; top:0; z-index:10000; width:100%; height:100%; display:none;"><iframe src="about:blank" frameborder="5px" scrolling="yes" style="width:100%; height:100%;"></iframe></div>'; //alert($(this).attr('src')); imgstr = '<img id="ImgZoomInImage" src="' + $(this).attr('src')+'" onclick=$(\'#ImgZoomInImage\').hide();$(\'#ImgZoomInBG\').hide(); style="cursor:pointer; display:none; position:absolute; z-index:10001;" />'; if ($('#ImgZoomInBG').length < 1) { $('body').append(bgstr); } if ($('#ImgZoomInImage').length < 1) { $('body').append(imgstr); } else { $('#ImgZoomInImage').attr('src', $(this).attr('src')); } //alert($(window).scrollLeft()); //alert( $(window).scrollTop()); $('#ImgZoomInImage').css('left', $(window).scrollLeft() + ($(window).width() - $('#ImgZoomInImage').width()) / 2); $('#ImgZoomInImage').css('top', $(window).scrollTop() + ($(window).height() - $('#ImgZoomInImage').height()) / 2); $('#ImgZoomInBG').show(); $('#ImgZoomInImage').show(); }; $(document).ready(function () { $("#imgTest").bind("click", function () { $(this).ImgZoomIn(); }); }); </script> </head> <body> <div> <!--第一种写法--> <img class="exampleImg" src="images/03.jpg" id="imgTest"/> <!--第二种写法--> <img class="exampleImg" src="images/p1_nav2.png" onClick="$(this).ImgZoomIn();"/> </div> </body> </html>
3. 스킬
모바일 단말기는 핫스팟을 추가할 수 없기 때문에 최종 해결 방법은 4개의 a 태그를 사용하여 왼쪽 위 모서리, 오른쪽 위 모서리, 왼쪽 아래 모서리, 오른쪽 아래 모서리를 찾는 것입니다.
<dl> <dd style="display:block;"> <img src="images/four-duche.jpg" onClick="$(this).ImgZoomIn();"> <a href="javascript:;" src="images/11.jpg" class="topleft" onClick="$(this).ImgZoomIn();"></a> <a href="javascript:;" src="images/12.jpg" class="topright" onClick="$(this).ImgZoomIn();"></a> <a href="javascript:;" src="images/13.jpg" class="bottomleft" onClick="$(this).ImgZoomIn();"></a> <a href="javascript:;" src="images/14.jpg" class="bottomright" onClick="$(this).ImgZoomIn();"></a> </dd> ... </dl> css .topleft,.topright,.bottomleft,.bottomright{ width:50%; height:50%; position:absolute; } .topleft{ /*background-color:red;*/ top:0; left:0; } .topright{ /*background-color:green;*/ top:0; right:0; } .bottomleft{ /*background-color:blue;*/ bottom:0; left:0; } .bottomright{ /*background-color:yellow;*/ bottom:0; right:0; }
PS: 모바일 웹사이트 모바일 이미지 지연 로딩 구현
국내 통신망의 비용 효율성의 한계와 휴대폰 처리 능력의 차이로 인해 무선 애플리케이션을 설계할 때
사용자를 위한 트래픽을 절약하는 것은 매우 중요한 고려 사항입니다. 틀림없이 모든 바이트는 클라이언트를 위해 저장되어야 합니다.
트래픽 절약은 다음 측면에 중점을 둘 수 있습니다.
1. 이전에 논의한 브라우저 로컬 저장소 사용 등 캐시를 사용합니다
2. 코드 로딩 지연(바닥 감지, 인터페이스를 통해 데이터 획득)
3. 리소스 로딩 지연, 보이는 영역에 사진이 나타난 후 로딩되고, (자동 재생을 고려하지 않고) 오디오 및 비디오는 사용자 클릭에 따라 로딩됩니다.
오늘은 이미지 지연 로딩 구현 방법에 대해 간략하게 말씀드리겠습니다.
jQuery와 jQuery 모바일 기반 예시
원리: 사용자가 화면을 슬라이드하면 화면 스크롤이 종료되어(jQuery에서 제공하는 창 스크롤 중지 이벤트를 적절하게 사용) 뷰포트에 나타나는 그림을 감지합니다.
이미지의 실제 src 속성을 바꾸세요.
팁: 1초 지연을 설정하면 사용자가 즉시 다음 스크롤을 시작할 수도 있습니다. 현재 네트워크 환경에 따라 1초 지연은 사용자가 실제로 원하는 것임을 나타낼 수 있습니다. 내용을 봅니다. WeChat을 사용하는 친구들은 이것을 신중하게 경험할 수 있습니다.
시계 제어로 인해 사용자가 화면을 자주, 빠르게 전환할 경우 많은 요청이 발생하지 않습니다.
메인 코드:
var refreshTimer = null, mebook = mebook || {}; /* *滚动结束 屏幕静止一秒后检测哪些图片出现在viewport中 *和PC端不同 由于无线速度限制 和手机运算能力的差异 1秒钟的延迟对手机端的用户来说可以忍受 */ $(window).on('scrollstop', function () { if (refreshTimer) { clearTimeout(refreshTimer); refreshTimer = null; } refreshTimer = setTimeout(refreshAll, 1e3); }); $.belowthefold = function (element) { var fold = $(window).height() + $(window).scrollTop(); return fold <= $(element).offset().top; }; $.abovethetop = function (element) { var top = $(window).scrollTop(); return top >= $(element).offset().top + $(element).height(); }; /* *判断元素是否出现在viewport中 依赖于上两个扩展方法 */ $.inViewport = function (element) { return !$.belowthefold(element) && !$.abovethetop(element) }; mebook.getInViewportList = function () { var list = $('#bookList li'), ret = []; list.each(function (i) { var li = list.eq(i); if ($.inViewport(li)) { mebook.loadImg(li); } }); }; mebook.loadImg = function (li) { if (li.find('img[_src]').length) { var img = li.find('img[_src]'), src = img.attr('_src'); img.attr('src', src).load(function () { img.removeAttr('_src'); }); } };