Ant Design 图片可拖拽效果,图片跟随鼠标移动,需计算鼠标在图片中与图片左上角的X轴的距离和鼠标在图片中与图片左上角的Y轴的距离。

constructor(props) {
super(props);
this.dragDrop = false; // 图片是否被拖动中
this.apartX = ; // 鼠标在图片中与图片左上角的X轴的距离
this.apartY = ; //鼠标在图片中与图片左上角的Y轴的距离
this.state = {
previewVisible: false,
previewImage: ''
}
}
    //图片点击查看
handlePreview = (url) => {
this.setState({
previewImage: url,
previewVisible: true,
});
};
// 关闭图片预览
closeImgIcon = () => {
this.setState({
previewVisible: false
});
}
// 图片跟随鼠标移动
_qxmouseMove = (event) => {
this.dragDrop = false;
}
_mouseDown = (event) => {
this.dragDrop = true;
const imgWrap = this.refs.showPreviewImageWrap;
this.apartX = event.pageX - imgWrap.offsetLeft;// 鼠标在图片中与图片左上角的X轴的距离
this.apartY = event.pageY - imgWrap.offsetTop; event.preventDefault();
event.stopPropagation();
}
_mouseUp = (event) => {
this.dragDrop = false; event.preventDefault();
event.stopPropagation();
}
_mouseMove = (event) => {
if (!this.dragDrop) {
return;
} const imgWrap = this.refs.showPreviewImageWrap;
imgWrap.style.left = (event.pageX - this.apartX)+ 'px';
imgWrap.style.top = (event.pageY - this.apartY) + 'px'; event.preventDefault();
event.stopPropagation();
}
//图片后缀判断
imgSuffix = (url) => {
let suffix = url.substring(url.length - );
return suffix
};
{this.state.previewVisible &&
<div className="ant-modal-wrap" onMouseMove={this._qxmouseMove.bind(this)}>
<div className='show_picture_image_wrap'
onMouseUp={this._mouseUp.bind(this)}
onMouseDown={this._mouseDown.bind(this)}
onMouseMove={this._mouseMove.bind(this)}
ref="showPreviewImageWrap" >
<Icon className="close-imgIcon" type="close-circle" onClick={() => this.closeImgIcon()}/>
{
(previewImage.indexOf('.pdf') > ) ?
<iframe src={previewImage} frameBorder=""
style={{width: '100%', height: '800px'}}></iframe> :
<img alt="example" style={{width: '100%'}} src={previewImage}/>
}
</div>
</div>
}

在div叫 ant-modal-wrap 增加onMouseMove 设置this.dragDrop=false;即鼠标离开需要拖拽的盒子,则取消拖拽事件。

用onMouseMove做拖拽时要注意iframe,在鼠标经过iframe时,鼠标就会失去控制。

解决:iframe { pointer-events:none; }  (但是iframe的点击,滚动等事件会消失)

Ant Design -- 图片可拖拽效果,图片跟随鼠标移动的更多相关文章

  1. js实现本地图片文件拖拽效果

    如何拖拽图片到指定位置,具体方法如下 在从本地上传图片的时候,如果使用拖拽效果,想想应该是更加的高大上,下面直接上js代码 完整代码: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 ...

  2. MWeb 1.4 新功能介绍一:引入文件夹到 MWeb 中管理,支持 Octpress、Jekyll 等静态博客拖拽插入图片和实时预览

    之前在 MWeb 中打开非文档库中的 Markdown 文档,如果文档中有引用到本机图片,是没办法在 MWeb 中显示出来和预览的.这是因为 Apple 规定在 Mac App Store(MAS) ...

  3. vue组件实现图片的拖拽和缩放

    vue实现一个组件其实很简单但是要写出一个好的可复用的组件那就需要多学习和钻研一下,一个好的组件必须有其必不可少的有优点:一是能提高应用开发效率.测试性.复用性等:二是组件应该是高内聚.低耦合的:三是 ...

  4. 超强的纯 CSS 鼠标点击拖拽效果

    背景 鼠标拖拽元素移动,算是一个稍微有点点复杂的交互. 而在本文,我们就将打破常规,向大家介绍一种超强的仅仅使用纯 CSS 就能够实现的鼠标点击拖拽效果. 在之前的这篇文章中 -- 不可思议的纯 CS ...

  5. 原生js实现拖拽效果

    面向对象 + 原生js拖拽 拖拽div等盒子模型,都是日常操作没有什么问题,如果是拖拽图片的话,会有一点小坑要踩...... 那么我们看代码: var Move_fn = {}; (function( ...

  6. jQuery的DOM操作实例(2)——拖拽效果&&拓展插件

    一.原生JavaScript编写拖拽效果 二.jQuery编写的拖拽效果 三.在jQuery中拓展一个拖拽插件

  7. React.js实现原生js拖拽效果及思考

    一.起因&思路 不知不觉,已经好几天没写博客了...近来除了研究React,还做了公司官网... 一直想写一个原生js拖拽效果,又加上近来学react学得比较嗨.所以就用react来实现这个拖 ...

  8. js拖拽效果

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  9. WinForm支持拖拽效果

    有一个MSDN客户提问在WinForm中如何实现拖拽效果——比如在WinForm中有一个Button,我要实现的效果是拖拽这个Button到目标位置后生成一个该控件的副本. 其实这个操作主要分成三步走 ...

随机推荐

  1. tcpdump指定IP和端口抓包

    如下指定抓www.baidu.com 并且80端口的包 保存到test.cap 可以在Windows下面用wireshark打开 tcpdump 'port 80 and host www.baidu ...

  2. hibernate中get和load区别

    在日常开发中,获取数据时必不可少的,这样就要用到get和load方法来实现了.下面简单说一下get和load的区别. 1.返回值不同 使用get方法检索数据时,没有该数据返回值为null. 而使用lo ...

  3. Unity ZTest 深度测试 & ZWrite 深度写入

    初学Shader,一开始对于渲染队列,ZTest 和 ZWrite一头雾水,经过多方查阅和实验,有了一些自己的理解.发此文与初学Shader的朋友分享,也算是为自己做个笔记.不对或不足之处欢迎指正. ...

  4. django项目部署过程

    django项目部署过程 1.上传代码 用git或者其他工具,如scp 代码上传后保证每个应用下的migrations文件夹里只有一个__init__.py文件,自己的迁移文件不要上传上来,具体的gi ...

  5. springmvc 获取request response

    RequestContextHolder 获取request public HttpServletRequest getRequest() { return ((ServletRequestAttri ...

  6. xshell 缺少mfc110u.dll

    https://www.microsoft.com/zh-CN/download/details.aspx?id=30679 如果 x64 没有反应,就下载 x86 安装试试,

  7. 别把&和nohup混为一谈, 根本不是同一个东西好不好 ------ 聊聊./a.out & , nohut ./a.out , nohup ./a.out &的区别

    在第一家公司工作的时候, 我认识了&,在第二家公司工作的时候, 我认识了nohup,  这就是渊源.  随后, 我就一直糊涂用他们, 但并不懂这两个东西. 网上很多地方是乱扯, 瞎复制, 为什 ...

  8. 用VBA写一个计算器

    着急的 玩家 可以 跳过“============”部分 ======================================可以跳过的 部分   开始==================== ...

  9. 【LeetCode】121、买卖股票的最佳时机

    Best Time to Buy and Sell Stock 题目等级:Easy 题目描述: Say you have an array for which the ith element is t ...

  10. Chapter03 第四节 c++的算术运算符

    c++算术运算符 3.4.1 运算符的优先级和结合性 四则运算参考四则运算优先级,注意括号. 3.4.2 除法的默认类型转换和精度问题 /* * @Description: 除法 * @Author: ...