1/** 2 * by MonsterDuang 3 */ 4;(function($) { 5 /** 6 * 1, 缩ç¥å¾å¤§å°åç¶å®¹å¨å¤§å°ä¸è´ 7 * 2, ç¶å®¹å¨ href 屿§ä¸ºé«æ¸ å¾çè·¯å¾ 8 */ 9 $.fn.zoomImage = function(paras) { 10 /** 11 * é»è®¤åæ° 12 */ 13 var defaultParas = { 14 layerW: 100, // é®ç½©å®½åº¦ 15 layerH: 100, // é®ç½©é«åº¦ 16 layerOpacity: 0.2, // é®ç½©éæåº¦ 17 layerBgc: '#000', // é®ç½©èæ¯é¢è² 18 showPanelW: 500, // æ¾ç¤ºæ¾å¤§åºå宽 19 showPanelH: 500, // æ¾ç¤ºæ¾å¤§åºåé« 20 marginL: 5, // æ¾å¤§åºå离缩ç¥å¾å³ä¾§è·ç¦» 21 marginT: 0 // æ¾å¤§åºå离缩ç¥å¾ä¸ä¾§è·ç¦» 22 }; 23 24 paras = $.extend({}, defaultParas, paras); 25 26 $(this).each(function() { 27 var self = $(this).css({position: 'relative'}); 28 var selfOffset = self.offset(); 29 var imageW = self.width(); // å¾çé«åº¦ 30 var imageH = self.height(); 31 32 self.find('img').css({ 33 width: '100%', 34 height: '100%' 35 }); 36 37 // 宽æ¾å¤§åæ° 38 var wTimes = paras.showPanelW / paras.layerW; 39 // 髿¾å¤§åæ° 40 var hTimes = paras.showPanelH / paras.layerH; 41 42 // æ¾å¤§å¾ç 43 var img = $('<img>').attr('src', self.attr("href")).css({ 44 position: 'absolute', 45 left: '0', 46 top: '0', 47 width: imageW * wTimes, 48 height: imageH * hTimes 49 }).attr('id', 'big-img'); 50 51 // é®ç½©
52 var layer = $('<div>').css({ 53 display: 'none', 54 position: 'absolute', 55 left: '0', 56 top: '0', 57 backgroundColor: paras.layerBgc, 58 width: paras.layerW, 59 height: paras.layerH, 60 opacity: paras.layerOpacity, 61 border: '1px solid #ccc', 62 cursor: 'crosshair' 63 }); 64 65 // æ¾å¤§åºå 66 var showPanel = $('<div>').css({ 67 display: 'none', 68 position: 'absolute', 69 overflow: 'hidden', 70 left: imageW + paras.marginL, 71 top: paras.marginT, 72 width: paras.showPanelW, 73 height: paras.showPanelH 74 }).append(img); 75 76 self.append(layer).append(showPanel); 77 78 self.on('mousemove', function(e) { 79 // é¼ æ ç¸å¯¹äºç¼©ç¥å¾å®¹å¨çåæ 80 var x = e.pageX - selfOffset.left; 81 var y = e.pageY - selfOffset.top; 82 83 if(x <= paras.layerW / 2) { 84 x = 0; 85 }else if(x >= imageW - paras.layerW / 2) { 86 x = imageW - paras.layerW; 87 }else { 88 x = x - paras.layerW / 2; 89 } 90 91 if(y < paras.layerH / 2) { 92 y = 0; 93 } else if(y >= imageH - paras.layerH / 2) { 94 y = imageH - paras.layerH; 95 } else { 96 y = y - paras.layerH / 2; 97 } 98 99 layer.css({ 100 left: x, 101 top: y 102 }); 103 104 img.css({ 105 left: -x * wTimes, 106 top: -y * hTimes 107 }); 108 }).on('mouseenter', function() { 109 layer.show(); 110 showPanel.show(); 111 }).on('mouseleave', function() { 112 layer.hide(); 113 showPanel.hide(); 114 }); 115 }); 116 } 117})(jQuery);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.