Javascript/jQuery 이미지 회전 돋보기

<style>
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
/* 감싸는 div */
.wrap {
position: relative;
width: 500px;
height: 500px;
margin: 0 auto;
}
/* 확대될 타겟이미지*/
.target {
display: block;
width: 100%;
}
/* 돋보기 */
.magnifier {
width: 200px;
height: 200px;
position: absolute;
border-radius: 100%;
box-shadow: 0 0 0 3px rgba(255, 255, 255, 0.85), 0 0 3px 3px rgba(0, 0, 0, 0.25);
display: none;
}
</style>
<script src="<?php echo WV_JS_URL; ?>/jQueryRotate.js"></script>
<!-- <h3 class="newp_tit"><?php echo $wv['title']; ?></h3> -->
<div style="text-align: center">
<input type="button" id="rotateL" name="act_button" value="왼쪽으로 회전" class="btn_lsmall bx-white">
<input type="button" id="rotateR" name="act_button" value="오른쪽으로 회전" class="btn_lsmall bx-white">
<input type="button" id="close" name="act_button" value="닫기" class="btn_lsmall bx-white">
<input type="button" id="winsizeup" name="act_button" value="창키우기" class="btn_lsmall bx-white">
<input type="button" id="winsize" name="act_button" value="창되돌리기" class="btn_lsmall bx-white">
</div>
<div class="new_win_body">
<!-- <div> -->
<img id="bigImg" class="target" src="<?php echo $filename;?>" width="600" data-zoom="3">
<!-- </div> -->

</div>




<script type="text/javascript">
$(function(){
var angle = 0;

$("#rotateL").click(function(){
angle += -90; $("#bigImg").rotate(angle);
});

$("#rotateR").click(function(){
angle += +90; $("#bigImg").rotate(angle);
});

$("#close").click(function(){
window.self.close();
});

$("#winsize").click(function(){
popsize(650,900) ;
});

$("#winsizeup").click(function(){
popsize(950,1200) ;
});

});

var target = $('.target');
//1
var zoom = target.data('zoom');
$(".new_win_body")
.on('mousemove', magnify)
.prepend("<div class='magnifier'></div>")
.children('.magnifier').css({
"background": "url('" + $(".target").attr("src") + "') no-repeat",
// 2
"background-size": target.width() * zoom + "px " + target.height() * zoom+ "px"
});

var magnifier = $('.magnifier');

function magnify(e) {

// 마우스 위치에서 .magnify의 위치를 차감해 컨테이너에 대한 마우스 좌표를 얻는다.
var mouseX = e.pageX - $(this).offset().left;
var mouseY = e.pageY - $(this).offset().top;

// 컨테이너 밖으로 마우스가 벗어나면 돋보기를 없앤다.
if (mouseX < $(this).width() && mouseY < $(this).height() && mouseX > 0 && mouseY > 0) {
magnifier.fadeIn(100);
} else {
magnifier.fadeOut(100);
}

//돋보기가 존재할 때
if (magnifier.is(":visible")) {

// 3
var rx = -(mouseX * zoom - magnifier.width() /2 );
var ry = -(mouseY * zoom - magnifier.height() /2 );
// var rx = -(mouseX / target.width() * target[0].naturalWidth - magnifier.width() / 2);
// var ry = -(mouseY / target.height() * target[0].naturalHeight - magnifier.height() /2);

//돋보기를 마우스 위치에 따라 움직인다.
//돋보기의 width, height 절반을 마우스 좌표에서 차감해 마우스와 돋보기 위치를 일치시킨다.
var px = mouseX - magnifier.width() / 2;
var py = mouseY - magnifier.height() / 2;

// 6
magnifier.css({
left: px,
top: py,
backgroundPosition: rx + "px " + ry + "px"
});
}
}

 

0
0
이 글을 페이스북으로 퍼가기 이 글을 트위터로 퍼가기 이 글을 카카오스토리로 퍼가기 이 글을 밴드로 퍼가기

HTML/CSS/기타

번호 제목 글쓴이 날짜 조회수
47 스마트에디터 반응형 CSS 추가 관리자 12-13 33
46 JS 글자수 체크(공백포함, 제외) 및 언어 옵션 설정 관리자 09-02 2,911
45 web chart - 실시간 차트 관리자 07-25 2,880
44 비동기 프로그래밍 관리자 07-25 2,829
43 table thead 고정과 tbody 스크롤 관리자 07-23 2,888
42 datepicker 사용하여 공휴일 직접 지정하기 관리자 06-11 2,943
41 Dropzone - 이미지 & 파일 업로드 (드래그 앤 드롭) 라이브러리 관리자 03-06 3,112
40 JSPDF 사용법(Javascript pdf) 관리자 03-04 3,454
39 FullCalendar(풀캘린더) 어거지 사용법 관리자 01-25 3,296
38 JQUERY - id가 여러개인데 한번에 찾고 싶을때! ${} 관리자 12-28 3,123
37 [CSS] 가로 스크롤 구현하기 관리자 12-27 3,281
36 JCROP을 이용한 업로드한 크롭( CROP ) 하기 관리자 12-27 3,245
35 제이쿼리 - 모달 다이아로그 및 여러 알림창들 관리자 12-21 2,949
34 Javascript/jQuery 이미지 회전 돋보기 관리자 11-07 3,350
33 Resolving the Issue of Fakepath in JavaScript 관리자 10-26 2,996
32 div 및 요소 화면 중앙에 위치시키기 관리자 10-21 3,016
31 [Jquery] 체크박스 전체 체크 , 해제 하는 방법 관리자 10-19 3,052
30 display 스타일 속성 사용하여 행 숨기기/보이기 관리자 09-16 3,437
29 자주 사용하는 비주얼 스튜디오 코드(Visual Studio Code, VSC, vscode) 단축키 정리 관리자 09-14 3,559
28 div 2개 나란히 정렬하는 방법 관리자 09-09 3,242