jQuery实现滚动鼠标放大缩小图片的方法(附demo源码下载)


Posted in Javascript onMarch 05, 2016

本文实例讲述了jQuery实现滚动鼠标放大缩小图片的方法。分享给大家供大家参考,具体如下:

在项目制作过程中,遇到了这么一个需求,就开发了一个,记录一下。

首先,需要定义html元素和css样式:

<div style="position:relative;">
<asp:Image ID="myImg" runat="server" Width="670px" />
<span style="position:relative;display:none; background:wheat;border:1px solid gray;padding:3px;overflow:hidden;" id="NotificationMsg">滚动鼠标中键,可以放大或者缩小图片</span>
</div>

在这个样式中,我设置了图片的样式为670px,目的就是避免图片过大的时候,显示到了页面外部的现象。

然后我使用了一个jquery mousewheel 的插件来解决鼠标中键的滚动问题,下面是具体的jquery操作代码:

<script type="text/javascript">
$(document).ready(function() {
  var count = 0;
  $("#ctl00_ContentPlaceHolder1_myImg").hover(function(e) {
      var left = e.originalEvent.x || e.originalEvent.layerX || 0; //get the left position
      var top = e.originalEvent.y || e.originalEvent.layerY || 0;  //get the top position
      $("#NotificationMsg").css({ 'position': 'absolute', 'left': left, 'top': top });
      $("#NotificationMsg").css("display", "block");
  }, function() {
    //alert('mouserout');
    $("#NotificationMsg").css("display", "none");
  }).mousewheel(function(event, delta, deltaX, deltaY) {
    count++;
    var height = $(this).attr("height");  //get initial height 
    var width = $(this).attr("width");   // get initial width
    var stepex = height / width;  //get the percentange of height / width
    var minHeight = 150;  // min height
    var tempStep = 50;  // evey step for scroll down or up
    $(this).removeAttr('style');
    if (delta == 1) { //up
      $(this).attr("height", height + count * tempStep);
      $(this).attr("width", width + count * tempStep / stepex);
    }
    else if (delta == -1) { //down
      if (height > minHeight)
        $(this).attr("height", height - count * tempStep);
      else
        $(this).attr("height", tempStep);
      if (width > minHeight / stepex)
        $(this).attr("width", width - count * tempStep / stepex);
      else
        $(this).attr("width", tempStep / stepex);
    }
    event.preventDefault();
    count = 0;
  });
});
</script>

在这段代码中,利用了originalEvent函数来获取鼠标所处的位置,在IE9和firefox下面测试是可以使用的:

var left = e.originalEvent.x || e.originalEvent.layerX || 0; //get the left position
var top = e.originalEvent.y || e.originalEvent.layerY || 0;  //get the top position

然后在代码中,我进行了如下的操作来确定图片的初始高度和宽度以及图片显示的宽高比(目的是实现等比例缩放):

var height = $(this).attr("height");  //get initial height 
var width = $(this).attr("width");   // get initial width
var stepex = height / width;  //get the percentange of height / width
var minHeight = 150;  // min height
var tempStep = 50;  // every step for scrolling down or up
$(this).removeAttr('style');

其中,tempStep主要是为了实现滚动的时候,能够进行缩小和放大的比率值。做了这之后,我移除了image的width样式,主要是为了实现放大或者缩小。

if (delta == 1) { //up
  $(this).attr("height", height + count * tempStep);
  $(this).attr("width", width + count * tempStep / stepex);
}
else if (delta == -1) { //down
  if (height > minHeight)
    $(this).attr("height", height - count * tempStep);
  else
    $(this).attr("height", tempStep);
  if (width > minHeight / stepex)
    $(this).attr("width", width - count * tempStep / stepex);
  else
    $(this).attr("width", tempStep / stepex);
}
event.preventDefault();
count = 0;

上面这段就比较简单了,主要是进行上下滚动判断,然后等比例放大或者缩小图片。event.preventDefault()可以保证在滚动图片的过程中,页面不会随之滚动。

下面附上这个插件:

点击此处本站下载。

希望本文所述对大家jQuery程序设计有所帮助。

Javascript 相关文章推荐
XMLHttpRequest处理xml格式的返回数据(示例代码)
Nov 21 Javascript
Jquery实现Div上下移动示例
Apr 23 Javascript
IE下使用jQuery重置iframe地址时内存泄露问题解决办法
Feb 05 Javascript
Node.js实现数据推送
Apr 14 Javascript
AngularJS实用开发技巧(推荐)
Jul 13 Javascript
vue-cli构建项目使用 less的方法
Oct 04 Javascript
基于three.js编写的一个项目类示例代码
Jan 05 Javascript
解决select2在bootstrap modal中不能正常使用的问题
Aug 09 Javascript
Vue 组件封装 并使用 NPM 发布的教程
Sep 30 Javascript
vue.js iview打包上线后字体图标不显示解决办法
Jan 20 Javascript
JavaScript进阶(二)词法作用域与作用域链实例分析
May 09 Javascript
JS跨浏览器解析XML应用过程详解
Oct 16 Javascript
js控制TR的显示隐藏
Mar 04 #Javascript
Node.js操作Firebird数据库教程
Mar 04 #Javascript
实例剖析AngularJS框架中数据的双向绑定运用
Mar 04 #Javascript
node.js微信公众平台开发教程
Mar 04 #Javascript
详解JavaScript的AngularJS框架中的作用域与数据绑定
Mar 04 #Javascript
深入学习AngularJS中数据的双向绑定机制
Mar 04 #Javascript
简单的jQuery banner图片轮播实例代码
Mar 04 #Javascript
You might like
php入门学习知识点八 PHP中for循环基本应用之九九乘法口绝表
2011/07/14 PHP
PHP中echo和print的区别
2014/08/28 PHP
iOS+PHP注册登录系统 PHP部分(上)
2016/12/26 PHP
PHP实现百度人脸识别
2019/05/06 PHP
QQ邮箱的一个文本编辑器代码
2007/03/14 Javascript
JQuery 表单中textarea字数限制实现代码
2009/12/07 Javascript
JS+CSS 制作的超级简单的下拉菜单附图
2013/11/22 Javascript
在HTML代码中使用JavaScript代码的例子
2014/10/16 Javascript
jquery动态改变div宽度和高度
2015/02/09 Javascript
jQuery获取上传文件的名称的正则表达式
2015/05/21 Javascript
AngularJS入门教程之AngularJS模型
2016/04/18 Javascript
JS实现兼容各种浏览器的高级拖动方法完整实例【测试可用】
2016/06/21 Javascript
浅谈JavaScript对象与继承
2016/07/10 Javascript
js中的触发事件对象event.srcElement与event.target详解
2017/03/15 Javascript
javascript填充默认头像方法
2018/02/22 Javascript
浅谈Node.js 中间件模式
2018/06/12 Javascript
详解vue页面首次加载缓慢原因及解决方案
2019/11/06 Javascript
vue视频播放暂停代码
2019/11/08 Javascript
vue prop属性传值与传引用示例
2019/11/13 Javascript
[01:14:10]2014 DOTA2国际邀请赛中国区预选赛 SPD-GAMING VS Orenda
2014/05/22 DOTA
[02:36]DOTA2上海特锦赛 回忆电竞生涯的重要瞬间
2016/03/25 DOTA
发布你的Python模块详解
2016/09/15 Python
Python 中的range(),以及列表切片方法
2018/07/02 Python
用Python调用win命令行提高工作效率的实例
2019/08/14 Python
浅析python中while循环和for循环
2019/11/19 Python
opencv python Canny边缘提取实现过程解析
2020/02/03 Python
在Ubuntu 20.04中安装Pycharm 2020.1的图文教程
2020/04/30 Python
Python基于pyjnius库实现访问java类
2020/07/31 Python
Perricone MD裴礼康美国官网:抗衰老护肤品
2016/09/26 全球购物
澳大利亚领先的武术用品和健身器材供应商:SMAI
2019/03/24 全球购物
俄罗斯建筑和装饰材料在线商店:Stroilandia
2020/07/25 全球购物
新郎新娘答谢词
2015/01/04 职场文书
导游词之太湖
2019/10/08 职场文书
python对文档中元素删除,替换操作
2022/04/02 Python
SQL Server中使用表变量和临时表
2022/05/20 SQL Server
Spring Boot实现文件上传下载
2022/08/14 Java/Android