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 相关文章推荐
ASP.NET jQuery 实例2 (表单中使用回车在TextBox之间向下移动)
Jan 13 Javascript
防止jQuery ajax Load使用缓存的方法小结
Feb 22 Javascript
JavaScript函数参数使用带参数名的方式赋值传入的方法
Mar 19 Javascript
jQuery实现瀑布流布局详解(PC和移动端)
Sep 01 Javascript
JavaScript中利用各种循环进行遍历的方式总结
Nov 10 Javascript
轻松实现js图片预览功能
Jan 18 Javascript
手机端转换rem适应
Apr 01 Javascript
关于ES6箭头函数中的this问题
Feb 27 Javascript
浏览器事件循环与vue nextTicket的实现
Apr 16 Javascript
vue跳转页面的几种方法(推荐)
Mar 26 Javascript
如何利用JavaScript编写一个格斗小游戏
Jan 06 Javascript
Vue 实现可视化拖拽页面编辑器
Feb 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
一台收音机,让一家人都笑逐颜开!
2020/08/21 无线电
php5.3 废弃函数小结
2010/05/16 PHP
yii的CURD操作实例详解
2014/12/04 PHP
PHP符合PSR编程规范的实例分享
2016/12/21 PHP
Yii2中hasOne、hasMany及多对多关联查询的用法详解
2017/02/15 PHP
PHP中for循环与foreach的区别
2017/03/06 PHP
thinkphp集成前端脚手架Vue-cli的教程图解
2018/08/30 PHP
PHP7创建COOKIE和销毁COOKIE的实例方法
2020/02/03 PHP
Javascript 实现的数独解题算法网页实例
2013/10/15 Javascript
简单介绍jsonp 使用小结
2016/01/27 Javascript
基于JavaScript实现表单密码的隐藏和显示出来
2016/03/02 Javascript
BootStrap响应式导航条实例介绍
2016/05/06 Javascript
jQuery.ajax 跨域请求webapi设置headers的解决方案
2016/08/08 Javascript
jQuery实现两列等高并自适应高度
2016/12/22 Javascript
Nodejs调用WebService的示例代码
2017/09/29 NodeJs
Angular实现的table表格排序功能完整示例
2017/12/22 Javascript
微信小程序实现人脸检测功能
2018/05/25 Javascript
Vue组件基础用法详解
2020/02/05 Javascript
JavaScript实现手机号码 3-4-4格式并控制新增和删除时光标的位置
2020/06/02 Javascript
Map与WeakMap类型在JavaScript中的使用详解
2020/11/18 Javascript
Python图像处理之图像的缩放、旋转与翻转实现方法示例
2019/01/04 Python
详解python算法之冒泡排序
2019/03/05 Python
python实现飞机大战小游戏
2019/11/08 Python
Python读写操作csv和excle文件代码实例
2020/03/16 Python
Debenhams爱尔兰:英国知名的百货公司
2017/01/02 全球购物
加拿大百叶窗和窗帘定制网站:Blinds
2017/01/30 全球购物
最耐用行李箱,一箱永流传:Briggs & Riley(全球终身保修)
2017/12/07 全球购物
企业管理标语
2014/06/10 职场文书
委托书英文
2015/01/28 职场文书
员工福利申请报告
2015/05/15 职场文书
英雄儿女观后感
2015/06/09 职场文书
民警忠诚教育心得体会
2016/01/23 职场文书
职工趣味运动会开幕词
2016/03/04 职场文书
AJAX学习笔记
2021/05/18 Javascript
Python 数据可视化之Bokeh详解
2021/11/02 Python
Python使用Beautiful Soup(BS4)库解析HTML和XML
2022/06/05 Python