jquery.album.js 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. (function($) {
  2. var defaults = {
  3. prefix: 'album'
  4. };
  5. var pre = '';
  6. $.fn.album = function(options) {
  7. options = $.extend({}, defaults, options);
  8. pre = options.prefix;
  9. // 底部预览图移动
  10. (function() {
  11. var i = 0;
  12. var count = $('.' + pre + '-list li').length - 4;
  13. var width = $('.' + pre + '-list li:first').width();
  14. var left = true;
  15. var right = false;
  16. $('.' + pre + '-btn-left').click(function() {
  17. if (left) {
  18. return false;
  19. }
  20. --i;
  21. move();
  22. });
  23. $('.' + pre + '-btn-right').click(function() {
  24. if (right) {
  25. return false;
  26. }
  27. ++i;
  28. move();
  29. });
  30. function move() {
  31. left = i === 0;
  32. right = i === count - 1;
  33. $('.' + pre + '-list ul').stop(false, true).animate({marginLeft: -i * width + 'px'}, 600);
  34. }
  35. })();
  36. // 滑过小图查看大图
  37. (function () {
  38. var mid = $('.' + pre + '-mid');
  39. var mask = $('.' + pre + '-mask');
  40. var big = $('.' + pre + '-big');
  41. var img = $('.' + pre + '-big-img');
  42. // 鼠标经过盒子 显示遮罩和大图
  43. mid.mouseover(function() {
  44. mask.show();
  45. big.show();
  46. });
  47. // 鼠标离开盒子 隐藏遮罩和大图
  48. mid.mouseout(function() {
  49. //隐藏遮罩和大图
  50. mask.hide();
  51. big.hide();
  52. });
  53. // 鼠标在盒子上移动的时候
  54. // 让遮罩跟着鼠标移动
  55. mid.mousemove(function(event) {
  56. //鼠标在页面中的坐标
  57. var pageX = event.pageX;
  58. var pageY = event.pageY;
  59. // 计算鼠标的位置 距 盒子 的距离
  60. var boxX = pageX - mid.offset().left;
  61. var boxY = pageY - mid.offset().top;
  62. // 计算遮罩的位置
  63. var maskX = boxX - mask.outerWidth() / 2;
  64. var maskY = boxY - mask.outerHeight() / 2;
  65. // 限定遮罩可移动范围
  66. if (maskX < 0) {
  67. maskX = 0;
  68. }
  69. if (maskX > mid.outerWidth() - mask.outerWidth()) {
  70. maskX = mid.outerWidth() - mask.outerWidth();
  71. }
  72. if (maskY < 0) {
  73. maskY = 0;
  74. }
  75. if (maskY > mid.outerHeight() - mask.outerHeight()) {
  76. maskY = mid.outerHeight() - mask.outerHeight();
  77. }
  78. // 修改遮罩的显示位置
  79. mask.css({left: maskX, top: maskY});
  80. // 按照比例移动大图 大图片能够移动的总距离 = 大图的宽度 - 大盒子的宽度
  81. var bigImgToMove = img.outerWidth() - big.outerWidth();
  82. // 遮罩能够移动的总距离 = 小盒子的宽度 - 遮罩的宽度
  83. var maskToMove = mid.outerWidth() - mask.outerWidth();
  84. // 计算移动比例rate = 大图片能够移动的总距离/遮罩能够移动的总距离
  85. var rate = bigImgToMove / maskToMove;
  86. // 设置大图片当前的位置 = rate * 遮罩当前的位置
  87. img.css({left: -rate * maskX, top: -rate * maskY});
  88. });
  89. })();
  90. // 单击小图切换大图
  91. (function() {
  92. $('.' + pre + '-list li').click(function() {
  93. var src = $(this).find('img').attr('src');
  94. $('.' + pre + '-mid-img').attr('src', src.replace('small', 'mid'));
  95. $('.' + pre + '-big-img').attr('src', src.replace('small', 'big'));
  96. $(this).addClass(pre + '-curr').siblings().removeClass(pre + '-curr');
  97. });
  98. $('.' + pre + '-list li:first').click();
  99. })();
  100. };
  101. $.fn.album.defaults = defaults;
  102. })(jQuery);