基于jquery實(shí)現(xiàn)滾輪放大縮小圖片的函數(shù)代碼
以下是一份基本的jquery實(shí)現(xiàn)滾輪放大縮小圖片的函數(shù)代碼
(1)滾輪控制放大縮小圖片效果如圖:

實(shí)現(xiàn)代碼如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title></title>
<link rel="stylesheet" href="">
<script src="../static/js/jquery-1.11.1.min.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript">
$(function() {
function zoomImg(o) {
var zoom = parseInt(o.style.zoom, 10) || 100;
zoom += event.wheelDelta / 12; //可適合修改
if (zoom > 0) o.style.zoom = zoom + '%';
}
$(document).ready(function() {
$("img").bind("mousewheel",
function() {
zoomImg(this);
return false;
});
});
})
</script>
</head>
<body>
<center>
<img src="../static/img/111.jpg" border="1px" />
</center>
</body>
</html>(2)點(diǎn)擊圖片,彈出遮罩層,再用滾輪控制圖片縮放,該場(chǎng)景一般用于聊天對(duì)話框。

實(shí)現(xiàn)代碼如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title></title>
<link rel="stylesheet" href="">
<script src="../static/js/jquery-1.11.1.min.js" type="text/javascript" charset="utf-8"></script>
<style>
/*************圖片預(yù)覽************/
#outerdiv {
position: fixed;
top: 0;
left: 0;
background: rgba(0, 0, 0, 0.7);
z-index: 2;
width: 100%;
height: 100%;
display: none;
}
#innerdiv {
position: absolute;
}
#bigimg {
border: 5px solid #fff;
cursor: pointer;
}
</style>
<script type="text/javascript">
$(function() {
function zoomImg(o) {
var zoom = parseInt(o.style.zoom, 10) || 100;
zoom += event.wheelDelta / 12; //可適合修改
if (zoom > 0) o.style.zoom = zoom + '%';
}
$(document).ready(function() {
$("img").bind("mousewheel",
function() {
zoomImg(this);
return false;
});
});
})
</script>
</head>
<body>
<center>
<img id="img" src="../static/img/111.jpg" border="1px" @click="bigimg()" />
</center>
<div id="outerdiv">
<div id="innerdiv">
<img id="bigimg" src="" onmousewheel="bigimg(this)" />
</div>
</div>
<script>
$(`#img`).click(function() {
var _this = $(this); //將當(dāng)前的img元素作為_this傳入函數(shù)
imgShow("#outerdiv", "#innerdiv", "#bigimg", _this);
})
// 圖片縮放
function bigimg(obj) {
// alert(parseInt(obj.style.zoom, 10));
//obj是一個(gè)對(duì)象,初始時(shí)obj并沒有zoom屬性,所以給zoom賦值為100;
var zoom = parseInt(obj.style.zoom, 10) || 100;
//每次滾動(dòng)鼠標(biāo)時(shí),改變zoom的大小
//event.wheelDelta有兩個(gè)值,120,-120,取值情況取決于滾動(dòng)鼠標(biāo)的方向;
zoom += event.wheelDelta / 12; //每次滾動(dòng)加減10
if (zoom > 0)
obj.style.zoom = zoom + '%'; //更改后的zoom賦值給obj
return false;
}
// 預(yù)覽圖片
function imgShow(outerdiv, innerdiv, bigimg, _this) {
var src = _this.attr("src"); //獲取當(dāng)前點(diǎn)擊的pimg元素中的src屬性
$(bigimg).attr("src", src); //設(shè)置#bigimg元素的src屬性
/*獲取當(dāng)前點(diǎn)擊圖片的真實(shí)大小,并顯示彈出層及大圖*/
$("<img />").attr("src", src).load(function() {
var windowW = $(window).width(); //獲取當(dāng)前窗口寬度
var windowH = $(window).height(); //獲取當(dāng)前窗口高度
var realWidth = this.width; //獲取圖片真實(shí)寬度
var realHeight = this.height; //獲取圖片真實(shí)高度
var imgWidth, imgHeight;
var scale = 0.8; //縮放尺寸,當(dāng)圖片真實(shí)寬度和高度大于窗口寬度和高度時(shí)進(jìn)行縮放
if (realHeight > windowH * scale) { //判斷圖片高度
imgHeight = windowH * scale; //如大于窗口高度,圖片高度進(jìn)行縮放
imgWidth = imgHeight / realHeight * realWidth; //等比例縮放寬度
if (imgWidth > windowW * scale) { //如寬度扔大于窗口寬度
imgWidth = windowW * scale; //再對(duì)寬度進(jìn)行縮放
}
} else if (realWidth > windowW * scale) { //如圖片高度合適,判斷圖片寬度
imgWidth = windowW * scale; //如大于窗口寬度,圖片寬度進(jìn)行縮放
imgHeight = imgWidth / realWidth * realHeight; //等比例縮放高度
} else { //如果圖片真實(shí)高度和寬度都符合要求,高寬不變
imgWidth = realWidth;
imgHeight = realHeight;
}
$(bigimg).css("width", imgWidth); //以最終的寬度對(duì)圖片縮放
var w = (windowW - imgWidth) / 2; //計(jì)算圖片與窗口左邊距
var h = (windowH - imgHeight) / 2; //計(jì)算圖片與窗口上邊距
$(innerdiv).css({ "top": h, "left": w }); //設(shè)置#innerdiv的top和left屬性
$(outerdiv).fadeIn("fast"); //淡入顯示#outerdiv及.pimg
});
$(outerdiv).click(function() { //再次點(diǎn)擊淡出消失彈出層
$(this).fadeOut("fast");
});
}
</script>
</body>
</html>其他網(wǎng)友補(bǔ)充的函數(shù)
$(document).ready(function() {
function zoomImage(event) {
event.preventDefault();
var image = $(this).find('img');
var delta = event.originalEvent.deltaY || event.originalEvent.detail || event.originalEvent.wheelDelta;
var zoom = delta > 0 ? -0.2 : 0.2;
var newWidth = image.width() + (image.width() * zoom);
var newHeight = image.height() + (image.height() * zoom);
image.width(newWidth).height(newHeight);
}
$('div.image-container').on('mousewheel DOMMouseScroll', zoomImage);
});在這個(gè)代碼中,我們首先為每個(gè)包含圖片的`div`元素附加了一個(gè)滾輪事件監(jiān)聽器,當(dāng)用戶在這些元素上滾動(dòng)滾輪時(shí),會(huì)調(diào)用`zoomImage`函數(shù)進(jìn)行放大/縮小操作。
在`zoomImage`函數(shù)內(nèi)部,我們首先通過`$(this).find('img')`選擇器找到了當(dāng)前元素內(nèi)的`img`元素,接下來(lái)從滾輪事件中獲取了用戶的滾動(dòng)方向,然后計(jì)算出當(dāng)前圖片的放大/縮小后的寬度和高度,并將其重新賦值給了圖片元素。
值得注意的是,在這個(gè)代碼中我們同時(shí)監(jiān)聽了`mousewheel`和`DOMMouseScroll`這兩種不同瀏覽器的滾輪事件,以保證代碼能夠在不同的瀏覽器中正常運(yùn)行。
相關(guān)文章
jQuery簡(jiǎn)單實(shí)現(xiàn)QQ空間點(diǎn)贊已經(jīng)取消點(diǎn)贊
這篇文章主要介紹了jQuery簡(jiǎn)單實(shí)現(xiàn)QQ空間點(diǎn)贊已經(jīng)取消點(diǎn)贊的代碼,非常的好用,這里推薦給大家,有需要的小伙伴參考下。2015-04-04
手機(jī)移動(dòng)端實(shí)現(xiàn) jquery和HTML5 Canvas的幸運(yùn)大獎(jiǎng)盤特效
這篇文章主要介紹了手機(jī)移動(dòng)端實(shí)現(xiàn) jquery和HTML5 Canvas的幸運(yùn)大獎(jiǎng)盤特效的相關(guān)資料,這里附有實(shí)現(xiàn)代碼及實(shí)現(xiàn)效果圖,需要的朋友可以參考下2016-12-12
jquery實(shí)現(xiàn)翻動(dòng)fadeIn顯示的方法
這篇文章主要介紹了jquery實(shí)現(xiàn)翻動(dòng)fadeIn顯示的方法,實(shí)例分析了jQuery中fadeIn方法的使用技巧,需要的朋友可以參考下2015-03-03
刪除select中所有option選項(xiàng)jquery代碼
select中所有option選項(xiàng)如何刪除,本文使用jquery簡(jiǎn)單實(shí)現(xiàn)下,有此需求的朋友可以參考下,希望對(duì)大家有所幫助2013-08-08
jquery slibings選取同級(jí)其他元素的實(shí)現(xiàn)代碼
jquery選取同級(jí)其他元素可以使用slibings方法,end方法可以清除之前的鏈?zhǔn)讲僮鳎喈?dāng)于重新開始2013-11-11

