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


Posted in Javascript onMay 06, 2015

效果:

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

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 相关文章推荐
再次更新!MSClass (Class Of Marquee Scroll通用不间断滚动JS封装类 Ver 1.6)
Feb 05 Javascript
一直复略了的一个问题,关于表单重复提交
Feb 15 Javascript
javascript 拖动表格行实现代码
May 05 Javascript
JQuery的AJAX实现文件下载的小例子
May 15 Javascript
Javascript字符串常用方法详解
Jul 21 Javascript
js微信分享API
Oct 11 Javascript
AngularJS实现DOM元素的显示与隐藏功能
Nov 22 Javascript
JS将unicode码转中文方法
May 08 Javascript
浅谈在fetch方法中添加header后遇到的预检请求问题
Aug 31 Javascript
AngularJS创建一个上传照片的指令实例代码
Feb 24 Javascript
详解js获取video任意时间的画面截图
Apr 17 Javascript
原生JavaScript实现的无缝滚动功能详解
Jan 17 Javascript
avalonjs制作响应式瀑布流特效
May 06 #Javascript
javascript实现简单的html5视频播放器
May 06 #Javascript
js实现的四级左侧网站分类菜单实例
May 06 #Javascript
wangEditor编辑器失去焦点后仍然可以在原位置插入图片分析
May 06 #Javascript
完美实现仿QQ空间评论回复特效
May 06 #Javascript
jQuery实现鼠标单击网页文字后在文本框显示的方法
May 06 #Javascript
js实现点击按钮后给Div图层设置随机背景颜色的方法
May 06 #Javascript
You might like
php下拉选项的批量操作的实现代码
2013/10/14 PHP
将PHP从5.3.28升级到5.3.29时Nginx出现502错误
2015/05/09 PHP
PHP中strncmp()函数比较两个字符串前2个字符是否相等的方法
2016/01/07 PHP
PHP面向对象程序设计OOP继承用法入门示例
2016/12/27 PHP
PHP类与对象后期静态绑定操作实例详解
2018/12/20 PHP
详解Laravel设置多态关系模型别名的方式
2019/10/17 PHP
PHP超级全局变量【$GLOBALS,$_SERVER,$_REQUEST等】用法实例分析
2019/12/11 PHP
讲两件事:1.this指针的用法小探. 2.ie的attachEvent和firefox的addEventListener在事件处理上的区别
2007/04/12 Javascript
jquery 上下滚动广告
2009/06/17 Javascript
javascript 客户端验证上传图片的大小(兼容IE和火狐)
2009/08/15 Javascript
jquery checkbox全选、取消全选实现代码
2010/03/05 Javascript
jquery 模拟雅虎首页的点击对话框效果
2010/04/11 Javascript
js判断是否为数组的函数: isArray()
2011/10/30 Javascript
jQuery简单实现上下,左右滑动的方法
2016/06/01 Javascript
js实现html table 行,列锁定的简单实例
2016/10/13 Javascript
基于Vue实现的多条件筛选功能的详解(类似京东和淘宝功能)
2019/05/07 Javascript
原生JS实现汇率转换功能代码实例
2020/05/13 Javascript
Vue时间轴 vue-light-timeline的用法说明
2020/10/29 Javascript
详解Vue.js3.0 组件是如何渲染为DOM的
2020/11/10 Javascript
Python使用当前时间、随机数产生一个唯一数字的方法
2017/09/18 Python
python hough变换检测直线的实现方法
2019/07/12 Python
python线程安全及多进程多线程实现方法详解
2019/09/27 Python
详解Python GUI编程之PyQt5入门到实战
2020/12/10 Python
HTML5拖拽API经典实例详解
2018/04/20 HTML / CSS
Html5+CSS3+EL表达式问题小结
2020/12/19 HTML / CSS
国际知名设计师时装商店:Coggles
2016/09/05 全球购物
三星美国官网:Samsung美国
2017/02/06 全球购物
草莓网化妆品澳大利亚站:Strawberrynet AU
2017/12/18 全球购物
高级人员简历的自我评价分享
2013/11/03 职场文书
校园创业策划书
2014/01/14 职场文书
应届电子商务毕业自荐书范文
2014/02/11 职场文书
医院院务公开实施方案
2014/05/03 职场文书
影视广告专业求职信
2014/09/02 职场文书
招标授权委托书样本
2014/09/23 职场文书
祝寿主持词
2015/07/02 职场文书
Win10鼠标宏怎么设置?win10系统鼠标宏的设置方法
2022/08/14 数码科技