js图片裁切
js的图片裁切只支持移动和右下拉
html部分
<div id="box" class="box">
<img class="img1" src="1.jpg"/>
<div class="main" id="main">
<div id="left-up" class="minDiv left-up"></div>
<div id="left" class="minDiv left"></div>
<div id="left-down" class="minDiv left-down"></div>
<div id="up" class="minDiv top"></div>
<div id="right-up" class="minDiv right-up"></div>
<div id="right" class="minDiv right"></div>
<div id="right-down" class="minDiv right-down"></div>
<div id="down" class="minDiv bottom"></div>
</div>
</div>
<div id="preview">
<img id="img3" class="img3" src="1.jpg" style="top: 0px; left: 0px; clip: rect(0px 202px 202px 0px);" />
</div>
css部分
body{background: #333;margin:;padding:;}
.box{position: absolute;top:100px;left:200px;width:460px;height:360px;}
.main{position: absolute;width: 200px;height: 200px;border:1px solid #fff;z-index:;cursor: move;opacity: .3;background: #fff;}
.minDiv{width:8px;height:8px;background: #fff;font-size:;position: absolute;}
.minDiv.left-up{top:-4px;left: -4px;cursor:nw-resize;}
.minDiv.left{top:50%;margin-top:-4px;left: -4px;cursor:e-resize;}
.minDiv.left-down{bottom:-4px;left: -4px;cursor:sw-resize;}
.minDiv.top{top:-4px;left: 50%;margin-left:-4px;cursor:n-resize;}
.minDiv.right-up{top:-4px;right: -4px;cursor:ne-resize;}
.minDiv.right{top:50%;margin-top:-4px;right: -4px;cursor:e-resize;}
.minDiv.right-down{bottom:-4px;right: -4px;cursor:se-resize;}
.minDiv.bottom{bottom:-4px;left: 50%;margin-left:-4px;cursor:s-resize;}
img{position: absolute;z-index:}
.img2{clip:rect(0px,20px,100px,100px);}
#preview{position: absolute;top:100px;left:680px;width:460px;height:360px;}
#preview #img3{position: absolute;top:;left:;}
js部分
var main=document.getElementById('main');
var box=document.getElementById('box');
var rightdown=document.getElementById('right-down');
var leftup=document.getElementById('left-up');
var img3=document.getElementById('img3');
var cx='';
var cy='';
daer(main,main,'yd');//移动
daer(rightdown,main,'yx');//右下拉
function daer(obj,main,ws){
obj.onmousedown=function(e){
var e=window.event || e;//鼠标按下的坐标
cx=e.clientX-box.offsetLeft;
cy=e.clientY-box.offsetTop;
console.log(cx,cy);
document.onmousemove=function(e){
var e=window.event || e;//移动的坐标
if(ws=='yx'){
zcx=e.clientX-box.offsetLeft-main.offsetLeft;
zcy=e.clientY-box.offsetTop-main.offsetTop;
cx=main.offsetLeft;
cy=main.offsetTop;
main.style.width=zcx+'px';
main.style.height=zcy+'px';
img3.style.clip="rect("+cy+"px,"+parseInt(zcx+cx)+"px,"+parseInt(zcy+cy)+"px,"+cx+"px)";//clip裁切属性
}else if(ws=='yd'){
zcx=e.clientX-box.offsetLeft-main.offsetWidth/2;
zcy=e.clientY-box.offsetTop-main.offsetHeight/2;
cxw=main.offsetWidth;
cyh=main.offsetHeight;
main.style.top=zcy+'px';
main.style.left=zcx+'px';
img3.style.top=-zcy+'px';
img3.style.left=-zcx+'px';
img3.style.clip="rect("+zcy+"px,"+parseInt(cxw+zcx)+"px,"+parseInt(cyh+zcy)+"px,"+zcx+"px)";
}
}
document.onmouseup=function(e){
var e=window.event || e;//鼠标抬起的坐标
if(ws=='yx'){
cx=main.offsetLeft;
cy=main.offsetTop;
}else if(ws=='yd'){
cx=e.clientX-box.offsetLeft-main.offsetWidth/2;
cy=e.clientY-box.offsetTop-main.offsetHeight/2;
}
cxw=main.offsetWidth;
cyh=main.offsetHeight;
console.log(cx,cy,cxw,cyh);//cx是x坐标,cy是y坐标,cxw是宽,cyh是高
document.onmousemove=null;
}
stopEvt(e);
}
}
//阻止冒泡
function stopEvt(e) {
e = e || window.event;
if(e.stopPropagation) {
e.stopPropagation();
} else {
e.cancelBubble = true;
}
}
效果图

js图片裁切的更多相关文章
- 兼容好的JS图片上传预览代码
转 : http://www.codefans.net/articles/1395.shtml 兼容好的JS图片上传预览代码 (谷歌,IE11) <html xmlns="http:/ ...
- JS图片自动和可控的轮播切换特效
点击这里查看效果:http://hovertree.com/texiao/js/1.htm HTML文件代码如下: <!DOCTYPE html> <html xmlns=" ...
- Javascript图片裁切
最近浏览了不少网站的图片裁切效果,大部分的做法如下图所示(借用一张脚本之家的图片),通过改变裁切框的大小来选取合适的位置. 但本文介绍的是另外一种裁切方式,裁切框由开发者决定,图片大小由用户决定,通过 ...
- Spring MVC程序中得到静态资源文件css,js,图片
转载自:http://www.blogjava.net/fiele/archive/2014/08/24/417283.html 用 Spring MVC 开发应用程序,对于初学者有一个很头疼的问题, ...
- JS图片延迟加载分析及简单的demo
JS图片延迟加载 图片延迟加载也称 "懒加载",通常应用于图片比较多的网页,比如 "美丽说首页","蘑菇街"等一些导购网站上用的比较多,或者 ...
- Spring MVC程序中得到静态资源文件css,js,图片文件的路径问题总结
上一篇 | 下一篇 Spring MVC程序中得到静态资源文件css,js,图片 文件的路径 问题总结 作者:轻舞肥羊 日期:2012-11-26 http://www.blogjava.net/fi ...
- Android实现图片裁切
介绍 在应用开发中,如果涉及到个人信息,头像一般是不可避免的,类似这种情况,我们就需要用到图片裁切的功能,实现头像裁切,然后上传给服务器. 一般裁切的做法就是图层叠加选取框,然后根据坐标,计算裁切区域 ...
- 图片裁切插件jCrop的使用心得(三)
在这一篇里,我来具体讲讲代码该如何写. 下面是jCrop的初始化代码 //图片裁剪插件Jcrop初始化 function initJcrop() { // 图片加载完成 document.getEle ...
- 图片裁切插件jCrop的使用心得(二)
上一篇简单的介绍了一下开发的背景以及一些学习资料,下面开始介绍如何上手. 一.下载jCrop http://deepliquid.com/content/Jcrop_Download.html 直接去 ...
随机推荐
- 装配SpringBean(五)--注解装配之自动装配
在spring ioc容器中,spring要先完成bean的定义和生成,然后需要需要注入的资源,在上一篇的扫描组件中就是这样实现的.而自动装配中我们只需要定义和生成一个bean,发现bean的过程将由 ...
- Java常用的数据结构
collection : List:arrayList,linkedList,vector set:treeSet ,hashSet; map: hashMap treeMap linkedHashM ...
- Python实例4- 列表到字典的函数,针对好玩游戏物品清单
假设征服一条龙的战利品表示为这样的字符串列表: dragonLoot = ['gold coin', 'dagger', 'gold coin', 'gold coin', 'ruby'] 写一个名为 ...
- Linux 7.X 解锁用户账号
Linux 7.X 解锁用户账号 使用指令:sudo passwd -u tomcat ,解锁. 但是会有如下提示信息: 因为 55 失败登录而锁定账户 此时,需执行指令:pam_tally2 -u ...
- 线性求所有数模p的乘法逆元
推理: 假如当前计算的是x在%p意义下的逆元,设$p=kx+y$,则 $\Large kx+y\equiv 0(mod\ p)$ 两边同时乘上$x^{-1}y^{-1}$(这里代表逆元) 则方程变为$ ...
- vim编辑器操作②
本文主要介绍vim的常用编辑命令: 字符编辑: x:删除光标所在处的字符: #x:删除光标所在处起始的#个字符: 替换命令: r:替换光标所在处的字符: rCHAR; 例如:替换list中的l为大写L ...
- 洛谷P3298 泉
时空限制 1000ms / 128MB 题目描述 作为光荣的济南泉历史研究小组中的一员,铭铭收集了历史上x个不同年份时不同泉区的水流指数,这个指数是一个小于. 2^30的非负整数.第i个年份时六个泉区 ...
- C++使用stringstream分割字符串
在这里查看getline的函数声明如下: 可以看到,第三个参数delim是分隔符,可以指定不同的分隔符,如果不指定的话就默认是'\n'. 举个例子:
- fastjson string[]转 json字符串
@RequestMapping(value = "/friendlink_list/province_list", produces = {"application/js ...
- CSS利用filter/opacity实现背景透明
先看看众所周知的解决方案 如果我们想要一个半透明背景,有两种实现方式: 1.利用CSS和opacity属性 .opacity { filter:alpha(opacity=);/*IE浏览器*/ op ...