zoukankan      html  css  js  c++  java
  • 原生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>
  • 相关阅读:
    java根据汉字获取全拼和首字母
    SQL 增加或删除一列
    C#实现WinForm传值实例解析
    C# 静态类与非静态类、静态成员的区别分析
    c# 面相对象1-概括
    c# 面相对象2-之封装性
    c# 面相对象3-之继承性
    面向对象基础知识(含义、修饰符、三大特性)
    c# 面相对象4-多态性
    用集合求平均分
  • 原文地址:https://www.cnblogs.com/dtdxrk/p/3204916.html
Copyright © 2011-2022 走看看