Heim > Web-Frontend > js-Tutorial > Nativer JS-Code erzielt einen Bildvergrößerungseffekt

Nativer JS-Code erzielt einen Bildvergrößerungseffekt

高洛峰
Freigeben: 2016-12-08 13:56:05
Original
1074 Leute haben es durchsucht

Heute werde ich einen Bildverstärkereffekt vorstellen, den ich in js geschrieben habe. Tatsächlich sind ihre Prinzipien ähnlich, um die entsprechenden Einstellungen für die beiden Bilder vorzunehmen schließlich in verschiedenen Positionen angezeigt, wodurch letztendlich ein Vergrößerungseffekt erzielt wird.

Der erste ist ein Lupeneffekt, den ich auf der Taobao-Einkaufsseite nachgeahmt habe. Wenn die Maus über das Produktbild bewegt wird, erscheint ein rechteckiger Bereich auf dem Bild, und dieser Bereich ist der Bereich, den Sie haben hineinzoomen möchten. Dann erscheint auf der rechten Seite des Produktbildes ein vergrößertes Produktbild. Bei dieser Vergrößerungsmethode müssen Sie lediglich das Vergrößerungsverhältnis berechnen und dann den entsprechenden Vergrößerungseffekt erzielen, indem Sie die Werte scrollLeft und scrollTop des Vergrößerungsbereichs ändern.

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>图片放大器</title>
<style media="screen">
*{
margin: 0;
padding: 0;
}
/*可视区域的父级标签*/
.wrap{
width: 400px;
height:auto;
border: 1px solid black;
display: inline-block;
position: absolute;
left: 0;
top: 0;
}
.wrap>img{
width: 100%;
height: auto;
}
/*锁定放大的矩形区域*/
.box{
border: 1px solid black;
width: 100px;
height: 100px;
background: rgba(0, 0, 0, 0.5);
opacity: 0.8;
position: absolute;
cursor: pointer;
display: none;
}
/*要显示放大图片的父级*/
.main{
width: 700px;
height: 700px;
margin-left: 420px;
overflow:hidden;
display:none;
position: absolute;
top: 0;
}
.main>img{
width:2800px;
height:auto;
}
</style>
</head>
<body>
<div class="wrap">
<img src="dog.jpg" alt="" />
<div class="box"></div>
</div>
<div class="main">
<img src="dog.jpg"alt="" />
</div>
<script type="text/javascript">
//获取四个对象
var wrap=document.querySelector(&#39;.wrap&#39;);
var box=document.querySelector(&#39;.box&#39;);
var main=document.querySelector(&#39;.main&#39;);
var mainImg=document.querySelector(&#39;.main img&#39;);
//添加移动事件
wrap.onmousemove=function(){
//鼠标移入可视图片后出现 锁定放大区域及放大图片
box.style.display=&#39;block&#39;;
main.style.display=&#39;block&#39;;
var event=window.event || event;
//获取鼠标距离可视区域边缘的偏移量
var disx=event.clientX-box.offsetWidth/2;
var disy=event.clientY-box.offsetHeight/2;
//矩形区域的最大可移动范围
var distanceMaxX=wrap.offsetWidth-box.offsetWidth;
var distanceMaxY=wrap.offsetHeight-box.offsetHeight;
// 判断让锁定放大的矩形区域不能出框
if (disx<=0) {
disx=0;
}
if (disy<=0) {
disy=0;
}
if(disx>=distanceMaxX) {
disx=distanceMaxX;
}
if(disy>=distanceMaxY) {
disy=distanceMaxY;
}
box.style.left=disx+&#39;px&#39;;
box.style.top=disy+&#39;px&#39;;
 
//获取放大比例
var scalex=box.offsetLeft/distanceMaxX;
var scaley=box.offsetTop/distanceMaxY;
main.scrollLeft=(mainImg.clientWidth-main.clientWidth)*scalex;
main.scrollTop=(mainImg.clientHeight-main.clientHeight)*scaley;
}
 
//添加移出事件
wrap.onmouseout=function(){
box.style.display=&#39;none&#39;;
main.style.display=&#39;none&#39;;
}
</script>
</body>
</html>
Nach dem Login kopieren

Effektvorschau:

Nativer JS-Code erzielt einen Bildvergrößerungseffekt

Die zweite besteht darin, das Originalbild direkt zu vergrößern, z Die Lupe ist die gleiche wie oben. Es gibt keinen Unterschied zwischen den vorherigen Methoden, außer dass am Ende kein sichtbarer Bereich dafür platziert werden muss Wenn Sie den linken und oberen Wert des vergrößerten Bereichs ändern, werden die entsprechenden linken und oberen Werte des Bildes automatisch gleichzeitig geändert, um einen synchronen Verstärkungseffekt zu erzielen 🎜>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>放大镜</title>
<style type="text/css">
.main{
width: 500px;
height: 570px;
border: 2px solid black;
position: relative;
/*overflow: hidden;*/
}
#img1{
width: 100%;
height: 100%;
}
.box{
width: 200px;
height: 200px;
border-radius: 200px;
/*border: 1px solid black;*/
display: none;
position: absolute;
overflow: hidden;
cursor:move;
}
//放大图片 给绝对定位让移动时它也能跟着移动
实现和我们锁定的区域同步
#img2{
width: 1200px;
height: 1400px;
position: absolute;
/*left: 0;
top: 0;*/
/*display: none;*/
}
</style>
</head>
<body>
<div class="main">
<img  id="img1" src="dog.jpg"/ alt="Nativer JS-Code erzielt einen Bildvergrößerungseffekt" >
<div class="box">
<img  id="img2" src="dog.jpg"/ alt="Nativer JS-Code erzielt einen Bildvergrößerungseffekt" >
</div>
</div>
</body>
</html>
<script type="text/javascript">
var main=document.querySelector(&#39;.main&#39;);
var box=document.querySelector(&#39;.box&#39;);
var boximg=document.querySelector(&#39;#img2&#39;);
//添加鼠标移动事件
main.addEventListener(&#39;mousemove&#39;,move,false);
function move(){
//显示放大的圆形区域
box.style.display=&#39;block&#39;;
var event=window.event||event;
//获取鼠标距离可视区域边缘的偏移量
var disx=event.clientX-box.offsetWidth/2;
var disy=event.clientY-box.offsetHeight/2;
var dismax=main.offsetWidth-box.offsetWidth;
var dismay=main.offsetHeight-box.offsetHeight;
//矩形区域的最大可移动范围
if (disx<=0) {
disx=0;
}
if (disx>=dismax) {
disx=dismax-2;
}
if(disy<=0){
disy=0;
}
if(disy>=dismay){
disy=dismay-2;
}
//当你移动的时候修改圆形区域的left以及 top值。
box.style.left=disx+&#39;px&#39;;
box.style.top=disy+&#39;px&#39;;
// var scalx=main.offsetWidth/box.offsetWidth
// var scaly=main.offsetHeight/box.offsetHeight;
//同理当你移动时放大的图片它的图片也要修改left和top值
boximg.style.left=-event.clientX*2+&#39;px&#39;;
boximg.style.top=-event.clientY*2+&#39;px&#39;;
// box.scrollLeft=(boximg.offsetWidth-box.offsetWidth);
// box.scrollTop=(boximg.offsetHeight-box.offsetHeight);
}
// 添加鼠标移出事件
main.addEventListener(&#39;mouseout&#39;,out,false);
function out(){
box.style.display=&#39;none&#39;;
}
</script>
Nach dem Login kopieren

Effektvorschau:

Nativer JS-Code erzielt einen Bildvergrößerungseffekt

Verwandte Etiketten:
js
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage