jQuery chili 그림 멀리 확대 플러그 인
3563 단어 사진 확대
우선 구조 정의:
<div class="imgMagnifierWrap">
<div class="overlay"><!-- , , --></div>
<div class="tipboxHover"><!-- --></div>
<div class="imgOriginal"><!-- , <img src="bigOne.jpg" /><!-- , --></div>
</div>
<!-- -->
<style type="text/css">
.imgMagnifierWrap *{position:absolute;background:#fff;}
.imgMagnifierWrap .tipboxHover{width:80px; height:60px; filter:alpha(opacity=30);opacity:.3;display:none;}
.imgMagnifierWrap .imgOriginal{display:none;z-index:9999;overflow:hidden; width:400px; height:400px;
background-color:#cdf; background-repeat:no-repeat; text-align:center;border:1px solid #555; }
.imgMagnifierWrap .overlay{cursor:crosshair;filter:alpha(opacity=0);opacity:0;}
<style>
그리고 그림 미리 불 러 오 는 것 을 고려 합 니 다:
$.imgPreloader=function(url,eventLists){
var img=new Image();
var $img=$(img);
img.src=url;
$.each(eventLists,function(type,fn){
$img.bind(type,fn);
});
$img.trigger(img.complete?'load':'begin');
return $img;
};
재 계산 감응 영역:작은 그림 이 있 는 감지 구역 의 네 변 은 각각 지시 사각형 의 각 네 변 의 1/2 크기 의 사각형 을 빼 고 이 이외 의 구역 은 큰 그림 경계 로 표 시 됩 니 다.
var borderLeft =thumbInfo.left+tipboxInfo.width/2;
var ratioX=(mouseInfo.x-borderLeft)/(thumbInfo.width-tipboxInfo.width);
큰 그림 으로 배경 그림 으로 인 한 문제:숨겨 진 전경 그림 으로 미리 불 러 오기,load 이벤트 판단 시기,ie,chrome 정상,ff 는 두 번 의 그림 을 요 청 했 습 니 다.그림 은 캐 시 되 지 않 았 습 니 다.
다른 방식 으로 큰 그림 을 미리 싣 지 않 는 다.직접 큰 그림 위치 에서 덮어 쓰기 층 으로'loading'을 한 후 chrome 에서 점진 적 으로 그림 을 불 러 오 는 것 으로 바 뀌 었 습 니 다.chrome 이 아 닌 직접 표시 되 어 아 쉬 움 이 있 습 니 다.
최종 결 과 는 큰 그림 을 전경 그림 으로 사용 합 니 다.
장점 은 큰 그림 의 load 와 error 사건 이 모두 정상적으로 작 동 할 수 있다 는 것 이다
$.imgPreloader($anchor.attr('href'),{
load:function(){
isImageReady=true;
$o.empty().append(this);
setTimeout(autoFitPicture,0);
},
begin:function(){
$o.text('loading...');
},
error:function(){
isImageReady=true;
$o.text('invalid picture!');
}
});
큰 그림 에 미리 불 러 온 load 이벤트 와 작은 그림 mousemove 이벤트 가 동기 화 되 지 않 는 해결 방법:마우스 좌 표를 실시 간 으로 저장 하고 큐 브 상자 의 포 지 셔 닝 과 큰 그림 의 포 지 셔 닝 방법 을 분리 합 니 다
//
var mouseInfo={x:0,y:0};
//
var setTipboxPosition=function(e){
mouseInfo.x=e.pageX;
mouseInfo.y=e.pageY;
$tipbox.css({
top:mouseInfo.y<thumbInfo.width/2+thumbInfo.top
?Math.max(mouseInfo.y-tipboxInfo.height/2,thumbInfo.top)
:Math.min(mouseInfo.y-tipboxInfo.height/2,thumbInfo.top+thumbInfo.height-tipboxInfo.height),
left:mouseInfo.x<thumbInfo.width/2+thumbInfo.left
?Math.max(mouseInfo.x-tipboxInfo.width/2,thumbInfo.left)
:Math.min(mouseInfo.x-tipboxInfo.width/2,thumbInfo.left+thumbInfo.width-tipboxInfo.width)
});
setImgPosition();
};
아무 말 이나 브 라 우 저 가 있다 면 다행 일 수도 있 습 니 다데모 코드포장 다운로드.45677915.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
jquery 경 동상 점,범 객 상점 의 사진 확대 효과 실현효 과 는 다음 과 같다. 우리 의 시연 을 보 자."실행 코드"후 한 번 새로 고침: JQzoom Demo [Ctrl+A 전체 선택: ]이러한 효 과 를 실현 하려 면,이러한 효과 가 필요 한 페이지 의 영역 에 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.