直接上代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>xxx</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;
}
</style>
<script src="__PUBLIC__/Js/jquery-1.7.1.js?v=1.0.0" type="text/javascript"></script>
</head>
<body>
<div id="conbox">
<p><img class="imgitem" src="/xxx/xxx.png" /></p>
<p><img class="imgitem" src="/xxx/xxx.png" /></p>
<p><img class="imgitem" src="/xxx/xxx.png" /></p>
</div>
<div id="outerbox">
<div id="innerbox">
<img id="bigimg" src="" />
</div>
</div>
</div>
<script type="text/javascript">
$(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>
效果如图:
