原生Js封装的产品图片360度展示

挺简单的一段程序,但是效果不错:

1.把需要展示的36张图片先预加载到浏览器缓存里

2.给展示图片的div添加方法

3.通过鼠标左右移动的像素转换图片

在线效果预览:http://jsfiddle.net/dtdxrk/SnSGj/embedded/result/

  1 <!DOCTYPE html>
  2  <html>
  3  <head>
  4       <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5      <title>原生Js产品图片360度展示</title>
  6        <style type="text/css">
  7       *{margin: 0;padding: 0}
  8 
  9       h1{background-color: #666;color: #fff;text-align: center;margin:10px;}
 10       #content{margin:10px;border: 5px solid #666;text-align: center;}
 11 
 12      </style>
 13  </head>
 14 
 15  <body>
 16   <h1>鼠标左键点击图片-并左右移动</h1>
 17  <div id="content">
 18     <img id="car" src="https://images0.cnblogs.com/blog/150659/201307/30094341-d352147c67e844c18c302810804efea0.gif" />
 19  </div>
 20 
 21 
 22 <script type="text/javascript">
 23 var _CalF = {
 24    $ : function(object){//选择器
 25      if(object === undefined ) return;
 26      var getArr = function(name,tagName,attr){
 27            var tagName = tagName || '*',
 28                eles = document.getElementsByTagName(tagName),
 29                clas = (typeof document.body.style.maxHeight === "undefined") ? "className" : "class";//ie6
 30                attr = attr || clas,
 31                Arr = [];
 32            for(var i=0;i<eles.length;i++){
 33              if(eles[i].getAttribute(attr)==name){
 34                Arr.push(eles[i]);
 35              }
 36            }
 37            return Arr;
 38          };
 39    
 40      if(object.indexOf('#') === 0){  //#id 
 41        return document.getElementById(object.substring(1));
 42      }else if(object.indexOf('.') === 0){  //.class
 43        return getArr(object.substring(1));
 44      }else if(object.match(/=/g)){  //attr=name
 45        return getArr(object.substring(object.search(/=/g)+1),null,object.substring(0,object.search(/=/g)));
 46      }else if(object.match(/./g)){ //tagName.className
 47        return getArr(object.split('.')[1],object.split('.')[0]);
 48      }
 49    },
 50    addHandler:function(node, type, handler){
 51        node.addEventListener ? node.addEventListener(type, handler, false) : node.attachEvent('on'+ type, handler);
 52    }
 53  };
 54 
 55 
 56 
 57 function show360(){
 58   this.init.apply(this, arguments);
 59 }
 60 
 61 show360.prototype = {
 62   init:function(id,src){
 63       var divId = "#"+id,
 64           div = _CalF.$(divId);
 65       this.div = div;
 66       this.src = src;
 67       this.xDown; //鼠标按下x的值
 68       this.isDown = false;
 69       this.i = 1;
 70       this.moved;
 71       this.time;
 72       this.loadImg();
 73       this.addEvent();
 74   },
 75   setImgSrc : function(i){
 76     var img = this.div.getElementsByTagName("img")[0];
 77     img.setAttribute('src',this.src+i+'.png');
 78   },
 79   loadImg : function(){ //加载图片
 80     var that = this,
 81         num = 1,
 82         imgs =[];
 83     for(var i=1; i<37; i++){
 84         imgs[i] = new Image;
 85         imgs[i].src = that.src + i + '.png';
 86         imgs[i].onload = function(){
 87           num++;
 88           if(num==37) that.setImgSrc(1);
 89         }
 90     }
 91   },
 92   addEvent : function(){
 93     var that = this,
 94         div = that.div;
 95 
 96     _CalF.addHandler(div,"mousedown",function(event){
 97       var event = window.event || event;
 98       if(event.button == 0 ||event.button==1){  //鼠标左键chrome=0 ie=1
 99         (!window.ActiveXObject) ? event.preventDefault() : event.returnValue = false; //取消默认行为
100         that.xDown = event.clientX;
101         that.isDown = true;
102       }else if(event.button == 2){
103         alert("请用鼠标左键!");
104       }
105     });
106 
107     _CalF.addHandler(div,"mousemove",function(event){
108       var event = window.event || event,
109           x = event.clientX;
110       (!window.ActiveXObject) ? event.preventDefault() : event.returnValue = false; //取消默认行为
111       if(that.isDown && (typeof that.time !== undefined)){
112         that.time = setTimeout(function(){
113           that.moved = x - that.xDown;
114           if(that.moved>15){
115             that.i++;
116             if(that.i>36) that.i=1;
117           }else if(that.moved<-15){
118             that.i--;
119             if(that.i<1) that.i=36;
120           }else{
121             return;
122           }
123           that.setImgSrc(that.i)
124           that.xDown = x;
125         },50);
126       }
127     });
128 
129     _CalF.addHandler(div,"mouseup",function(){
130       that.isDown = false;
131     });
132   }
133 }
134 var car = new show360("content","http://sandbox.runjs.cn/uploads/rs/369/vuy2vmwn/car_");
135 </script>
136  </body>
137  </html>
原文地址:https://www.cnblogs.com/dtdxrk/p/3204916.html