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 相关文章推荐
WordPress JQuery处理沙发头像
Jun 22 Javascript
js trim函数 去空格函数与正则集锦
Nov 20 Javascript
php和js对数据库图片进行等比缩放示例
Apr 28 Javascript
JavaScript利用正则表达式去除日期中的-
Jun 09 Javascript
详解JavaScript对象序列化
Jan 19 Javascript
JavaScript实现仿淘宝商品购买数量的增减效果
Jan 22 Javascript
JavaScript程序中实现继承特性的方式总结
Jun 24 Javascript
在Angular中实现一个级联效果的下拉框的示例代码
May 20 Javascript
ES6箭头函数和扩展实例分析
May 23 Javascript
javascript实现移动端红包雨页面
Jun 23 Javascript
vue2.* element tabs tab-pane 动态加载组件操作
Jul 19 Javascript
js轮播图之旋转木马效果
Oct 13 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中的session永不过期的解决思路及实现方法分享
2011/04/20 PHP
php session劫持和防范的方法
2013/11/12 PHP
php使用变量动态创建类的对象用法示例
2017/02/06 PHP
PHP内部实现打乱字符串顺序函数str_shuffle的方法
2019/02/14 PHP
让你的PHP,APACHE,NGINX支持大文件上传
2021/03/09 PHP
JS获取后台Cookies值的小例子
2013/03/04 Javascript
判断某个字符在一个字符串中是否存在的js代码
2014/02/28 Javascript
javascript初学者常用技巧
2014/09/02 Javascript
React实现双向绑定示例代码
2016/09/19 Javascript
JS制作类似选项卡切换的年历
2016/12/03 Javascript
layui表格实现代码
2017/05/20 Javascript
bootstrap时间控件daterangepicker使用方法及各种小bug修复
2017/10/25 Javascript
微信小程序显示下拉列表功能【附源码下载】
2017/12/12 Javascript
React中常见的动画实现的几种方式
2018/01/10 Javascript
vue实现前进刷新后退不刷新效果
2018/01/26 Javascript
Node.js笔记之process模块解读
2018/05/31 Javascript
用webpack4开发小程序的实现方法
2019/06/04 Javascript
vue配置nprogress实现页面顶部进度条
2019/09/21 Javascript
微信小程序 接入腾讯地图的两种写法
2021/01/12 Javascript
利用numpy和pandas处理csv文件中的时间方法
2018/04/19 Python
Python中的groupby分组功能的实例代码
2018/07/11 Python
示例详解Python3 or Python2 两者之间的差异
2018/08/23 Python
pymysql的简单封装代码实例
2020/01/08 Python
python自动提取文本中的时间(包含中文日期)
2020/08/31 Python
django使用graphql的实例
2020/09/02 Python
HTML5 Canvas之测试浏览器是否支持Canvas的方法
2015/01/01 HTML / CSS
泰国第一的化妆品网站:Konvy
2018/02/25 全球购物
澳大利亚最受欢迎的美发和美容在线商店:Catwalk
2018/12/12 全球购物
Jack Rogers官网:美国经典的女性鞋靴品牌
2019/09/04 全球购物
如何拷贝一整个Java对象,包括它的状态
2013/12/27 面试题
就业推荐表自我鉴定
2013/10/29 职场文书
《台湾的蝴蝶谷》教学反思
2014/02/20 职场文书
2014领导班子四风剖析对照检查材料思想汇报
2014/09/20 职场文书
葬礼主持词
2015/07/02 职场文书
2016年妇联“6﹒26国际禁毒日”宣传活动总结
2016/04/05 职场文书
Redis Cluster 字段模糊匹配及删除
2021/05/27 Redis