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 相关文章推荐
js判断IE浏览器版本过低示例代码
Nov 22 Javascript
javascript内置对象arguments详解
Mar 16 Javascript
jquery实现个人中心导航菜单效果和美观都非常不错
Sep 02 Javascript
详解JavaScript的Date对象(制作简易钟表)
Apr 07 Javascript
EditPlus中的正则表达式 实战(2)
Dec 15 Javascript
关于前后端json数据的发送与接收详解
Jul 30 Javascript
浅谈jquery fullpage 插件增加头部和版权的方法
Mar 20 jQuery
React通过redux-persist持久化数据存储的方法示例
Feb 14 Javascript
基于Vue实现平滑过渡的拖拽排序功能
Jun 12 Javascript
微信小程序在text文本实现多种字体样式
Nov 08 Javascript
js实现计时器秒表功能
Dec 16 Javascript
javascript实现滚动条效果
Mar 24 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 配置open_basedir 让各虚拟站点独立运行
2009/11/12 PHP
php简单实现屏蔽指定ip段用户的访问
2015/04/29 PHP
超详细的php用户注册页面填写信息完整实例(附源码)
2015/11/17 PHP
yii2高级应用之自定义组件实现全局使用图片上传功能的方法
2016/10/08 PHP
JS动态添加与删除select中的Option对象(示例代码)
2013/12/25 Javascript
JavaScript异步编程Promise模式的6个特性
2014/04/03 Javascript
javascript学习笔记(七)Ajax和Http状态码
2014/10/08 Javascript
jquery队列函数用法实例
2014/12/16 Javascript
用JavaScript实现页面重定向功能的教程
2015/06/04 Javascript
浅谈Javascript中的Label语句
2016/12/14 Javascript
jQuery滚动插件scrollable.js用法分析
2017/05/25 jQuery
JavaScript判断变量名是否存在数组中的实例
2017/12/28 Javascript
vue实现商品加减计算总价的实例代码
2018/08/12 Javascript
es6 filter() 数组过滤方法总结
2019/04/03 Javascript
详解Vue依赖收集引发的问题
2019/04/22 Javascript
微信小程序vant弹窗组件的实现方式
2020/02/21 Javascript
深入了解JavaScript词法作用域
2020/07/29 Javascript
详解JavaScript中的链式调用
2020/11/27 Javascript
Python open()文件处理使用介绍
2014/11/30 Python
python安装模块如何通过setup.py安装(超简单)
2018/05/05 Python
pycharm重置设置,恢复默认设置的方法
2018/10/22 Python
Window环境下Scrapy开发环境搭建
2018/11/18 Python
python 自定义对象的打印方法
2019/01/12 Python
python 判断字符串中是否含有汉字或非汉字的实例
2019/07/15 Python
django有外键关系的两张表如何相互查找
2020/02/10 Python
python3安装OCR识别库tesserocr过程图解
2020/04/02 Python
英国文具、办公用品和科技商店:Ryman
2018/09/27 全球购物
什么是ARP(Address Resolution Protocol)地址解析协议
2013/10/31 面试题
面临毕业的毕业生自荐书范文
2014/02/05 职场文书
2014旅游局领导班子四风问题对照检查材料思想汇报
2014/09/19 职场文书
试用期自我评价范文
2015/03/10 职场文书
2015年会计人员工作总结
2015/05/22 职场文书
中学生国庆节演讲稿2015
2015/07/30 职场文书
教师信息技术学习心得体会
2016/01/21 职场文书
win11怎么用快捷键锁屏? windows11锁屏的几种方法
2021/11/21 数码科技
Zabbix6通过ODBC方式监控Oracle 19C的详细过程
2022/09/23 Servers