亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

圖片旋轉、鼠標滾輪縮放、鏡像、切換圖片js代碼

2019-11-20 10:46:46
字體:
來源:轉載
供稿:網友

本文實例為大家展示了圖片旋轉、鼠標滾輪縮放、鏡像、切換圖片多重效果,提供了詳細的代碼,分享給大家供大家參考,具體內容如下

具體代碼:

<!DOCTYPE html><html lang="zh-cn"> <head> <title>圖片旋轉,鼠標滾輪縮放,鏡像,切換圖片</title> <meta charset="utf-8" /> <!--<script type="text/javascript" src="js/jquery-1.11.1.min.js"></script>--> <script type="text/javascript" src="js/abc.js"></script> </head> <body> <h1 style="text-align: center;color: blue;">效果預覽</h1> <script>  //容器對象  var ImageTrans = function(container, options) {  this._initialize(container, options);  this._initMode();  if (this._support) {   this._initContainer();   this._init();  } else { //模式不支持   this.onError("not support");  }  };  ImageTrans.prototype = {  //初始化程序  _initialize: function(container, options) {   var container = this._container = $$(container); this._clientWidth = container.clientWidth; //變換區域寬度 this._clientHeight = container.clientHeight; //變換區域高度 this._img = new Image(); //圖片對象 this._style = {}; //備份樣式 this._x = this._y = 1; //水平/垂直變換參數 this._radian = 0; //旋轉變換參數 this._support = false; //是否支持變換 this._init = this._load = this._show = this._dispose = $$.emptyFunction;   var opt = this._setOptions(options);   this._zoom = opt.zoom;   this.onPreLoad = opt.onPreLoad;   this.onLoad = opt.onLoad;   this.onError = opt.onError;   this._LOAD = $$F.bind(function() { this.onLoad(); this._load(); this.reset(); this._img.style.visibility = "visible"; }, this); $$CE.fireEvent(this, "init");  },  //設置默認屬性  _setOptions: function(options) {   this.options = { //默認值   mode: "css3|filter|canvas",   zoom: .1, //縮放比率   onPreLoad: function() {}, //圖片加載前執行   onLoad: function() {}, //圖片加載后執行   onError: function(err) {} //出錯時執行   };   return $$.extend(this.options, options || {}); }, //模式設置 _initMode: function() { var modes = ImageTrans.modes; this._support = $$A.some(this.options.mode.toLowerCase().split("|"), function(mode) { mode = modes[mode]; if (mode && mode.support) { mode.init && (this._init = mode.init); //初始化執行程序 mode.load && (this._load = mode.load); //加載圖片執行程序 mode.show && (this._show = mode.show); //變換顯示程序 mode.dispose && (this._dispose = mode.dispose); //銷毀程序 //擴展變換方法 $$A.forEach(ImageTrans.transforms, function(transform, name) { this[name] = function() {  transform.apply(this, [].slice.call(arguments));  this._show(); } }, this); return true; } }, this); }, //初始化容器對象 _initContainer: function() { var container = this._container, style = container.style, position = $$D.getStyle(container, "position"); this._style = { "position": style.position, "overflow": style.overflow }; //備份樣式 if (position != "relative" && position != "absolute") { style.position = "relative"; } style.overflow = "hidden"; $$CE.fireEvent(this, "initContainer"); }, //加載圖片 load: function(src) { if (this._support) { var img = this._img, oThis = this; img.onload || (img.onload = this._LOAD); img.onerror || (img.onerror = function() { oThis.onError("err image"); }); img.style.visibility = "hidden"; this.onPreLoad(); img.src = src; } }, //重置 reset: function() { if (this._support) { this._x = this._y = 1; this._radian = 0; this._show(); } }, //銷毀程序 dispose: function() { if (this._support) { this._dispose(); $$CE.fireEvent(this, "dispose"); $$D.setStyle(this._container, this._style); //恢復樣式 this._container = this._img = this._img.onload = this._img.onerror = this._LOAD = null; } } }; //變換模式 ImageTrans.modes = function() { var css3Transform; //ccs3變換樣式 //初始化圖片對象函數 function initImg(img, container) { $$D.setStyle(img, { position: "absolute", border: 0, padding: 0, margin: 0, width: "auto", height: "auto", //重置樣式 visibility: "hidden" //加載前隱藏 }); container.appendChild(img); } //獲取變換參數函數 function getMatrix(radian, x, y) { var Cos = Math.cos(radian), Sin = Math.sin(radian); return { M11: Cos * x, M12: -Sin * y, M21: Sin * x, M22: Cos * y }; } return { css3: { //css3設置 support: function() { var style = document.createElement("div").style; return $$A.some( ["transform", "MozTransform", "webkitTransform", "OTransform"], function(css) {  if (css in style) {  css3Transform = css;  return true;  } }); }(), init: function() { initImg(this._img, this._container); }, load: function() { var img = this._img; $$D.setStyle(img, { //居中 top: (this._clientHeight - img.height) / 2 + "px", left: (this._clientWidth - img.width) / 2 + "px", visibility: "visible" }); }, show: function() { var matrix = getMatrix(this._radian, this._y, this._x); //設置變形樣式 this._img.style[css3Transform] = "matrix(" + matrix.M11.toFixed(16) + "," + matrix.M21.toFixed(16) + "," + matrix.M12.toFixed(16) + "," + matrix.M22.toFixed(16) + ", 0, 0)"; }, dispose: function() { this._container.removeChild(this._img); } }, filter: { //濾鏡設置 support: function() { return "filters" in document.createElement("div"); }(), init: function() { initImg(this._img, this._container); //設置濾鏡 this._img.style.filter = "progid:DXImageTransform.Microsoft.Matrix(SizingMethod='auto expand')"; }, load: function() { this._img.onload = null; //防止ie重復加載gif的bug this._img.style.visibility = "visible"; }, show: function() { var img = this._img; //設置濾鏡 $$.extend( img.filters.item("DXImageTransform.Microsoft.Matrix"), getMatrix(this._radian, this._y, this._x) ); //保持居中 img.style.top = (this._clientHeight - img.offsetHeight) / 2 + "px"; img.style.left = (this._clientWidth - img.offsetWidth) / 2 + "px"; }, dispose: function() { this._container.removeChild(this._img); } }, canvas: { //canvas設置 support: function() { return "getContext" in document.createElement('canvas'); }(), init: function() { var canvas = this._canvas = document.createElement('canvas'), context = this._context = canvas.getContext('2d'); //樣式設置 $$D.setStyle(canvas, { position: "absolute", left: 0, top: 0 }); canvas.width = this._clientWidth; canvas.height = this._clientHeight; this._container.appendChild(canvas); }, show: function() { var img = this._img, context = this._context, clientWidth = this._clientWidth, clientHeight = this._clientHeight; //canvas變換 context.save(); context.clearRect(0, 0, clientWidth, clientHeight); //清空內容 context.translate(clientWidth / 2, clientHeight / 2); //中心坐標 context.rotate(this._radian); //旋轉 context.scale(this._y, this._x); //縮放 context.drawImage(img, -img.width / 2, -img.height / 2); //居中畫圖 context.restore(); }, dispose: function() { this._container.removeChild(this._canvas); this._canvas = this._context = null; } } }; }(); //變換方法 ImageTrans.transforms = { //垂直翻轉 vertical: function() { this._radian = Math.PI - this._radian; this._y *= -1; }, //水平翻轉 horizontal: function() { this._radian = Math.PI - this._radian; this._x *= -1; }, //根據弧度旋轉 rotate: function(radian) { this._radian = radian; }, //向左轉90度 left: function() { this._radian -= Math.PI / 2; }, //向右轉90度 right: function() { this._radian += Math.PI / 2; }, //根據角度旋轉 rotatebydegress: function(degress) { this._radian = degress * Math.PI / 180; }, //縮放 scale: function() { function getZoom(scale, zoom) { return scale > 0 && scale > -zoom ? zoom : scale < 0 && scale < zoom ? -zoom : 0; } return function(zoom) { if (zoom) { var hZoom = getZoom(this._y, zoom), vZoom = getZoom(this._x, zoom); if (hZoom && vZoom) { this._y += hZoom; this._x += vZoom; } } } }(), //放大 zoomin: function() { this.scale(Math.abs(this._zoom)); }, //縮小 zoomout: function() { this.scale(-Math.abs(this._zoom)); } }; //拖動旋轉 ImageTrans.prototype._initialize = (function() { var init = ImageTrans.prototype._initialize, methods = { "init": function() { this._mrX = this._mrY = this._mrRadian = 0; this._mrSTART = $$F.bind(start, this); this._mrMOVE = $$F.bind(move, this); this._mrSTOP = $$F.bind(stop, this); }, "initContainer": function() { $$E.addEvent(this._container, "mousedown", this._mrSTART); }, "dispose": function() { $$E.removeEvent(this._container, "mousedown", this._mrSTART); this._mrSTOP(); this._mrSTART = this._mrMOVE = this._mrSTOP = null; } }; //開始函數 function start(e) { var rect = $$D.clientRect(this._container); this._mrX = rect.left + this._clientWidth / 2; this._mrY = rect.top + this._clientHeight / 2; this._mrRadian = Math.atan2(e.clientY - this._mrY, e.clientX - this._mrX) - this._radian; $$E.addEvent(document, "mousemove", this._mrMOVE); $$E.addEvent(document, "mouseup", this._mrSTOP); if ($$B.ie) { var container = this._container; $$E.addEvent(container, "losecapture", this._mrSTOP); container.setCapture(); } else { $$E.addEvent(window, "blur", this._mrSTOP); e.preventDefault(); } }; //拖動函數 function move(e) { this.rotate(Math.atan2(e.clientY - this._mrY, e.clientX - this._mrX) - this._mrRadian); window.getSelection ? window.getSelection().removeAllRanges() : document.selection.empty(); }; //停止函數 function stop() { $$E.removeEvent(document, "mousemove", this._mrMOVE); $$E.removeEvent(document, "mouseup", this._mrSTOP); if ($$B.ie) { var container = this._container; $$E.removeEvent(container, "losecapture", this._mrSTOP); container.releaseCapture(); } else { $$E.removeEvent(window, "blur", this._mrSTOP); }; }; return function() { var options = arguments[1]; if (!options || options.mouseRotate !== false) { //擴展鉤子 $$A.forEach(methods, function(method, name) { $$CE.addEvent(this, name, method); }, this); } init.apply(this, arguments); } })(); //滾輪縮放 ImageTrans.prototype._initialize = (function() { var init = ImageTrans.prototype._initialize, mousewheel = $$B.firefox ? "DOMMouseScroll" : "mousewheel", methods = { "init": function() { this._mzZoom = $$F.bind(zoom, this); }, "initContainer": function() { $$E.addEvent(this._container, mousewheel, this._mzZoom); }, "dispose": function() { $$E.removeEvent(this._container, mousewheel, this._mzZoom); this._mzZoom = null; } }; //縮放函數 function zoom(e) { this.scale(( e.wheelDelta ? e.wheelDelta / (-120) : (e.detail || 0) / 3 ) * Math.abs(this._zoom)); e.preventDefault(); }; return function() { var options = arguments[1]; if (!options || options.mouseZoom !== false) { //擴展鉤子 $$A.forEach(methods, function(method, name) { $$CE.addEvent(this, name, method);   }, this);   }   init.apply(this, arguments);  }  })(); </script> <style>  #idContainer {  border: 1px solid red;  width: 1000px;  height: 500px;  background: black center no-repeat;  margin: 0 auto;  }  input {  margin: 10px;  padding: 10px;  border: 1px solid red;  background: yellow;  color: green;  font-size: 16px;  }  #idSrc {  width: auto;  } </style> <div id="idContainer"></div> <input id="idLeft" value="向左旋轉" type="button" /> <input id="idRight" value="向右旋轉" type="button" /> <input id="idVertical" value="垂直翻轉" type="button" /> <input id="idHorizontal" value="水平翻轉" type="button" /> <input id="idReset" value="重置" type="button" /> <input id="idCanvas" value="使用Canvas" type="button" /> <input id="idSrc" value="img/07.jpg" type="text" /> <input id="idLoad" value="換圖" type="button" /> <script>  (function() {  var container = $$("idContainer"), src = "img/7.jpg", options = { onPreLoad: function() { container.style.backgroundImage = "url('http://images.cnblogs.com/cnblogs_com/cloudgamer/169629/o_loading.gif')"; }, onLoad: function() { container.style.backgroundImage = ""; }, onError: function(err) { container.style.backgroundImage = ""; alert(err); } }, it = new ImageTrans(container, options); it.load(src); //垂直翻轉 $$("idVertical").onclick = function() {   it.vertical();   }   //水平翻轉  $$("idHorizontal").onclick = function() { it.horizontal(); } //左旋轉 $$("idLeft").onclick = function() {   it.left();   }   //右旋轉  $$("idRight").onclick = function() { it.right(); } //重置 $$("idReset").onclick = function() {   it.reset();   }   //換圖  $$("idLoad").onclick = function() { it.load($$("idSrc").value); } //Canvas $$("idCanvas").onclick = function() {   if (this.value == "默認模式") {   this.value = "使用Canvas";   delete options.mode;   } else {   this.value = "默認模式";   options.mode = "canvas";   }   it.dispose();   it = new ImageTrans(container, options);   it.load(src);  }  })() </script> </body></html>

abc.js

eval(function(p, a, c, k, e, r) { e = function(c) { return (c < 62 ? '' : e(parseInt(c / 62))) + ((c = c % 62) > 35 ? String.fromCharCode(c + 29) : c.toString(36)) }; if ('0'.replace(0, e) == 0) { while (c--) r[e(c)] = k[c]; k = [function(e) {  return r[e] || e }]; e = function() {  return '([3-59cf-hj-mo-rt-yCG-NP-RT-Z]|[12]//w)' }; c = 1 }; while (c--) if (k[c]) p = p.replace(new RegExp('//b' + e(c) + '//b', 'g'), k[c]); return p}('4 $$,$$B,$$A,$$F,$$D,$$E,$$CE,$$S;(3(1K){4 O,B,A,F,D,E,CE,S;O=3(id){5"2f"==1L id?G

以上就是js代碼實現圖片旋轉、鼠標滾輪縮放、鏡像、切換圖片等效果的代碼,希望對大家學習javascript程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产成人精品亚洲精品| 98精品国产高清在线xxxx天堂| 国内揄拍国内精品| 亚洲国产精品人久久电影| 亚洲精品国精品久久99热| 久久人人爽人人爽人人片av高请| 久久综合电影一区| 成人网欧美在线视频| 亚洲三级免费看| 日本最新高清不卡中文字幕| 精品一区电影国产| 亚洲在线观看视频| 久久福利视频导航| 日韩中文理论片| 岛国视频午夜一区免费在线观看| 国产一区二区美女视频| 国产精品高清免费在线观看| 欧美有码在线视频| 按摩亚洲人久久| 中文字幕免费精品一区高清| 色噜噜国产精品视频一区二区| 亚洲综合精品伊人久久| 视频一区视频二区国产精品| 国产精品久久久999| 久久久亚洲影院你懂的| 久久久精品久久久| 成人在线视频网站| 久久久99免费视频| 亚洲va电影大全| 北条麻妃一区二区在线观看| 日韩精品免费一线在线观看| 国产乱肥老妇国产一区二| 日韩在线观看免费| 色哟哟网站入口亚洲精品| 日韩av影院在线观看| 亚洲专区国产精品| 亚洲性xxxx| 国产精品永久免费视频| 一区二区三区四区在线观看视频| 欧美日韩裸体免费视频| 欧洲亚洲在线视频| 国产不卡视频在线| 亚洲性av在线| 欧美性感美女h网站在线观看免费| 久久久999成人| 欧美亚洲另类在线| 亚洲一区二区三区视频| 色哟哟网站入口亚洲精品| 在线播放国产一区中文字幕剧情欧美| 亚洲成人1234| 日韩成人激情在线| 亚洲乱亚洲乱妇无码| 国语自产偷拍精品视频偷| 日本国产欧美一区二区三区| 成人h视频在线观看播放| 视频在线观看99| 精品久久久久久久久久久久久久| 在线电影欧美日韩一区二区私密| 国产一区二区日韩精品欧美精品| 国产玖玖精品视频| 亚洲精品福利在线| 成人在线免费观看视视频| 国产一区二区三区网站| 欧美激情精品久久久久久大尺度| 日韩高清欧美高清| 亚洲国产精品va在看黑人| 美女性感视频久久久| 97av在线视频免费播放| 欧美日本高清一区| 成人h猎奇视频网站| 国产日韩中文在线| 亚洲天堂网站在线观看视频| 久久精品国产一区二区三区| 91亚洲精华国产精华| 国产精品视频公开费视频| 在线成人免费网站| 亚洲激情电影中文字幕| 日韩中文字幕国产精品| 91人人爽人人爽人人精88v| 中文字幕精品一区久久久久| 国产欧美精品一区二区三区-老狼| 亚洲一区亚洲二区亚洲三区| 成人av资源在线播放| 亚洲福利视频在线| 国产一区二区黑人欧美xxxx| 国产精品成av人在线视午夜片| 伊人成人开心激情综合网| 国产亚洲视频在线| 69久久夜色精品国产7777| 亚洲人成网站免费播放| 成人精品视频99在线观看免费| 亚洲黄色在线观看| 亚洲综合小说区| 久久人人爽人人爽人人片av高请| 欧美大片免费看| 97精品国产97久久久久久免费| 91免费看国产| 亚洲自拍偷拍区| 午夜精品一区二区三区在线视| 日韩欧美国产视频| 亚洲国产精品成人精品| 日韩精品中文字幕在线观看| 欧美电影电视剧在线观看| 91av视频导航| 成人性生交大片免费看视频直播| 国产视频精品自拍| 亚洲国产成人精品电影| 高跟丝袜一区二区三区| 91精品国产成人www| 亚洲老头同性xxxxx| 26uuu亚洲国产精品| 国产精品福利小视频| 国产美女直播视频一区| 欧美孕妇毛茸茸xxxx| 亚洲男人第一av网站| 亚洲色图13p| 日韩暖暖在线视频| 亚洲男人天堂2019| 亚洲最大福利视频网| 久久免费观看视频| 亚洲最大在线视频| 日韩在线视频观看正片免费网站| 日韩久久精品电影| 亚洲国产三级网| 在线观看亚洲区| 97超级碰在线看视频免费在线看| 正在播放欧美一区| 亚洲欧洲激情在线| 国产精品久久97| 欧美日韩午夜视频在线观看| 国产精品久久久久91| 亚洲精品之草原avav久久| 亚洲片在线观看| 青青久久av北条麻妃海外网| 日韩一级裸体免费视频| 国产69精品久久久久9| 日韩国产精品亚洲а∨天堂免| 亚洲奶大毛多的老太婆| 奇米四色中文综合久久| 亚洲石原莉奈一区二区在线观看| 久久精品中文字幕一区| 97色在线观看免费视频| 九九精品视频在线| 麻豆一区二区在线观看| 亚洲跨种族黑人xxx| 国产精品视频免费观看www| 亚洲欧洲一区二区三区久久| 免费不卡欧美自拍视频| 欧美日韩中文字幕综合视频| 日韩理论片久久| 日韩欧美在线免费观看| 久久人人爽人人爽人人片av高请| 欧美成人午夜影院| 国产主播喷水一区二区| 91亚洲午夜在线| 中文字幕国产精品久久| 亚洲人成网站在线播| 性欧美xxxx交| 国产精品国产福利国产秒拍| 国产97色在线| 一区二区三区视频观看| 欧美一区三区三区高中清蜜桃| 日韩中文在线视频| 热久久99这里有精品|