In diesem Artikel finden Sie eine detaillierte Analyse der Methode zur Verwendung von JQuery zur Erzielung des Lupeneffekts sowie der Codefreigabe. Wenn Sie interessiert sind, können Sie es lernen.
Zwei in JQuery geschriebene Lupeneffekte ohne Verwendung von Plug-Ins. Konditionierung und Klarheit des Denkens. Da es nicht objektorientiert geschrieben ist, ist es für Anfänger leichter zu verstehen. Schauen wir uns ohne weiteres den Code an. Die Bilder werden hier nicht hochgeladen, Sie können sie selbst finden. Es ist am besten, das Verhältnis zu finden, damit die Wirkung besser ist.
<body> <p id="father"> <p id="container"> <img src="img/400_1.jpg" style="display: block;"> <img src="img/400_2.jpg" > <p class="shade"></p> </p> <p class="small first"><img src="img/50_1.jpg"></p> <p class="small second"><img src="img/50_2.jpg"></p> </p> <p class="big"> <img src="img/800_1.jpg" style="display: block;"> <img src="img/800_2.jpg"> </p> </body>
CSS-Code
*{padding: 0; margin: 0;} #father .small{width: 50px; height: 50px; border: 2px solid #ccc; bottom: 0; position: absolute;} #father .second{left: 70px;} .third{left: 140px;} #father{position: relative; top: 100px; left: 50px; height: 460px;} #container{position: absolute; width: 400px; height: 400px;} #container img{position: absolute; display: none;} .shade{width: 200px; height: 200px; position: absolute; background: #000; opacity: 0.4; top: 0; left: 0; display: none;} .big{width: 400px; height: 400px; position: absolute; top: 100px; overflow: hidden; left: 500px; display: none;} .big img{width: 800px; height: 800px; position: absolute; display: none;}
js-Code
<script type="text/javascript" src='js/jquery-1.12.4.min.js'></script> <script type="text/javascript"> $(function () { changePic('.first',0); changePic('.second',1); var shadeWidth = $('.shade').width(),//阴影的宽度 shadeHeight = $('.shade').height(),//阴影的高度 middleWidth = $('#container').width(),//容器的宽度 middleHeight = $('#container').height(),//容器的高度 bigWidth = $('.big').width(),//放大图片盒子的宽度 bigHeight = $('.big').height(),//放大图片盒子的高度 rateX = bigWidth / shadeWidth,//放大区和遮罩层的宽度比例 rateY = bigHeight / shadeHeight;//放大区和遮罩层的高度比例 //当鼠标移入与移出时阴影与放大去显现/消失 $('#container').hover(function() { $('.shade').show(); $('.big').show(); }, function() { $('.shade').hide(); $('.big').hide(); }).mousemove(function(e) {//当鼠标移动时,阴影和放大区图片进行移动 //记录下光标距离页面的距离 var x = e.pageX, y = e.pageY; //设置遮罩层的位置 $('.shade').offset({ top: y-shadeHeight/2, left: x-shadeWidth/2 }); //获取遮罩层相对父元素的位置 var cur = $('.shade').position(), _top = cur.top, _left = cur.left, hdiffer = middleHeight - shadeHeight, wdiffer = middleWidth - shadeWidth; if (_top < 0) _top = 0; else if (_top > hdiffer) _top = hdiffer; if (_left < 0) _left = 0; else if (_left > wdiffer) _left =wdiffer; //判断完成后设置遮罩层的范围 $('.shade').css({ top: _top, left: _left }); //设置放大区图片移动 $('.big img').css({ top: - rateY*_top, left: - rateX*_left }); });; //封装的改变图片显示的函数 function changePic (element,index) { $(element).click(function() { $('#container img').eq(index).css('display', 'block').siblings().css('display', 'none'); $('.big img').eq(index).css('display', 'block').siblings().css('display', 'none'); }); } });
Das Obige wird häufig verwendet, das Folgende wird basierend darauf erweitert das Originalbild
htm
<body> <p id="father"> <p id="container"> <img src="img/400_1.jpg" style="display: block;"> <img src="img/400_2.jpg" > <img src="img/400_3.jpg" > <p class="shade"> <img src="img/800_1.jpg" style="display: block;"> <img src="img/800_2.jpg"> <img src="img/800_3.jpg"> </p> </p> <p class="small first"><img src="img/50_1.jpg"></p> <p class="small second"><img src="img/50_2.jpg"></p> <p class="small third"><img src="img/50_3.jpg"></p> </p> </body>
CSS-Code
*{padding: 0; margin: 0;} #father .small{width: 50px; height: 50px; border: 2px solid #ccc; bottom: 0; position: absolute;} #father .second{left: 70px;} .third{left: 140px;} #father{position: relative; top: 100px; left: 50px; height: 460px;} #container{position: absolute; width: 400px; height: 400px;} #container img{position: absolute; display: none;} .shade{width: 200px; height: 200px; position: absolute; top: 0;left: 0; display: none; border-radius: 50%; overflow: hidden; background: #000;} .shade img{display: none; width: 800px; height: 800px; position: absolute;}
js-Code
<span style="white-space:pre"> </span><script type="text/javascript" src='js/jquery-1.12.4.min.js'></script> <script type="text/javascript"> $(function () { changePic('.first',0); changePic('.second',1); changePic('.third',2); var shadeWidth = $('.shade').width(),//阴影的宽度 shadeHeight = $('.shade').height(),//阴影的高度 middleWidth = $('#container').width(),//容器的宽度 middleHeight = $('#container').height(),//容器的高度 bigImgWidth = $('.shade img').width(),//放大图片盒子的宽度 bigImgHeight = $('.shade img').height(),//放大图片盒子的高度 rateX = bigImgWidth / middleWidth,//放大区和遮罩层的宽度比例2 rateY = bigImgHeight / middleHeight;//放大区和遮罩层的高度比例2 //当鼠标移入与移出时阴影与放大去显现/消失 $('#container').hover(function() { $('.shade').show(); $('.big').show(); }, function() { $('.shade').hide(); $('.big').hide(); }).mousemove(function(e) {//当鼠标移动时,阴影和放大区图片进行移动 //记录下光标距离页面的距离 var x = e.pageX, y = e.pageY; //设置遮罩层的位置 $('.shade').offset({ top: y-shadeHeight/2, left: x-shadeWidth/2 }); //获取遮罩层相对父元素的位置 var cur = $('.shade').position(), _top = cur.top, _left = cur.left, hdiffer = middleHeight - shadeHeight, wdiffer = middleWidth - shadeWidth; if (_top < 0) _top = 0; else if (_top > hdiffer) _top = hdiffer; if (_left < 0) _left = 0; else if (_left > wdiffer) _left =wdiffer; //判断完成后设置遮罩层的范围 $('.shade').css({ top: _top, left: _left }); //设置放大区图片移动 $('.shade img').css({ top: - _top*rateY*3/2, left: - _left*rateX*3/2 }); });; //封装的改变图片显示的函数 function changePic (element,index) { $(element).click(function() { $('#container img').eq(index).css('display', 'block').siblings().css('display', 'none'); $('.shade img').eq(index).css('display', 'block').siblings().css('display', 'none'); }); } }); <span style="white-space:pre"> </span></script>
Das Obige habe ich für alle zusammengestellt und hoffe, dass es in Zukunft für alle hilfreich sein wird.
Verwandte Artikel:
So implementieren Sie benutzerdefinierte globale Methoden in Vue
So implementieren Sie die globale Registrierung und die lokale Registrierung in Vue-Komponenten
So ändern Sie den Projektnamen über das Vue-Cli+Webpack-Projekt
Das obige ist der detaillierte Inhalt vonImplementieren Sie die Lupe mithilfe der JQuery-Technologie. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!