完全兼容的 鼠标滚轴缩放图片

以前看到的都是用IE的zoom,所以非IE就不支持,昨天看到这个js中鼠标滚轮事件详解 ,于是完全兼容(IE6-8,FF,Chrome,Opera,Safari)的鼠标滚轴缩放图片效果今天就诞生了

 

默认最小缩放为原图片的50%

新窗口查看效果 

 

code如下: 

 

复制代码
/*!
 *Author:sohighthesky
 *blog:http://www.cnblogs.com/sohighthesky
 *date:2010-2-4
 
*/
var zooming=function(e){
    e
=window.event ||e;
    
var o=this,data=e.wheelDelta || -e.detail*40,zoom,size;
    
if(!+'\v1'){//IE
        zoom = parseInt(o.style.zoom) || 100
        zoom 
+= data / 12;
        
if(zoom > zooming.min) 
            o.style.zoom 
= zoom + '%';
        e.returnValue
=false;
    }
else {
        size
=o.getAttribute("_zoomsize").split(",");
        zoom
=parseInt(o.getAttribute("_zoom")) ||100;
        zoom
+=data/12;
        if(zoom>zooming.min){
            o.setAttribute(
"_zoom",zoom);
            o.style.width
=size[0]*zoom/100+"px";
            o.style.height=size[1]*zoom/100+"px"
        }
        e.preventDefault();//阻止默认行为
        e.stopPropagation();//for Firefox3.6
    }
};
zooming.add
=function(obj,min){//第一个参数指定可以缩放的图片,min指定最小缩放的大小 ,default to 50
    zooming.min=min || 50;
    obj.onmousewheel
=zooming;
    
if(/Firefox/.test(navigator.userAgent))//if Firefox
        obj.addEventListener("DOMMouseScroll",zooming,false);
    
if(-[1,]){//if not IE
        obj.setAttribute("_zoomsize",obj.offsetWidth+","+obj.offsetHeight);
    }
};

window.onload
=function(){//放在onload中,否则非ie中会无法计算图片大小出错
    zooming.add(document.getElementById("testimg1"));
}
复制代码

 

 

 

posted @   sohighthesky  阅读(4927)  评论(23编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
点击右上角即可分享
微信分享提示