javaScript+jQuery+css+html——图片剪切效果(上下左右)

效果如下:


html中:

<!DOCTYPE html>
<html lang="zh-cn">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>效果图</title>
    <!-- 2.引入css -->
    <link rel="stylesheet" type="text/css" href="../css/index.css" />
    <!-- 8.引入js -->
    <script type="text/javascript" src="../js/main.js"></script>
    <script type="text/javascript" src="../js/jquery-1.8.1.min.js"></script>
    <script type="text/javascript" src="../js/jquery-ui-1.10.4.custom.min.js"></script>
</head>
<body>
    <!-- 3.放入div中方便操作,并给与id -->
    <div id="box" class="box">
        <!-- 1.加载图片 -->
        <!-- <img src="../images/紫花.jpg" /> -->
        <!-- 4.图片透明 -->
        <img src="../images/紫花.jpg" class="img1" />
        <!-- 5.加入截取狂clip -->
        <img id="img2" class="img2" src="../images/紫花.jpg" />
        <!-- 6.第三层选择框 -->
        <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>
    <!-- 7.显示 -->
    <div id="preview">
        <img id="img3" class="img3" src="../images/紫花.jpg" />
    </div>
</body>
</html>

css中:

/* 1.背景颜色 */
body {
    background: #333;
    margin: 0;
    padding: 0;
}
/* 2.设置图片位置 */
.box {
    position: absolute;
    top: 100px;
    left: 200px;
    width: 533px;
    height: 300px;
}
/* 3.图片透明 */
.img1 {
    opacity: 0.5
}
img{
	width:533px;
	height:300px;
}
/* 4.图片重叠 */
img {
    position: absolute;
    z-index: 1
}
/* 5.只显示部分 */
.img2 {
    clip: rect(0px, 200px, 200px, 0px);
}
/* 6.div边框 */
.main {
    position: absolute;
    width: 200px;
    height: 200px;
    border: 1px solid #fff;
    z-index: 2;
    /* 手型 */
    cursor: move;
}
/* 7.边框点 */
.minDiv {
    width: 8px;
    height: 8px;
    background: #fff;
    font-size: 0;
    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;
}
/* 8.显示图片div */
#preview {
    position: absolute;
    top: 100px;
    left: 800px;
    width: 533px;
    height: 300px;
}

js中:

document.onselectstart=new Function('event.returnValue=false;');
window.onload = function(){
	var boxDiv = document.getElementById('box');//外层容器
	var mainDiv = document.getElementById('main');//选择层
	var leftUpDiv = document.getElementById('left-up');//坐上角触点
	var leftDiv = document.getElementById('left');//左中间触点
	var leftDownDiv = document.getElementById('left-down');//左下角触点
	var upDiv = document.getElementById('up');//上中间触点
	var downDiv = document.getElementById('down');//下中间触点
	var rightUpDiv = document.getElementById('right-up');//右上角触点
	var rightDiv = document.getElementById('right');//右中间触点
	var rightDownDiv = document.getElementById('right-down');//右下角触点

	var ifBool = false;//判断鼠标是否按下
	var contact = "";//当前拖动的触点

/*事件区*/

	$( "#main" ).draggable({ containment: 'parent' ,drag: setChoice});
	//鼠标按下-左上角
	leftUpDiv.onmousedown = function(e){
		e.stopPropagation();
		ifBool = true;
		contact = "leftUp";
	};
	//鼠标按下-左中间
	leftDiv.onmousedown = function(e){
		e.stopPropagation();
		ifBool = true;
		contact = "left";
	};
	//鼠标按下-左下角
	leftDownDiv.onmousedown = function(e){
		e.stopPropagation();
		ifBool = true;
		contact = "leftDown";

	};
	//鼠标按下-上边
	upDiv.onmousedown = function(e){
		e.stopPropagation();
		ifBool = true;
		contact = "up";
	};
	//鼠标按下-下边
	downDiv.onmousedown = function(e){
		e.stopPropagation();
		ifBool = true;
		contact = "down";

	};
	//鼠标按下-右上角
	rightUpDiv.onmousedown = function(e){
		e.stopPropagation();
		ifBool = true;
		contact = "rightUp";
	};
	//鼠标按下-右中间
	rightDiv.onmousedown = function(e){
		e.stopPropagation();
		ifBool = true;
		contact = "right";

	};
	//鼠标按下-右下角
	rightDownDiv.onmousedown = function(e){
		e.stopPropagation();
		ifBool = true;
		contact = "rightDown";
	};
	//拖动
	window.onmousemove = function(e){
		e.stopPropagation();
		if(ifBool){
			switch(contact){
				case "leftUp":leftMove(e);upMove(e);break;
				case "left":leftMove(e);break;
				case "leftDown":leftMove(e);downMove(e);break;
				case "up":upMove(e);break;
				case "down":downMove(e);break;
				case "rightUp":rightMove(e);upMove(e);break;
				case "right":rightMove(e);break;
				case "rightDown":rightMove(e);downMove(e);break;
				default:alert("操作错误!");
			}
		var width = mainDiv.offsetWidth;
		var height = mainDiv.offsetHeight;
		setChoice();
		}
	};
	//鼠标松开
	window.onmouseup = function(e){
		ifBool = false;
		contact = "";
	};
	setChoice();//初始化选择区域可见


/*	函数区*/

	//左边拖动
	function leftMove(e){
		var x = e.clientX;//鼠标横坐标
		if(x < getPosition(boxDiv).left){
			x = getPosition(boxDiv).left;
		}
		var width = mainDiv.offsetWidth - 2;//选择层宽度
		var mainX = getPosition(leftUpDiv).left + 4;//左上角横坐标
		var addWidth = mainX - x;//拖动后应该增加的宽度
		
		//设置拖动后的宽高和位置
		mainDiv.style.width = (width + addWidth) + "px";
		mainDiv.style.left = mainDiv.offsetLeft - mainX + x + "px";
	}
	//上边拖动
	function upMove(e){
		var y = e.clientY;//鼠标纵坐标
		if(y < getPosition(boxDiv).top){
			y = getPosition(boxDiv).top;
		}
		var height = mainDiv.offsetHeight - 2;//选择层的高度
		var mainY = getPosition(leftUpDiv).top + 4;//左上角纵坐标
		var addHeight = mainY - y;//拖动后应该增加的高度
		
		//设置拖动后的宽高和位置
		mainDiv.style.height = (height + addHeight) + "px";
		mainDiv.style.top = mainDiv.offsetTop - mainY + y + "px"; //纵坐标减去增加的高度
	}
	//下边拖动
	function downMove(e){
		var y = e.clientY;//鼠标纵坐标
		if(y > getPosition(boxDiv).top + boxDiv.offsetHeight){
			y = getPosition(boxDiv).top + boxDiv.offsetHeight;
		}
		var height = mainDiv.offsetHeight - 2;//选择层的高度
		var mainY = getPosition(leftUpDiv).top + 4;//左上角纵坐标
		var addHeight = y - mainY - height;//拖动后应该增加的高度
		mainDiv.style.height = (height + addHeight) + "px";
	}
	//右边拖动
	function rightMove(e){
		var x = e.clientX;//鼠标横坐标
		if(x > getPosition(boxDiv).left + boxDiv.offsetWidth){
			x = getPosition(boxDiv).left + boxDiv.offsetWidth;
		}
		var width = mainDiv.offsetWidth - 2;//选择层宽度
		var mainX = getPosition(leftUpDiv).left + 4;//左上角横坐标
		var addWidth = x - width - mainX;//拖动后应该增加的宽度

		//设置拖动后的宽高和位置
		mainDiv.style.width = (width + addWidth) + "px";
	}
	//设置选择区域可见
	function setChoice(){
		var top = mainDiv.offsetTop;
		var right = mainDiv.offsetLeft + mainDiv.offsetWidth;
		var bottom = mainDiv.offsetTop + mainDiv.offsetHeight;
		var left = mainDiv.offsetLeft;
		document.getElementById("img2").style.clip = "rect("+top+"px,"+right+"px,"+bottom+"px,"+left+"px)";
		preview({"top":top,"right":right,"bottom":bottom,"left":left});

	}
	//获取元素的绝对位置
	function getPosition(node){
		var left = node.offsetLeft;
		var top = node.offsetTop;
		current = node.offsetParent; // 取得元素的offsetParent
		 // 一直循环直到根元素
	  while (current != null) {
		  left += current.offsetLeft;
		  top += current.offsetTop;
		  current = current.offsetParent;
	  }
		return {"left":left,"top":top};
	}

	//预览
	function preview(view){
		var previewImg = document.getElementById("img3");
		previewImg.style.top = -view.top + "px";
		previewImg.style.left = -view.left + "px";
		previewImg.style.clip = "rect("+view.top+"px,"+view.right+"px,"+view.bottom+"px,"+view.left+"px)";
	}
}




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
《Web前端开发简明教程(HTML CSS JavaScript jQuery)》是一本以HTMLCSSJavaScriptjQuery为主题的教程的PDF版本。本教程对于想要学习并入门Web前端开发的人们来说是非常实用的资源。 首先,该教程首先介绍了HTML(超文本标记语言),HTML是Web页面的基础语言,负责定义结构和内容。本教程详细介绍了HTML的标签、属性和元素,在逐步教授的过程中,读者可以了解到如何构建标准的HTML页面。 接着,教程介绍了CSS(层叠样式表),CSS用于为HTML页面添加样式和外观效果。本教程涵盖了CSS的基本语法,包括选择器、属性和值,并提供了一些实际示例来帮助读者理解如何应用样式。 然后,教程进一步深入介绍了JavaScriptJavaScript是一种脚本语言,在Web前端开发中常用于增强用户体验和操作页面元素。本教程解释了基本的JavaScript概念,如变量、数据类型、运算符和函数等,并提供了一些实例来展示如何使用JavaScript在网页上实现一些交互效果。 最后,教程介绍了jQueryjQuery是一个流行的JavaScript库,它简化了JavaScript的开发,提供了很多方便的函数和方法来操作HTML元素和处理事件。本教程讲解了jQuery的基本语法和常用函数,并提供了示例来演示如何使用jQuery来创建动态效果和响应式网页。 总的来说,《Web前端开发简明教程(HTML CSS JavaScript jQuery)》PDF是一本适合初学者的教程,它通过简单明了的语言和实例,帮助读者快速掌握Web前端开发的基本技术和工具。无论是想要进一步学习Web开发的人们,还是对前端开发感兴趣的人们,都可以从本教程中获得很多有用的知识和技能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值