JavaScript-PC端特效(京东放大镜效果)

一、元素偏移量 offset 系列

  1. offset 概述在这里插入图片描述
    在这里插入图片描述

  2. offset 与 style 区别在这里插入图片描述

  3. 案列 : 获取鼠标在盒子内的坐标在这里插入图片描述在这里插入图片描述

  4. 案例 : 模态框拖拽在这里插入图片描述在这里插入图片描述

  5. 案列 : 仿京东放大镜在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述js 核心代码:

window.addEventListener('load', function () {
    var preview_img = document.querySelector('.preview_img');
    var mask = document.querySelector('.mask');
    var big = document.querySelector('.big');
    // 1. 当我们鼠标经过 preview_img 就显示和隐藏 mask 遮挡层 和 big 大盒子
    preview_img.addEventListener('mouseover', function () {
        mask.style.display = 'block';
        big.style.display = 'block';
    })
    preview_img.addEventListener('mouseout', function () {
        mask.style.display = 'none';
        big.style.display = 'none';
    })
    // 2. 鼠标移动的时候,让黄色的盒子跟着鼠标来走
    preview_img.addEventListener('mousemove', function (e) {
        // (1). 先计算出鼠标在盒子内的坐标
        var x = e.pageX - this.offsetLeft;
        var y = e.pageY - this.offsetTop;
        // console.log(x, y);
        // (2) 减去盒子高度 300的一半 是 150 就是我们mask 的最终 left 和top值了
        // (3) 我们mask 移动的距离
        // x- mask.offsetwidth / 2 是为了 让鼠标在盒子中间显示 类似于之前做的案例精灵天使
        var maskX = x - mask.offsetWidth / 2;
        var maskY = y - mask.offsetHeight / 2;
        // (4) 如果x 坐标小于了0 就让他停在0 的位置
        // 遮挡层的最大移动距离
        var maskMax = preview_img.offsetWidth - mask.offsetWidth;
        if (maskX <= 0) {
            maskX = 0;
        } else if (maskX >= maskMax) {
            maskX = maskMax;
        }
        if (maskY <= 0) {
            maskY = 0;
        } else if (maskY >= maskMax) {
            maskY = maskMax;
        }
        mask.style.left = maskX + 'px';
        mask.style.top = maskY + 'px';
        // 3. 大图片的移动距离 = 遮挡层移动距离 * 大图片最大移动距离 / 遮挡层的最大移动距离
        // 大图
        var bigIMg = document.querySelector('.bigImg');
        // 大图片最大移动距离
        var bigMax = bigIMg.offsetWidth - big.offsetWidth;
        // 大图片的移动距离 X Y
        var bigX = maskX * bigMax / maskMax;
        var bigY = maskY * bigMax / maskMax;
        bigIMg.style.left = -bigX + 'px';
        bigIMg.style.top = -bigY + 'px';

    })

})

二、元素可视区 client 系列在这里插入图片描述在这里插入图片描述

  1. 案例 :淘宝 flexible.js 源码分析在这里插入图片描述在这里插入图片描述

三、元素滚动 scroll 系列

  1. 元素 scroll 系列属性在这里插入图片描述在这里插入图片描述

  2. 页面被卷去的头部在这里插入图片描述

  3. 案例 : 仿淘宝固定右侧侧边栏在这里插入图片描述在这里插入图片描述

  4. 三大系列总结在这里插入图片描述在这里插入图片描述在这里插入图片描述

四、动画函数封装 (重点

  1. 动画实现原理在这里插入图片描述

  2. 动画函数简单封装在这里插入图片描述

  3. 动画函数给不同元素记录不同定时器在这里插入图片描述

  4. 缓动效果原理在这里插入图片描述

  5. 动画函数多个目标值之间移动在这里插入图片描述

  6. 动画函数添加回调函数 在这里插入图片描述

  7. 动画函数封装到单独JS文件里面在这里插入图片描述

五、常见网页特效案例

  1. 网页轮播图在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
    在这里插入图片描述在这里插入图片描述在这里插入图片描述
    在这里插入图片描述

  2. 节流阀在这里插入图片描述

  3. 返回顶部在这里插入图片描述在这里插入图片描述

  4. 筋斗云案列在这里插入图片描述在这里插入图片描述
    六、有关案列的源码以及资料链接:

https://gitee.com/pop–sheep/java-script-pc-special-effects/tree/master/

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值