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 相关文章推荐
jquery获得页面元素的坐标值实现思路及代码
Apr 15 Javascript
extjs中form与grid交互数据(record)的方法
Aug 29 Javascript
动态加载JS文件的三种方法
Nov 08 Javascript
取消选中单选框radio的三种方式示例介绍
Dec 23 Javascript
js实现刷新iframe的方法汇总
Apr 27 Javascript
原生JS轮播图插件
Feb 09 Javascript
bootstrap table服务端实现分页效果
Aug 10 Javascript
微信小程序视图容器(swiper)组件创建轮播图
Jun 19 Javascript
使用layer.msg 时间设置不起作用的解决方法
Sep 12 Javascript
vue+ESLint 配置保存 自动格式化代码
Mar 17 Javascript
利用js实现简易红绿灯
Oct 15 Javascript
JavaScript代码实现简单计算器
Dec 27 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+JS三级菜单联动菜单实现方法
2016/02/24 PHP
PHP生成制作验证码的简单实例
2016/06/12 PHP
PHP生成静态HTML文档实现代码
2016/06/23 PHP
解决Laravel无法使用COOKIE和SESSION的问题
2019/10/16 PHP
深入理解PHP+Mysql分布式事务与解决方案
2020/12/03 PHP
JavaScript 继承详解(三)
2009/07/13 Javascript
JavaScript 事件的一些重要说明
2009/10/25 Javascript
判断目标是否是window,document,和拥有tagName的Element的代码
2010/05/31 Javascript
js判断是否为ie的方法小结
2014/01/13 Javascript
JS实现根据当前文字选择返回被选中的文字
2014/05/21 Javascript
JavaScript实现的简单幂函数实例
2015/04/17 Javascript
浅谈Javascript的静态属性和原型属性
2015/05/07 Javascript
JavaScript html5 canvas画布中删除一个块区域的方法
2016/01/26 Javascript
jquery实现下拉框功能效果【实例代码】
2016/05/06 Javascript
漂亮! js实现颜色渐变效果
2016/08/12 Javascript
JQuery 获取多个select标签option的text内容(实例)
2017/09/07 jQuery
IntelliJ IDEA 安装vue开发插件的方法
2017/11/21 Javascript
vue中eslintrc.js配置最详细介绍
2018/12/21 Javascript
让python 3支持mysqldb的解决方法
2017/02/14 Python
解决在Python编辑器pycharm中程序run正常debug错误的问题
2019/01/17 Python
python+numpy按行求一个二维数组的最大值方法
2019/07/09 Python
Python使用Beautiful Soup爬取豆瓣音乐排行榜过程解析
2019/08/15 Python
pytorch 准备、训练和测试自己的图片数据的方法
2020/01/10 Python
Python基于stuck实现scoket文件传输
2020/04/02 Python
python输出数学符号实例
2020/05/11 Python
eBay荷兰购物网站:eBay.nl
2020/06/26 全球购物
保险专业大专生求职信
2013/10/26 职场文书
合作意向书范本
2014/03/31 职场文书
金融系应届毕业生求职信
2014/05/26 职场文书
小学学校门卫岗位职责
2014/08/03 职场文书
学习党章的体会
2014/11/07 职场文书
2014年高二班主任工作总结
2014/12/16 职场文书
立项申请报告范本
2015/05/15 职场文书
小学语文继续教育研修日志
2015/11/13 职场文书
MySQL系列之十一 日志记录
2021/07/02 MySQL
Apache SeaTunnel实现 非CDC数据抽取
2022/05/20 Servers