[JavaScript] 仿京东放大镜案例

第三个模块:移动黄色遮挡层,大图片跟随移动功能。**

代码在文章末尾,为方便理解先给大家对本例进行一下讲解:

第一部分:

[JavaScript] 仿京东放大镜案例_第1张图片

preview_img 代表装手机图片的盒子 ,mask代表用来遮罩的淡黄色盒子,big代表用来装放大效果手机图片的大盒子

那么显而易见第一个模块主要就是做一个显示与隐藏的效果

然后重头戏,第二个模块就来了

重点部分第二个模块解析:

第二个模块主要是做一个黄色的遮挡层跟随鼠标功能。

[JavaScript] 仿京东放大镜案例_第2张图片

把鼠标坐标给遮挡层不合适。因为遮挡层坐标以父盒子为准。

首先是获得鼠标在盒子的坐标。之后把数值给遮挡层做为left和top值。

此时用到鼠标移动事件,但是还是在小图片盒子内移动。

我们发现,遮挡层位置不对,需要再减去盒子自身高度和宽度的一半。

遮挡层不能超出小图片盒子范围。如果小于零,就把坐标设置为0,如果大于遮挡层最大的移动距离,就把坐标设置为最大的移动距离

遮挡层的最大移动距离:小图片盒子宽度减去遮挡层盒子宽度

第三个模块:

移动黄色遮挡层,大图片跟随移动功能。并且求大图片的移动距离公式

[JavaScript] 仿京东放大镜案例_第3张图片

主要最后的式子里是-bigx和-bigy,因为放大镜效果是当我们鼠标在图片上往右走时,big盒子里的大图片实际上是往左走的。所以要加负号

代码示例:

window.addEventListener(‘load’,function() {

var preview_img = this.document.querySelector(‘.preview_img’);

var mask = this.document.querySelector(‘.mask’);

var big = this.document.querySelector(‘.big’);

//当鼠标经过preview_img 就显示和隐藏mask遮挡层和big大盒子

preview_img.addEventListener(‘mouseover’,function() {

mask.style.display = ‘block’;

big.style.display = ‘block’;

})

preview_img.addEventListener(‘mouseout’,function(){

mask 《大厂前端面试题解析+Web核心总结学习笔记+企业项目实战源码+最新高清讲解视频》无偿开源 徽信搜索公众号【编程进阶路】 .style.display = ‘none’;

big.style.display = ‘none’;

})

//2.鼠标移动的时候,让黄色的盒子跟着鼠标来走

preview_img.addEventListener(‘mousemove’,function(e) {

//先计算出鼠标在盒子内的坐标

var x = e.pageX - this.offsetLeft;

var y = e.pageY - this.offsetTop;

//盒子高度300的一半是150

//我们mask移动的距离

var maskx = x - mask.offsetWidth / 2;

var masky = y - mask.offsetHeight / 2

//如果x坐标小于0就让他停在0的位置

//maskmax遮挡层最大移动距离

你可能感兴趣的