• avalonjs仿微博的图片拖动


    最新版http://www.cnblogs.com/TheViper/p/4725693.html

    效果:

    转载请注明出处: http://www.cnblogs.com/TheViper/p/4026401.html 

    1 <div id='post_img' ms-controller='post_img'>
    2     <ul id='post_img_inner' ms-mousemove='onmousemove'>
    3         <li ms-repeat-el="post_img_list" class='inline-block' ms-mousedown='onmousedown($event,$index,el)' ms-attr-id='post_img_item{{$index}}'>
    4             <img ms-src='el' class='uploaded_img'></li>
    5     </ul>
    6 </div>
     1 var drag_holder=null,index=-1,ori_src=null,drag_flag=false;//拖动的代理,原图片,原图片的src
     2 var post_img = avalon.define('post_img', function(vm) {
     3     vm.post_img_list=[];//保存所有图片的src
     4     vm.onmousedown=function(e,i,el){
     5         $('drag_proxy').style.display='block';
     6         var target=e.target.parentNode;
     7         var xx = e.clientX; 
     8         var yy = e.clientY;
     9         $('drag_proxy').style.top=yy+'px';
    10         $('drag_proxy').style.left=xx+'px';
    11         if(target&&target.nodeName=='LI'){
    12             ori_src=el;
    13             index=target.getAttribute('id').substring(13);
    14             $('drag_proxy').innerHTML=target.innerHTML;
    15             post_img.post_img_list.splice(i, 1, 'about:blank');
    16         }
    17         drag_flag=true;
    18     }; 
    19     vm.onmousemove=function(e){
    20         if(drag_flag){//如果点下了图片
    21             var xx = e.clientX; 
    22             var yy = e.clientY; 
    23             $('drag_proxy').style.top=yy+'px';
    24             $('drag_proxy').style.left=xx+'px';
    25             var x=xx-avalon($('post_img')).offset().left;
    26             var y=yy-avalon($('post_img')).offset().top;
    27             //例子没有考虑滚动条的情况
    28             var x_index=Math.floor(x/100);//图片尺寸100*100
    29             var y_index=Math.floor(y/100);
    30             post_img.post_img_list.splice(index, 1);//删除当前图片的li
    31             var target_index=3*y_index+x_index;//目标图片的位置(3*3)
    32             if(post_img.post_img_list.indexOf('about:blank')!=target_index)
    33             //如果图片数组中没有src=about:blank这个占位置的li
    34                 post_img.post_img_list.splice(target_index, 0, 'about:blank');
    35                 //添加src=about:blank
    36             index=target_index;
    37             //会触发很多次move,所以触发一次就改动一次
    38         }
    39     };
    40 });
    41 document.onmouseup=function(e){
    42     drag_holder=null;
    43     if(ori_src){
    44         post_img.post_img_list.splice(index, 1);
    45         //删除src=about:blank
    46         post_img.post_img_list.splice(index, 0,ori_src);
    47         //添加原图片
    48     }
    49     $('drag_proxy').style.display='none';
    50     $('drag_proxy').innerHTML='';
    51     drag_flag=false;
    52 };

    司徒正美https://github.com/RubyLouvre/avalon的avalon mvvc真的很强大!

     

  • 相关阅读:
    mysql的启动出现错误 install/remove denied错误操作
    mybatis的开发方式
    mysql绿色版安装出现1067的错误原因
    线程池中对于异常的处理操作
    spring中的aync注解的使用与事务操作
    互联网金融产品经理 修炼之道
    几句牢骚
    做自己
    自动加载与访问权限
    mvc模式实现
  • 原文地址:https://www.cnblogs.com/TheViper/p/4026401.html
Copyright © 2020-2023  润新知