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 相关文章推荐
javascript 设置文本框中焦点的位置
Nov 20 Javascript
关于用Jquery的height()、width()计算动态插入的IMG标签的宽高的问题
Dec 08 Javascript
javascript使用location.search的示例
Nov 05 Javascript
JS小游戏之象棋暗棋源码详解
Sep 25 Javascript
js实现不重复导入的方法
Mar 02 Javascript
基于javascript html5实现多文件上传
Mar 03 Javascript
JS 实现导航菜单中的二级下拉菜单的几种方式
Oct 31 Javascript
BootStrap Table 设置height表头与内容无法对齐的问题
Dec 28 Javascript
基于JavaScript实现滑动门效果
Mar 16 Javascript
bootstrap table插件的分页与checkbox使用详解
Jul 23 Javascript
JSON在Javascript中的使用(eval和JSON.parse的区别)详细解析
Sep 05 Javascript
Vue-Element-Admin集成自己的接口实现登录跳转
Jun 23 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
PHP中$_SERVER的详细参数与说明介绍
2013/10/26 PHP
php的sprintf函数的用法 控制浮点数格式
2014/02/14 PHP
Yii数据模型中rules类验证器用法分析
2016/07/15 PHP
PHP7使用ODBC连接SQL Server2008 R2数据库示例【基于thinkPHP5.1框架】
2019/05/06 PHP
jQuery学习笔记之jQuery的事件
2010/12/22 Javascript
JS 页面计时器示例代码
2013/10/28 Javascript
JS和函数式语言的三特性
2014/03/05 Javascript
node.js中的fs.writeFileSync方法使用说明
2014/12/14 Javascript
JavaScript调用浏览器打印功能实例分析
2015/07/17 Javascript
javascript中return,return true,return false三者的用法及区别
2015/11/17 Javascript
JS组件Bootstrap实现弹出框效果代码
2016/04/26 Javascript
jQuery EasyUI中的日期控件DateBox修改方法
2016/11/09 Javascript
JS实现的简单图片切换功能示例【测试可用】
2017/02/14 Javascript
利用node.js本地搭建HTTP服务器
2017/04/19 Javascript
p5.js入门教程之平滑过渡(Easing)
2018/03/16 Javascript
微信小程序仿RadioGroup改变样式的处理方案
2018/07/13 Javascript
微信小程序实现拖拽功能
2019/09/26 Javascript
[03:17]史诗级大片应援2018DOTA2国际邀请赛 致敬每一位坚守遗迹的勇士
2018/07/20 DOTA
Python部署web开发程序的几种方法
2017/05/05 Python
Python数据类型之Set集合实例详解
2019/05/07 Python
django认证系统实现自定义权限管理的方法
2019/08/28 Python
如何在python中写hive脚本
2019/11/08 Python
利用pyshp包给shapefile文件添加字段的实例
2019/12/06 Python
Python函数必须先定义,后调用说明(函数调用函数例外)
2020/06/02 Python
python super()函数的基本使用
2020/09/10 Python
Django 实现图片上传和下载功能
2020/12/31 Python
韩国CJ食品专卖网:CJonmart
2016/09/11 全球购物
会计电算化个人自我评价
2013/11/17 职场文书
消防宣传口号
2014/06/16 职场文书
上课随便讲话检讨书
2014/09/12 职场文书
【HBU】数据库第四周 单表查询
2021/04/05 SQL Server
Mysql - 常用函数 每天积极向上
2021/04/05 MySQL
Windows中Redis安装配置流程并实现远程访问功能
2021/06/07 Redis
html+css实现环绕倒影加载特效
2021/07/07 HTML / CSS
mysql的数据压缩性能对比详情
2021/11/07 MySQL
Mysql如何实现不存在则插入,存在则更新
2022/03/25 MySQL