zoom.js 3.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. // JavaScript Document
  2. (function ($) {
  3. $.fn.zoom = function (options) {
  4. var opts = $.extend({}, $.fn.defaults, options);
  5. return this.each(function () {
  6. var $this = $(this);
  7. $this.css({ position: "relative" });
  8. var $zoomImg = $this.children("img");
  9. $this.append("<div class=\"zoomLens\" >&nbsp;</div>");
  10. $("body").append("<div class=\"zoomBox\"><div class=\"zoomBody\"><img class=\"\" src=\"\"/></div></div>");
  11. //璁剧疆鏀惧ぇ闀滅墖
  12. var zoomLens = $(".zoomLens", $this);
  13. var imgLeft = $this.offset().left;
  14. var imgTop = $this.offset().top;
  15. var imgWidth = $this.innerWidth();
  16. var imgHeight = $this.innerHeight();
  17. var paddTop = parseInt($this.css("paddingTop"));
  18. var paddLeft = parseInt($this.css("paddingLeft"));
  19. //var mrgLeft=parseInt($zoomImg.css("marginLeft"));
  20. zoomLens.width(opts.xzoom);
  21. zoomLens.height(opts.yzoom);
  22. //璁剧疆鏀惧ぇ
  23. var zoomBox = $(".zoomBox");
  24. zoomBox.width(opts.xzoom * opts.scale);
  25. zoomBox.height(opts.yzoom * opts.scale);
  26. zoomBox.css({ left: imgLeft + imgWidth + opts.offset, top: imgTop });
  27. var zoomBody = $(".zoomBody", zoomBox);
  28. zoomBody.width($this.width() * opts.scale);
  29. zoomBody.height($this.height() * opts.scale);
  30. zoomBody.css({ "paddingTop": paddTop * opts.scale, paddingLeft: paddLeft * opts.scale });
  31. $this.hover(function () {
  32. zoomLens.show();
  33. zoomBox.fadeIn("show");
  34. var zoomImg = zoomBody.children("img");
  35. var mrgTop = parseInt($zoomImg.css("marginTop"));
  36. zoomImg.css({ marginTop: mrgTop * opts.scale });
  37. zoomImg.width($zoomImg.width() * opts.scale);
  38. zoomImg.height($zoomImg.height() * opts.scale);
  39. zoomImg.attr("src", $zoomImg.attr("src"));
  40. }, function () {
  41. zoomLens.hide();
  42. zoomBox.fadeOut(300);
  43. });
  44. $this.mousemove(function (e) {
  45. var xpos = e.pageX - imgLeft - opts.xzoom / 2 > 0 ? (e.pageX - imgLeft - opts.xzoom / 2) : 0;
  46. xpos = xpos > imgWidth - opts.xzoom ? imgWidth - opts.xzoom - 2 : xpos;
  47. var ypos = e.pageY - imgTop - opts.yzoom / 2 > 0 ? (e.pageY - imgTop - opts.yzoom / 2) : 0;
  48. ypos = ypos > imgHeight - opts.yzoom ? imgHeight - opts.yzoom - 2 : ypos;
  49. zoomLens.css({ left: xpos, top: ypos })
  50. zoomBody.css({ left: -xpos * opts.scale, top: -ypos * opts.scale })
  51. });
  52. $(window).resize(function(){
  53. imgLeft = $this.offset().left;
  54. imgTop = $this.offset().top;
  55. zoomBox.css({ left: imgLeft + imgWidth + opts.offset, top: imgTop });
  56. });
  57. });
  58. }
  59. $.fn.defaults = {
  60. xzoom: 100,//鏀惧ぇ闀滃搴�
  61. yzoom: 100,//鏀惧ぇ闀滈珮搴�
  62. offset: 10,//鏀惧ぇ鍥剧墖闂磋窛
  63. position: "right",
  64. lens: 1,
  65. preload: 1,
  66. scale: 3
  67. }
  68. })(jQuery);