>  기사  >  웹 프론트엔드  >  자바스크립트 기반으로, 모바일 단말기에서 이미지를 클릭하시면 더 큰 이미지를 보실 수 있습니다. hide_javascript 스킬은 이미지를 클릭하시면 크게 보실 수 있습니다.

자바스크립트 기반으로, 모바일 단말기에서 이미지를 클릭하시면 더 큰 이미지를 보실 수 있습니다. hide_javascript 스킬은 이미지를 클릭하시면 크게 보실 수 있습니다.

WBOY
WBOY원래의
2016-05-16 15:33:443409검색

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');
    });
  }
};
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.