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 相关文章推荐
JavaScript Event学习第十章 一些可替换的事件对
Feb 10 Javascript
jquery 实现密码框的显示与隐藏示例代码
Sep 18 Javascript
详解JavaScript基于面向对象之创建对象(2)
Dec 10 Javascript
JS中检测数据类型的几种方式及优缺点小结
Dec 12 Javascript
前端面试知识点锦集(JavaScript篇)
Dec 28 Javascript
基于jQuery实现照片墙自动播放特效
Jan 12 Javascript
如何编写一个完整的Angular4 FormText 组件
Nov 18 Javascript
浅谈React的最大亮点之虚拟DOM
May 29 Javascript
vue根据进入的路由进行原路返回的方法
Sep 26 Javascript
Vue使用JSEncrypt实现rsa加密及挂载方法
Feb 07 Javascript
浅析vue cli3 封装Svgicon组件正确姿势(推荐)
Apr 27 Javascript
详细分析Node.js 多进程
Jun 22 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读注册表
2006/10/09 PHP
PHP和Mysqlweb应用开发核心技术-第1部分 Php基础-2 php语言介绍
2011/07/03 PHP
php单态设计模式(单例模式)实例
2014/11/18 PHP
thinkPHP自动验证机制详解
2016/12/05 PHP
thinkPHP5使用Rabc实现权限管理
2019/08/28 PHP
在第一个input框内输入内容.textarea自动得到第一个文件框的值的javascript代码
2007/04/20 Javascript
javascript脚本编程解决考试分数统计问题
2008/10/18 Javascript
用JS控制回车事件的代码
2011/02/20 Javascript
js判断变量是否未定义的代码
2020/03/28 Javascript
jquery动态增加text元素以及删除文本内容实例代码
2013/07/01 Javascript
js展开闭合效果演示代码
2013/07/24 Javascript
使用jQuery Rotare实现微信大转盘抽奖功能
2016/06/20 Javascript
javascript运算符——逻辑运算符全面解析
2016/06/27 Javascript
概述一个页面从输入URL到页面加载完的过程
2016/12/16 Javascript
如何学JavaScript?前辈的经验之谈
2016/12/28 Javascript
深入理解Commonjs规范及Node模块实现
2017/05/17 Javascript
JS模拟实现哈希表及应用详解
2018/05/04 Javascript
webpack中的模式(mode)使用详解
2020/02/20 Javascript
v-slot和slot、slot-scope之间相互替换实例
2020/09/04 Javascript
[40:29]2018DOTA2亚洲邀请赛 4.7总决赛 LGD vs Mineski 第一场
2018/04/10 DOTA
Python实现将目录中TXT合并成一个大TXT文件的方法
2015/07/15 Python
Python中类的初始化特殊方法
2017/12/01 Python
Python实现常见的回文字符串算法
2018/11/14 Python
Python实现定期检查源目录与备份目录的差异并进行备份功能示例
2019/02/27 Python
python通过TimedRotatingFileHandler按时间切割日志
2019/07/17 Python
Python Process多进程实现过程
2019/10/22 Python
详解python中各种文件打开模式
2020/01/19 Python
Python如何基于Tesseract实现识别文字功能
2020/06/05 Python
为世界各地的女性设计和生产时尚服装:ROMWE
2016/09/17 全球购物
UNIX操作系统结构由哪几部分组成
2016/02/17 面试题
汽车检测与维修个人求职信
2013/09/24 职场文书
夜不归宿检讨书
2014/02/25 职场文书
团结演讲稿范文
2014/05/23 职场文书
机械电子工程专业自荐书
2014/06/10 职场文书
企业贷款委托书格式
2014/09/12 职场文书
诚实守信主题班会
2015/08/13 职场文书