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 相关文章推荐
显示、隐藏密码
Jul 01 Javascript
深入领悟JavaScript中的面向对象
Nov 18 Javascript
用jquery.sortElements实现table排序
May 04 Javascript
jquery实现倒计时代码分享
Jun 13 Javascript
jquery根据属性和index来查找属性值并操作
Jul 25 Javascript
JavaScript编程中实现对象封装特性的实例讲解
Jun 24 Javascript
深入理解AngularJS中的ng-bind-html指令和$sce服务
Sep 08 Javascript
JS多物体实现缓冲运动效果示例
Dec 20 Javascript
jQuery实现倒计时重新发送短信验证码功能示例
Jan 12 Javascript
jQuery实现的省市联动菜单功能示例【测试可用】
Jan 13 Javascript
Vue.js中provide/inject实现响应式数据更新的方法示例
Oct 16 Javascript
javascript开发实现贪吃蛇游戏
Jul 31 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数据库类
2009/05/27 PHP
PHP的构造方法,析构方法和this关键字详细介绍
2013/10/22 PHP
php jquery 多文件上传简单实例
2013/12/23 PHP
PHP调用MySQL存储过程并返回值的方法
2014/12/26 PHP
php操作MongoDB类实例
2015/06/17 PHP
php获取客户端IP及URL的方法示例
2017/02/03 PHP
javascript编程起步(第一课)
2007/01/10 Javascript
javascript 在网页中的运用(asp.net)
2009/11/23 Javascript
js中各浏览器中鼠标按键值的差异
2011/04/07 Javascript
JQuery实现倒计时按钮具体方法
2013/11/14 Javascript
javascript 应用小技巧方法汇总
2015/07/05 Javascript
使用jQuery制作浮动工具栏的实例分享
2016/05/13 Javascript
js实现获取两个日期之间所有日期的方法
2016/06/17 Javascript
JS实现密码框的显示密码和隐藏密码功能示例
2016/12/26 Javascript
BootStrap便签页的简单应用
2017/01/06 Javascript
AngularJs 最新验证手机号码的实例,成功测试通过
2017/11/26 Javascript
ElementUI中el-tree节点的操作的实现
2020/02/27 Javascript
vue与iframe之间的信息交互的实现
2020/04/08 Javascript
js实现3D旋转效果
2020/08/18 Javascript
JavaScript实现图片放大预览效果
2020/11/02 Javascript
[36:33]完美世界DOTA2联赛PWL S2 LBZS vs Forest 第二场 11.29
2020/12/02 DOTA
python base64 decode incorrect padding错误解决方法
2015/01/08 Python
Python3中在Anaconda环境下安装basemap包
2018/10/21 Python
200行python代码实现2048游戏
2019/07/17 Python
HTML5 Canvas自定义圆角矩形与虚线示例代码
2013/08/02 HTML / CSS
H5页面适配iPhoneX(就是那么简单)
2019/12/02 HTML / CSS
Black Halo官方网站:购买连衣裙、礼服和连体裤
2018/06/13 全球购物
师范生教师实习自我鉴定
2013/09/27 职场文书
行政总监岗位职责
2013/12/05 职场文书
财务人员求职自荐书范文
2014/02/10 职场文书
民主生活会对照检查材料思想汇报
2014/09/27 职场文书
校长师德表现自我评价
2015/03/04 职场文书
2016党员干部政治学习心得体会
2016/01/23 职场文书
JS创建或填充任意长度数组的小技巧汇总
2021/10/24 Javascript
Java实现扫雷游戏详细代码讲解
2022/05/25 Java/Android