原生js,图片浏览器

话不多说,直接上代码!

<!DOCTYPE html>
<html>

<head>
	<title></title>
	<style>
		/*
	图片浏览器样式
*/

		.preview-ibox {
			width: 100%;
			height: 100%;
			overflow: hidden;
			position: relative;
			cursor: pointer;
		}

		.anmins {
			transition: transform 1s ease, top 1s ease, left 1s ease;
			-moz-transition: -moz-transform 1s ease, top 1s ease, left 1s ease;
			-webkit-transition: -webkit-transform 1s ease, top 1s ease, left 1s ease;
			-o-transition: -o-transform 1s ease, top 1s ease, left 1s ease;
		}

		.preview-ibox-heard {
			position: absolute;
			top: -41px;
			width: 100%;
			background: rgba(0, 0, 0, 0.6);
			height: 40px;
			text-align: center;
			z-index: 999;
		}

		.preview-ibox-heard button {
			height: 60%;
			margin-left: 1.5%;
			margin-right: 1.5%;
			margin-top: 7px;
		}
	</style>

<body>
	<div id="preview" style="width: 500px; height: 400px;"></div>
	<script>
		var imgList = ['http://www.jq22.com/demo/vuelbt201912271700/img/t1.png', 'http://www.jq22.com/demo/vuelbt201912271700/img/t2.png', 'http://www.jq22.com/demo/vuelbt201912271700/img/t3.png', 'http://www.jq22.com/demo/vuelbt201912271700/img/t4.png', 'http://www.jq22.com/demo/vuelbt201912271700/img/t5.png'];
		imgPreview("preview", imgList);
		// 创建节点
		function dcCreate(dome) {
			var div = document.createElement("div");
			div.innerHTML = dome;
			return div.childNodes[0];
		}
		/*
			自定义图片浏览器
			preview: 图片浏览器的放置位置ID,需定义宽高
			imgList:图片url
				var imgList = [xxx/xxx.jpg, xxx/xxx.jpg, xxx/xxx.jpg];
				_.imgPreview("iboxId", imgList);
		*/
		//图片浏览器生成
		function imgPreview(iboxId, imgList) {
			if (imgList.length != 0) {
				var number = 1,
					deg = 0,
					left = 0;
				var imgWidth = document.getElementById(iboxId).clientWidth,
					imgHeight = document.getElementById(iboxId).clientHeight;
				var btnReduce = dcCreate("<button></button>"),
					btnAmplify = dcCreate("<button></button>"),
					btnLeftRevolve = dcCreate("<button></button>"),
					btnRigheRevolve = dcCreate("<button></button>"),
					btnNext = dcCreate("<button></button>"),
					butPerv = dcCreate("<button></button>"),
					butRestore = dcCreate("<button></button>");
				btnReduce.innerHTML = "缩小";
				btnReduce.addEventListener("click", function () {
					if (number > 0.1) {
						number = parseFloat((number - 0.1).toFixed(1));
						for (var i = 0; i < creDiv.childNodes.length; i++) {
							var img = creDiv.childNodes[i].childNodes[0];
							img.style.webkitTransform = "scale(" + number + ") rotate(" + deg + "deg)";
							img.style.MozTransform = "scale(" + number + ") rotate(" + deg + "deg)";
							img.style.msTransform = "scale(" + number + ") rotate(" + deg + "deg)";
							img.style.OTransform = "scale(" + number + ") rotate(" + deg + "deg)";
							img.style.transform = "scale(" + number + ") rotate(" + deg + "deg)"
						}
					}
				});
				btnAmplify.innerHTML = "放大";
				btnAmplify.addEventListener("click", function () {
					if (number < 10) {
						number = parseFloat((number + 0.1).toFixed(1));
						for (var i = 0; i < creDiv.childNodes.length; i++) {
							var img = creDiv.childNodes[i].childNodes[0];
							img.style.webkitTransform = "scale(" + number + ") rotate(" + deg + "deg)";
							img.style.MozTransform = "scale(" + number + ") rotate(" + deg + "deg)";
							img.style.msTransform = "scale(" + number + ") rotate(" + deg + "deg)";
							img.style.OTransform = "scale(" + number + ") rotate(" + deg + "deg)";
							img.style.transform = "scale(" + number + ") rotate(" + deg + "deg)"
						}
					}
				});
				btnLeftRevolve.innerHTML = "逆时针";
				btnLeftRevolve.addEventListener("click", function () {
					deg -= 10;
					for (var i = 0; i < creDiv.childNodes.length; i++) {
						var img = creDiv.childNodes[i].childNodes[0];
						img.style.webkitTransform = "scale(" + number + ") rotate(" + deg + "deg)";
						img.style.MozTransform = "scale(" + number + ") rotate(" + deg + "deg)";
						img.style.msTransform = "scale(" + number + ") rotate(" + deg + "deg)";
						img.style.OTransform = "scale(" + number + ") rotate(" + deg + "deg)";
						img.style.transform = "scale(" + number + ") rotate(" + deg + "deg)"
					}
				});
				btnRigheRevolve.innerHTML = "顺时针";
				btnRigheRevolve.addEventListener("click", function () {
					deg += 10;
					for (var i = 0; i < creDiv.childNodes.length; i++) {
						var img = creDiv.childNodes[i].childNodes[0];
						img.style.webkitTransform = "scale(" + number + ") rotate(" + deg + "deg)";
						img.style.MozTransform = "scale(" + number + ") rotate(" + deg + "deg)";
						img.style.msTransform = "scale(" + number + ") rotate(" + deg + "deg)";
						img.style.OTransform = "scale(" + number + ") rotate(" + deg + "deg)";
						img.style.transform = "scale(" + number + ") rotate(" + deg + "deg)"
					}
				});
				btnNext.innerHTML = "下一张";
				btnNext.addEventListener("click", function () {
					number = 1;
					deg = 0;
					for (var i = 0; i < creDiv.childNodes.length; i++) {
						var img = creDiv.childNodes[i].childNodes[0];
						img.style.webkitTransform = "scale(1) rotate(0)";
						img.style.MozTransform = "scale(1) rotate(0)";
						img.style.msTransform = "scale(1) rotate(0)";
						img.style.OTransform = "scale(1) rotate(0)";
						img.style.transform = "scale(1) rotate(0)";
						img.style.left = "0px";
						img.style.top = "0px"
					};
					var n = creIbox.lastChild.clientWidth - imgWidth;
					if (left < n) {
						left += imgWidth;
						creIbox.lastChild.style.webkitTransform = "translateX(-" + left + "px)";
						creIbox.lastChild.style.MozTransform = "translateX(-" + left + "px)";
						creIbox.lastChild.style.msTransform = "translateX(-" + left + "px)";
						creIbox.lastChild.style.OTransform = "translateX(-" + left + "px)";
						creIbox.lastChild.style.transform = "translateX(-" + left + "px)"
					}
				});
				butPerv.innerHTML = "上一张";
				butPerv.addEventListener("click", function () {
					number = 1;
					deg = 0;
					for (var i = 0; i < creDiv.childNodes.length; i++) {
						var img = creDiv.childNodes[i].childNodes[0];
						img.style.webkitTransform = "scale(1) rotate(0)";
						img.style.MozTransform = "scale(1) rotate(0)";
						img.style.msTransform = "scale(1) rotate(0)";
						img.style.OTransform = "scale(1) rotate(0)";
						img.style.transform = "scale(1) rotate(0)";
						img.style.left = "0px";
						img.style.top = "0px"
					};
					var n = creIbox.lastChild.clientWidth - imgWidth;
					if (left <= n && left > 0) {
						left -= imgWidth;
						creIbox.lastChild.style.webkitTransform = "translateX(-" + left + "px)";
						creIbox.lastChild.style.MozTransform = "translateX(-" + left + "px)";
						creIbox.lastChild.style.msTransform = "translateX(-" + left + "px)";
						creIbox.lastChild.style.OTransform = "translateX(-" + left + "px)";
						creIbox.lastChild.style.transform = "translateX(-" + left + "px)"
					}
				});
				butRestore.innerHTML = "还原";
				butRestore.addEventListener("click", function () {
					number = 1;
					deg = 0;
					for (var i = 0; i < creDiv.childNodes.length; i++) {
						var img = creDiv.childNodes[i].childNodes[0];
						img.style.webkitTransform = "scale(1) rotate(0)";
						img.style.MozTransform = "scale(1) rotate(0)";
						img.style.msTransform = "scale(1) rotate(0)";
						img.style.OTransform = "scale(1) rotate(0)";
						img.style.transform = "scale(1) rotate(0)";
						img.style.left = "0px";
						img.style.top = "0px"
					}
				});
				var btnIbox = dcCreate("<div class='preview-ibox-heard anmins'></div>");
				btnIbox.appendChild(butPerv);
				btnIbox.appendChild(btnAmplify);
				btnIbox.appendChild(btnLeftRevolve);
				btnIbox.appendChild(butRestore);
				btnIbox.appendChild(btnRigheRevolve);
				btnIbox.appendChild(btnReduce);
				btnIbox.appendChild(btnNext);
				var creIbox = dcCreate("<div class='preview-ibox'></div>");
				document.getElementById(iboxId).appendChild(creIbox);
				creIbox.appendChild(btnIbox);
				creIbox.addEventListener("mouseover", function () {
					var height = btnIbox.offsetHeight;
					btnIbox.style.webkitTransform = "translateY(" + height + "px)";
					btnIbox.style.msTransform = "translateY(" + height + "px)";
					btnIbox.style.MozTransform = "translateY(" + height + "px)";
					btnIbox.style.OTransform = "translateY(" + height + "px)";
					btnIbox.style.transform = "translateY(" + height + "px)"
				});
				creIbox.addEventListener("mouseout", function () {
					btnIbox.style.webkitTransform = "translateY(0px)";
					btnIbox.style.msTransform = "translateY(0px)";
					btnIbox.style.MozTransform = "translateY(0px)";
					btnIbox.style.OTransform = "translateY(0px)";
					btnIbox.style.transform = "translateY(0px)"
				});
				var creDiv = dcCreate("<div class='anmins' style='width:" + imgWidth * imgList.length + "px;height: " +
					imgHeight + "px'></div>");
				creIbox.appendChild(creDiv);
				for (key in imgList) {
					var imgDiv = dcCreate("<div style='width:" + imgWidth + "px;height:" + imgHeight +
						"px;float:left;overflow:hidden;position:relative;background:#8e8e8e'></div>");
					var creImg = dcCreate("<div class='anmins' style='width:100%;height:100%;background:url(" + imgList[key] +
						");background-size:100% 100%;position:absolute;'></div>");
					imgDiv.appendChild(creImg);
					creDiv.appendChild(imgDiv)
				};
				creIbox.addEventListener("mousedown", function (e) {
					var ev = e || event;
					var img = creDiv.childNodes[0].childNodes[0];
					var distanceX = ev.clientX - img.offsetLeft;
					var distanceY = ev.clientY - img.offsetTop;
					creIbox.onmousemove = function (ev) {
						var e = ev || win.event;
						for (var i = 0; i < creDiv.childNodes.length; i++) {
							var img = creDiv.childNodes[i].childNodes[0];
							img.style.left = e.clientX - distanceX + 'px';
							img.style.top = e.clientY - distanceY + 'px'
						}
					}
				});
				creIbox.addEventListener("mouseup", function () {
					creIbox.onmousemove = null
				})
			} else {
				throw "图片不存在!";
			}
		}
	</script>
</body>

</html>

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值