图片预览,且鼠标滚轮缩放
<!DOCTYPE html>
<head>
<meta charset="utf-8">
<meta http-equiv="x-ua-compatible" content="ie=edge">
<meta name="viewport" content="width=device-width">
<title>预览图片-滚轮缩放</title>
<style>
#outerbox {
width:100%;
height:100%;
display:none;
position:fixed;
top:0;
left:0;
background:rgba(0,0,0,0.6);
z-index:9;
}
#innerbox {
position:absolute;
z-index:99;
}
#innerbox #bigimg {
cursor:grab;
border:5px solid #ffffff;
border-radius:10px;
}
</style>
</head>
<body>
<div id="conbox">
<p><img class="imgitem" src="https://www.jq22.com/img/cs/500x300-1.png" alt="My Image"></p>
<p><img class="imgitem" src="https://www.jq22.com/img/cs/500x300-2.png" alt="My Image"></p>
</div>
<div id="outerbox">
<div id="innerbox">
<img id="bigimg" src="">
</div>
</div>
<script src="http://code.jquery.com/jquery-2.1.4.min.js"></script>
<script >
$(function() {
var scaling = 1;
$('.imgitem').each(function() {
$(this).click(function() {
var _this = $(this);
showBigImg('#outerbox', '#innerbox', '#bigimg', _this)
})
})
function showBigImg(outerbox, innerbox, bigimg, _this) {
var src = _this.attr('src');
$(bigimg).attr('src', src);
$(bigimg).attr('src', src).load(function() {
var windowW = $(window).width();
var windowH = $(window).height();
var realW = this.width;
var realH = this.height;
var imgW, imgH;
var scale = 0.8;
if (realH > windowH * scale) {
imgH = windowH * scale;
imgW = imgH / realH * realW;
if (imgW > windowW * scale) {
imgW = windowW * scale;
}
} else if (realW > windowW * scale) {
imgW = windowW * scale;
imgH = imgW / realW * realH;
} else {
imgW = realW;
imgH = realH;
}
$(bigimg).css('width', imgW);
var w = (windowW - imgW) / 2;
var h = (windowH - imgH) / 2;
$(innerbox).css({
'top': h,
'left': w
});
$(outerbox).fadeIn('fast');
$('body').css('overflow-y', 'hidden');
$('#bigimg').on("mousewheel", MouseWheelHandler);
$('#bigimg').on("DOMMouseScroll", MouseWheelHandler);
})
$(outerbox).click(function() {
$(this).fadeOut('fast');
$('#bigimg').off("mousewheel");
$('#bigimg').off("DOMMouseScroll");
scaling = 1;
$('#bigimg').css('transform', 'scale(1)');
$('body').css('overflow-y', 'auto');
})
}
function MouseWheelHandler(event) {
var type = event.type;
if (type == 'DOMMouseScroll' || type == 'mousewheel') {
event.delta = (event.originalEvent.wheelDelta) ? event.originalEvent.wheelDelta / 120 : -(event.detail || 0) / 3;
}
if (event.delta == 1 || event.delta > 0) {
zoomImg('#bigimg', 'add')
} else if (event.delta == -1 || event.delta < 0) {
zoomImg('#bigimg', 'cut')
} else {
console.log("鼠标滚轮放大缩小状态获取失败")
}
}
function zoomImg(img, type) {
if (type == 'add') {
scaling += 0.1;
} else {
if (scaling < 0.5) {
return
}
scaling -= 0.1;
}
$(img).css('transform', `scale(${scaling})`);
}
})
</script>
</body>
</html>