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 相关文章推荐
用于table内容排序
Jul 21 Javascript
jQuery 判断元素上是否绑定了事件
Oct 28 Javascript
eval的两组性能测试数据
Aug 17 Javascript
js 连接数据库如何操作数据库中的数据
Nov 23 Javascript
js实现幻灯片效果(基于jquery插件)
Nov 05 Javascript
关闭浏览器时提示onbeforeunload事件
Dec 25 Javascript
Lab.js初次使用笔记
Feb 28 Javascript
JavaScript学习笔记整理之引用类型
Jan 22 Javascript
javascript和jQuery实现网页实时聊天的ajax长轮询
Jul 20 Javascript
element vue Array数组和Map对象的添加与删除操作
Nov 14 Javascript
jquery+php后台实现省市区联动功能示例
May 23 jQuery
怎么使用javascript深度拷贝一个数组
Jun 06 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 数据结构 算法描述 冒泡排序 bubble sort
2011/07/10 PHP
php设计模式之单例、多例设计模式的应用分析
2013/06/30 PHP
php将图片文件转换成二进制输出的方法
2015/06/10 PHP
Symfony2实现从数据库获取数据的方法小结
2016/03/18 PHP
PHP 常用时间函数资料整理
2016/10/22 PHP
IE8对JS通过属性和数组遍历解析不一样的地方探讨
2013/05/06 Javascript
Jquery 改变radio/checkbox选中状态,获取选中的值(示例代码)
2013/12/12 Javascript
laytpl 精致巧妙的JavaScript模板引擎
2014/08/29 Javascript
javascript中checkbox使用方法简单实例演示
2015/11/17 Javascript
javascript数据结构之双链表插入排序实例详解
2015/11/25 Javascript
JavaScript实现下拉菜单的显示和隐藏
2016/01/05 Javascript
jQuery 中的 DOM 操作
2016/04/26 Javascript
javascript 数组的定义和数组的长度
2016/06/07 Javascript
BootStrap学习系列之布局组件(下拉,按钮组[toolbar],上拉)
2017/01/03 Javascript
gulp加批处理(.bat)实现ng多应用一键自动化构建
2017/02/16 Javascript
jQuery实现获取当前鼠标位置并输出功能示例
2019/01/05 jQuery
简单了解微信小程序的目录结构
2019/07/01 Javascript
原生js实现购物车功能
2020/09/23 Javascript
原生js实现自定义消息提示框
2020/11/19 Javascript
Python文件去除注释的方法
2015/05/25 Python
Python设计模式之原型模式实例详解
2019/01/18 Python
python程序变成软件的实操方法
2019/06/24 Python
python高级特性简介
2020/08/13 Python
巧用CSS3 border实现图片遮罩效果代码
2012/04/09 HTML / CSS
联想阿根廷官方网站:Lenovo Argentina
2019/10/14 全球购物
JD Sports澳洲官网:英国领先的运动鞋和运动时尚零售商
2020/02/15 全球购物
C# .NET面试题
2015/11/28 面试题
中科创达面试题
2016/12/28 面试题
财务部出纳岗位职责
2013/12/22 职场文书
24岁生日感言
2014/01/13 职场文书
社区科普工作方案
2014/06/03 职场文书
物业管理专业求职信
2014/06/11 职场文书
多媒体编辑专业毕业生求职信
2014/06/13 职场文书
知识就是力量演讲稿
2014/09/13 职场文书
公路局群众路线教育实践活动第一阶段工作汇报
2014/10/25 职场文书
硕士毕业答辩开场白
2015/05/27 职场文书