<!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>
原生js,图片浏览器
最新推荐文章于 2024-01-08 11:16:39 发布