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 相关文章推荐
FireFox与IE 下js兼容触发click事件的代码
Nov 20 Javascript
详解JavaScript数组和字符串中去除重复值的方法
Mar 07 Javascript
用原生JS对AJAX做简单封装的实例代码
Jul 13 Javascript
使用JS组件实现带ToolTip验证框的实例代码
Aug 23 Javascript
集合Bootstrap自定义confirm提示效果
Sep 19 Javascript
Vue中对比scoped css和css module的区别
May 17 Javascript
vue项目实现表单登录页保存账号和密码到cookie功能
Aug 31 Javascript
angular4笔记系列之内置指令小结
Nov 09 Javascript
微信小程序下拉刷新PullDownRefresh的使用方法
Nov 29 Javascript
nuxt+axios实现打包后动态修改请求地址的方法
Apr 22 Javascript
Vue Elenent实现表格相同数据列合并
Nov 30 Vue.js
Vue中使用import进行路由懒加载的原理分析
Apr 01 Vue.js
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
简单易用的计数器(数据库)
2006/10/09 PHP
PHP写的获取各搜索蜘蛛爬行记录代码
2012/08/21 PHP
PHP fastcgi模式上传大文件(大约有300多K)报错
2014/09/28 PHP
PHP+JS实现的实时搜索提示功能
2018/03/13 PHP
PHP删除数组中特定元素的两种方法
2019/02/28 PHP
图片连续滚动代码[兼容IE/firefox]
2009/06/11 Javascript
Jquery选择器 $实现原理
2009/12/02 Javascript
ajax上传时参数提交不更新等相关问题
2012/12/11 Javascript
JS获取当前日期和时间的简单实例
2013/11/19 Javascript
判断某个字符在一个字符串中是否存在的js代码
2014/02/28 Javascript
node.js中的fs.chownSync方法使用说明
2014/12/16 Javascript
用js判断是否为360浏览器的实现代码
2015/01/15 Javascript
Node连接mysql数据库方法介绍
2017/02/07 Javascript
js css自定义分页效果
2017/02/24 Javascript
Bootstrap实现的表格合并单元格示例
2018/02/06 Javascript
angularjs下ng-repeat点击元素改变样式的实现方法
2018/09/12 Javascript
JavaScript函数式编程(Functional Programming)声明式与命令式实例分析
2019/05/21 Javascript
[04:45]上海特级锦标赛主赛事第三日TOP10
2016/03/05 DOTA
[00:32]2018DOTA2亚洲邀请赛出场——VP
2018/04/04 DOTA
python 图片验证码代码
2008/12/07 Python
给Python入门者的一些编程建议
2015/06/15 Python
在Python 3中实现类型检查器的简单方法
2015/07/03 Python
Python和Perl绘制中国北京跑步地图的方法
2016/03/03 Python
Python中psutil的介绍与用法
2019/05/02 Python
基于Python爬取爱奇艺资源过程解析
2020/03/02 Python
Keras 快速解决OOM超内存的问题
2020/06/11 Python
mac系统下安装pycharm、永久激活、中文汉化详细教程
2020/11/24 Python
Kappa英国官方在线商店:服装和运动器材
2020/11/22 全球购物
师范生实习个人的自我评价
2013/09/28 职场文书
幼教毕业生自我鉴定
2014/01/12 职场文书
通信工程求职信
2014/07/16 职场文书
工伤事故证明
2014/10/20 职场文书
集团财务总监岗位职责
2015/04/03 职场文书
2016年度农村党员干部主题教育活动总结
2016/04/06 职场文书
家电创业计划书
2019/08/05 职场文书
python制作图形界面的2048游戏, 基于tkinter
2021/04/06 Python