Ant Design -- 图片可拖拽效果,图片跟随鼠标移动
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时,鼠标就会失去控制。
Ant Design -- 图片可拖拽效果,图片跟随鼠标移动的更多相关文章
- js实现本地图片文件拖拽效果
如何拖拽图片到指定位置,具体方法如下 在从本地上传图片的时候,如果使用拖拽效果,想想应该是更加的高大上,下面直接上js代码 完整代码: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 ...
- MWeb 1.4 新功能介绍一:引入文件夹到 MWeb 中管理,支持 Octpress、Jekyll 等静态博客拖拽插入图片和实时预览
之前在 MWeb 中打开非文档库中的 Markdown 文档,如果文档中有引用到本机图片,是没办法在 MWeb 中显示出来和预览的.这是因为 Apple 规定在 Mac App Store(MAS) ...
- vue组件实现图片的拖拽和缩放
vue实现一个组件其实很简单但是要写出一个好的可复用的组件那就需要多学习和钻研一下,一个好的组件必须有其必不可少的有优点:一是能提高应用开发效率.测试性.复用性等:二是组件应该是高内聚.低耦合的:三是 ...
- 超强的纯 CSS 鼠标点击拖拽效果
背景 鼠标拖拽元素移动,算是一个稍微有点点复杂的交互. 而在本文,我们就将打破常规,向大家介绍一种超强的仅仅使用纯 CSS 就能够实现的鼠标点击拖拽效果. 在之前的这篇文章中 -- 不可思议的纯 CS ...
- 原生js实现拖拽效果
面向对象 + 原生js拖拽 拖拽div等盒子模型,都是日常操作没有什么问题,如果是拖拽图片的话,会有一点小坑要踩...... 那么我们看代码: var Move_fn = {}; (function( ...
- jQuery的DOM操作实例(2)——拖拽效果&&拓展插件
一.原生JavaScript编写拖拽效果 二.jQuery编写的拖拽效果 三.在jQuery中拓展一个拖拽插件
- React.js实现原生js拖拽效果及思考
一.起因&思路 不知不觉,已经好几天没写博客了...近来除了研究React,还做了公司官网... 一直想写一个原生js拖拽效果,又加上近来学react学得比较嗨.所以就用react来实现这个拖 ...
- js拖拽效果
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- WinForm支持拖拽效果
有一个MSDN客户提问在WinForm中如何实现拖拽效果——比如在WinForm中有一个Button,我要实现的效果是拖拽这个Button到目标位置后生成一个该控件的副本. 其实这个操作主要分成三步走 ...
随机推荐
- spring-servlet.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...
- linux上的常用的系统自带命令
wikipedia 发现的分类,发现还有好多没用过.. Unix command-line interface programs and shell builtins File system ca ...
- java数字加密算法
数字加密在项目中时常会遇到,如手机号,身份证号信息等,下面小白将自己手写的数字加密算法分享给大家,可在项目中直接运用.加密规则,入参时传递一个字段时间戳 time:* 1.以字母代替数字,0-9分别为 ...
- 看看 Delphi XE2 为 VCL 提供的 14 种样式
看看 Delphi XE2 为 VCL 提供的 14 种样式 其实只提供了 13 个 vsf 样式文件, 还有默认的 Windows 样式, 共 14 种. 在空白窗体上添加 ListBox1 等控件 ...
- Python学习之==>集合
1.简介 集合也是一种数据类型,一个类似列表东西,它的特点是无序的,不重复的,也就是说集合中是没有重复数据的. 2.集合的作用 它可以把一个列表中重复的数据去掉,而不需要你再写判断 可以做关系测试,比 ...
- 如何比较两个txt文件内容的细微差别
如何比较两个txt文件内容的细微差别 https://jingyan.baidu.com/article/19020a0a1dd04a529c284272.html 听语音 | 浏览:3500 | 更 ...
- wpf datagrid tooltip
<DataGridTemplateColumn Header="购方名称" Width="260" HeaderStyle="{StaticRe ...
- Java课堂疑问解答与思考4
一. 请运行以下示例代码StringPool.java,查看其输出结果.如何解释这样的输出结果?从中你能总结出什么? 答:定义的三个字符串如果相等,系统自动创建一个,并调用这个,对于由new创建的字符 ...
- django F和Q 关键字使用
F 的使用: 想给表里每个价格加上一百就要用上F,直接加是不行的.
- Marked Ancestor
一道并查集的题目硬是被我当成线段树写了,感觉这样写虽然不是最好的,不过能a就行 http://acm.hust.edu.cn/vjudge/contest/view.action?cid=103906 ...