利用jQuery插件imgAreaSelect实现图片上传裁剪(同步显示图像位置信息)


Posted in Javascript onDecember 02, 2016

 利用jQuery插件imgAreaSelect实现图片上传裁剪(同步显示图像位置信息)

<body>
 <div class="container demo">
  <div class="big">
   <p class="instructions">大图预览</p>
   <div class="bigframe">
    <img width="300" height="300" src="images/resized_pic.jpg" alt="" />
   </div>
  </div>
  <div class="small">
   <p>小图缩放</p>
    <div class="smallframe" >
    <div class="pre" id="preview">
     <img src="images/resized_pic.jpg" alt="" />
    </div>
   </div>
  </div>
 </div>
</body>

先总结一下:

最近练手,写了一些小东西,都是网上已有的成熟的JQ或JS,但在练手的过程中,我发现,很多应用,其实最后,都是归根到元素的宽高变化,位置变化,通过事件或算法,最后形成了效果或应用。

如果大家看到一些很炫的东西效果,其实都可以往宽高,位置,显示隐藏,这些方面去分析。一步一步深入。是一点个人体会。好吧,进入正题。

如何让左边选择区域的图像信息和右边的同步显示出来?

一、右边显示和左边同步:

左边选择一块区域,那么右边要和这个区域的图像信息相同?其实质,也就是要移动右边的图像,让移动后的右边图片,在显示区域当中,显示的图像信息,正好和左边的选择区域一样。

二、如何移动右边图像

要移动图片,也就是移动一个元素,可以有改变TOP LEFT值,这是在有绝对或相对定位的情况下。而这里,没有。

所以用到改变margin-top margin-left值的方式。

三、移动公式

利用jQuery插件imgAreaSelect实现图片上传裁剪(同步显示图像位置信息)

上图中:黑色:图片,白色:选择区,红色:起始点,绿色:起始点的横纵坐标值; 黄色为:右边图片的margin-top,margin-left

假设:左边图片和右边图片,一样大小,宽和高都一样。我要在右边显示出左边白色区域的图像信息,就需要把右边图片的

margin-top值设为:红点的Y坐标值

margin-left值设为:红点的X坐标值

即:

margin-top = x;
margin-left = Y;

但是现在假设不成立,因为右边图片的大小,是随时变化的(第一篇分析中有);

而变化是根据一个比例值来的。

所以这里不管是图片放大,还是缩小,原来

都应该乘以这个放大或缩小的比例值:

margin-top = scaleX*x;
margin-left = scaleX*Y;

好了,现在可以得到移动的位置值了。也就是说左边和右边可以同步显示图像信息了。

以上就是本文的全部内容,希望对大家有所帮助,有兴趣的朋友可以看下《利用jQuery插件imgAreaSelect实现图片上传裁剪(放大缩小)》,谢谢对三水点靠木的支持!

Javascript 相关文章推荐
JavaScript 新手24条实用建议[TUTS+]
Jun 21 Javascript
firefox下jQuery UI Autocomplete 1.8.*中文输入修正方法
Sep 19 Javascript
基于JQuery实现的Select级联
Jan 27 Javascript
node.js中的path.delimiter方法使用说明
Dec 09 Javascript
jQuery实现购物车计算价格功能的方法
Mar 25 Javascript
JavaScript处理解析JSON数据过程详解
Sep 11 Javascript
JavaScript性能优化之小知识总结
Nov 20 Javascript
jQuery插件实现可输入和自动匹配的下拉框
Oct 24 Javascript
vuejs使用FormData实现ajax上传图片文件
Aug 08 Javascript
Three.js利用orbit controls插件(轨道控制)控制模型交互动作详解
Sep 25 Javascript
微信小程序如何利用getCurrentPages进行页面传值
Jul 01 Javascript
vue项目中js-cookie的使用存储token操作
Nov 13 Javascript
有关suggest快速删除后仍然出现下拉列表的bug问题
Dec 02 #Javascript
Vue.js路由组件vue-router使用方法详解
Dec 02 #Javascript
搭建Bootstrap离线文档的方法
Dec 02 #Javascript
巧用Javascript的逻辑运算符
Dec 02 #Javascript
Vue.js第四天学习笔记(组件)
Dec 02 #Javascript
Javascript之面向对象--接口
Dec 02 #Javascript
Javascript之面向对象--封装
Dec 02 #Javascript
You might like
常用的PHP数据库操作方法(MYSQL版)
2011/06/08 PHP
Pain 全世界最小最简单的PHP模板引擎 (普通版)
2011/10/23 PHP
PHP 解决session死锁的方法
2013/06/20 PHP
PHP中HTML标签过滤技巧
2014/01/07 PHP
php中用memcached实现页面防刷新功能
2014/08/19 PHP
php通过asort()给关联数组按照值排序的方法
2015/03/18 PHP
php采集中国代理服务器网的方法
2015/06/16 PHP
PHP使用缓存即时输出内容(output buffering)的方法
2015/08/03 PHP
php-fpm开启状态统计的方法详解
2017/06/23 PHP
PHP 进度条函数的简单实例
2017/09/19 PHP
Yii框架小部件(Widgets)用法实例详解
2020/05/15 PHP
在网站上应该用的30个jQuery插件整理
2011/11/03 Javascript
节点的插入之append()和appendTo()的用法介绍
2014/01/13 Javascript
js鼠标滑轮滚动事件绑定的简单实例(兼容主流浏览器)
2014/01/14 Javascript
javascript结合Canvas 实现简易的圆形时钟
2015/03/11 Javascript
JavaScript动态改变div属性的实现方法
2015/07/22 Javascript
javascript实现很浪漫的气泡冒出特效
2020/09/05 Javascript
javaScript 连接打印机,打印小票的实例
2017/12/29 Javascript
jQuery实现获取动态添加的标签对象示例
2018/06/28 jQuery
如何安装控制器JavaScript生成插件详解
2018/10/21 Javascript
如何写好一个vue组件,老夫的一年经验全在这了(推荐)
2019/05/18 Javascript
layer的prompt弹出框,点击回车,触发确定事件的方法
2019/09/06 Javascript
[10:53]2018DOTA2国际邀请赛寻真——EG
2018/08/11 DOTA
浅谈Python实现Apriori算法介绍
2017/12/20 Python
基于Python Numpy的数组array和矩阵matrix详解
2018/04/04 Python
Pandas GroupBy对象 索引与迭代方法
2018/11/16 Python
基于python requests selenium爬取excel vba过程解析
2020/08/12 Python
HTML页面中添加Canvas标签示例
2015/01/01 HTML / CSS
法国发饰品牌:Alexandre De Paris
2018/12/04 全球购物
纪检监察建议书
2014/05/19 职场文书
乡镇党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
女生抽烟检讨书
2014/10/05 职场文书
2014年文艺部工作总结
2014/11/17 职场文书
公司财务人员岗位职责
2015/04/14 职场文书
2016大学生优秀志愿者事迹材料
2016/02/25 职场文书
python numpy中multiply与*及matul 的区别说明
2021/05/26 Python