avalonjs实现仿微博的图片拖动特效

 更新时间:2015年05月06日 10:19:32   投稿:hebedich  
JavaScript实现仿微博的图片拖动特效,貌似这些天有不少朋友需要这功能,今天发现这款是js制作的好,不敢独享,希望需要的朋友喜欢哦。

效果:

HTML:

<div id='post_img' ms-controller='post_img'>
   <ul id='post_img_inner' ms-mousemove='onmousemove'>
    <li ms-repeat-el="post_img_list" class='inline-block' ms-mousedown='onmousedown($event,$index,el)' ms-attr-id='post_img_item{{$index}}'>
      <img ms-src='el' class='uploaded_img'></li>
  </ul>
</div>

JS:

var drag_holder=null,index=-1,ori_src=null,drag_flag=false;//拖动的代理,原图片,原图片的src
var post_img = avalon.define('post_img', function(vm) {
  vm.post_img_list=[];//保存所有图片的src
  vm.onmousedown=function(e,i,el){
    $('drag_proxy').style.display='block';
    var target=e.target.parentNode;
    var xx = e.clientX; 
    var yy = e.clientY;
    $('drag_proxy').style.top=yy+'px';
    $('drag_proxy').style.left=xx+'px';
    if(target&&target.nodeName=='LI'){
      ori_src=el;
      index=target.getAttribute('id').substring(13);
      $('drag_proxy').innerHTML=target.innerHTML;
      post_img.post_img_list.splice(i, 1, 'about:blank');
    }
    drag_flag=true;
  }; 
  vm.onmousemove=function(e){
    if(drag_flag){//如果点下了图片
      var xx = e.clientX; 
      var yy = e.clientY; 
      $('drag_proxy').style.top=yy+'px';
      $('drag_proxy').style.left=xx+'px';
      var x=xx-avalon($('post_img')).offset().left;
      var y=yy-avalon($('post_img')).offset().top;
      //例子没有考虑滚动条的情况
      var x_index=Math.floor(x/100);//图片尺寸100*100
      var y_index=Math.floor(y/100);
      post_img.post_img_list.splice(index, 1);//删除当前图片的li
      var target_index=3*y_index+x_index;//目标图片的位置(3*3)
      if(post_img.post_img_list.indexOf('about:blank')!=target_index)
      //如果图片数组中没有src=about:blank这个占位置的li
        post_img.post_img_list.splice(target_index, 0, 'about:blank');
        //添加src=about:blank
      index=target_index;
      //会触发很多次move,所以触发一次就改动一次
    }
  };
});
document.onmouseup=function(e){
  drag_holder=null;
  if(ori_src){
    post_img.post_img_list.splice(index, 1);
    //删除src=about:blank
    post_img.post_img_list.splice(index, 0,ori_src);
    //添加原图片
  }
  $('drag_proxy').style.display='none';
  $('drag_proxy').innerHTML='';
  drag_flag=false;
};

以上所述就是本文的全部内容了,希望大家能够喜欢。

相关文章

  • Javascript的异步函数和Promise对象你了解吗

    Javascript的异步函数和Promise对象你了解吗

    这篇文章主要为大家详细介绍了Javascript异步函数和Promise对象,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-03-03
  • JavaScript 动态三角函数实例详解

    JavaScript 动态三角函数实例详解

    本文通过实例代码给大家实例讲解了javascript动态三角函数知识,非常不错,具有参考借鉴价值,需要的朋友参考下
    2017-01-01
  • JS画图(非VML)--兼容IE/FF

    JS画图(非VML)--兼容IE/FF

    JS画图(非VML)--兼容IE/FF...
    2006-12-12
  • 微信小程序bindinput与bindsubmit的区别实例分析

    微信小程序bindinput与bindsubmit的区别实例分析

    这篇文章主要介绍了微信小程序bindinput与bindsubmit的区别,结合实例形式分析了微信小程序bindinput与bindsubmit的具体功能、用法及相关使用区别,需要的朋友可以参考下
    2019-04-04
  • DOM 事件的深入浅出(一)

    DOM 事件的深入浅出(一)

    本文主要介绍了不同DOM级别下的事件处理程序,同时介绍了事件冒泡和捕获的触发原理和方法。熟练地使用不同级别的DOM事件并且解决相应的浏览器兼容性问题对我们的前端项目开发会很有帮助。
    2016-12-12
  • 微信小程序开发指南之字体样式设置

    微信小程序开发指南之字体样式设置

    在小程序开发中 经常需要我们自定义字体样式,下面这篇文章主要给大家介绍了关于微信小程序开发指南之字体样式设置的相关资料,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2023-03-03
  • JavaScript中实现键值对应的字典与哈希表结构的示例

    JavaScript中实现键值对应的字典与哈希表结构的示例

    字典或者哈希表这样的键值对应结构在其他很多语言中都有内置,非常好用,这里我们来看一下JavaScript中实现键值对应的字典与哈希表结构的示例:
    2016-06-06
  • document.selection.createRange方法与实例

    document.selection.createRange方法与实例

    document.selection.createRange() 根据当前文字选择返回 TextRange 对象,或根据控件选择返回 ControlRange 对象
    2006-10-10
  • window.name代替cookie的实现代码

    window.name代替cookie的实现代码

    window.name代替cookie的实现代码,需要的朋友可以参考下。
    2010-11-11
  • 通过JavaScript实现图片压缩

    通过JavaScript实现图片压缩

    在学习的时候,有时候看到一些一些网站的图片是经过压缩处理的,因为压缩之后的图片会节省一部分你的内存空间,这样的话也可以提升性能,于是就比较好奇这是如何实现的,今天我们就简单的实现一下,需要的朋友可以参考下
    2023-06-06

最新评论