app开发定制js实现放大镜效果(图片放大)—JavaScript

app开发定制今天来做一个非常常见app开发定制且有意思的的案例,app开发定制就是我们的鼠标经过图app开发定制片放大的一个效果!

app开发定制具体实现的效果看下面这张图 

案例分析:

  1. 黄色的遮挡层跟随鼠标功能。

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

  3. 首先是获得鼠标在盒子的坐标。

  4. 之后把数值给遮挡层做为left 和top值。

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

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

  7. 遮挡层不能超出小图片盒子范围。

  8. 如果小于零,就把坐标设置为0

  9. 如果大于遮挡层最大的移动距离,就把坐标设置为最大的移动距离

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

这种类似放大镜的效果很多朋友肯定以为是一张图片的放大效果,其实我们这个地方是准备了两张图片,鼠标经过小图移动大图,这种神奇的效果就实现了。接下来我们仔细来分析一下这个效果该怎么写代码!

 首先还是老规矩哈,在 body 里面把 html 框架搭好,引入两张图片。

  1. <div class="box">
  2. <img src="images/small.jpg" alt="" class="small">
  3. <div class="yy"></div>
  4. <div class="big">
  5. <img src="images/big.jpg" alt="">
  6. </div>
  7. </div>

这样写好了我们看不出任何效果,当然需要 css 的渲染!!!

  1. <style>
  2. .box {
  3. position: relative;
  4. width: 350px;
  5. height: 350px;
  6. }
  7. .yy {
  8. position: absolute;
  9. top: 0;
  10. left: 0;
  11. width: 250px;
  12. height: 250px;
  13. background-color: yellow;
  14. opacity: 0.5;
  15. border: 1px solid #333;
  16. display: none;
  17. }
  18. .big {
  19. position: absolute;
  20. left: 360px;
  21. top: 0px;
  22. width: 500px;
  23. height: 500px;
  24. overflow: hidden;
  25. display: none;
  26. }
  27. .big>img {
  28. position: absolute;
  29. top: 0;
  30. left: 0;
  31. }
  32. </style>

为了展示效果我在隐藏之前截了个图,基本框架搭好以后就是这个样子啦!当然,为了更好的实现效果,这里的大图和黄色遮挡层肯定是要隐藏的,我放在上面的代码已经提前写好了隐藏。

 接下肯定就是用 JavaScript 来实现的页面交互效果了。鼠标经过隐藏,鼠标离开显示,以及鼠标在小图里面移动大图跟着移动的效果。这样就实现了一个放大镜的效果!!

  1. <script>
  2. window.addEventListener('load', function () {
  3. var box = document.querySelector('.box');
  4. var yy = document.querySelector('.yy');
  5. var big = document.querySelector('.big');
  6. box.addEventListener('mouseover', function () {
  7. yy.style.display = 'block';
  8. big.style.display = 'block';
  9. })
  10. box.addEventListener('mouseout', function () {
  11. yy.style.display = 'none';
  12. big.style.display = 'none';
  13. })
  14. box.addEventListener('mousemove', function (e) {
  15. var x = e.pageX - box.offsetLeft;
  16. var y = e.pageY - box.offsetTop;
  17. var width = x - yy.offsetWidth / 2;
  18. var height = y - yy.offsetHeight / 2;
  19. if (width <= 0) {
  20. width = 0;
  21. } else if (width >= box.offsetWidth - yy.offsetWidth) {
  22. width = 100;
  23. }
  24. if (height <= 0) {
  25. height = 0;
  26. } else if (height >= box.offsetHeight - yy.offsetHeight) {
  27. height = box.offsetHeight - yy.offsetHeight;
  28. }
  29. yy.style.left = width + 'px';
  30. yy.style.top = height + 'px';
  31. var bigimg = document.querySelector('.big>img');
  32. // 大图片的移动距离=遮挡层移动距离*大图片最大移动距离/遮挡层最大移动距离
  33. var bigx = width * (bigimg.offsetWidth - big.offsetWidth) / (box.offsetWidth - yy.offsetWidth);
  34. var bigy = height * (bigimg.offsetHeight - big.offsetHeight) / (box.offsetHeight - yy.offsetHeight);
  35. bigimg.style.left = -bigx + 'px';
  36. bigimg.style.top = -bigy + 'px';
  37. })
  38. })
  39. </script>

以上就是实现这一效果的全部代码了,感兴趣的朋友可以收藏哦,以后可就找不到这么优秀的文章了!!

网站建设定制开发 软件系统开发定制 定制软件开发 软件开发定制 定制app开发 app开发定制 app开发定制公司 电商商城定制开发 定制小程序开发 定制开发小程序 客户管理系统开发定制 定制网站 定制开发 crm开发定制 开发公司 小程序开发定制 定制软件 收款定制开发 企业网站定制开发 定制化开发 android系统定制开发 定制小程序开发费用 定制设计 专注app软件定制开发 软件开发定制定制 知名网站建设定制 软件定制开发供应商 应用系统定制开发 软件系统定制开发 企业管理系统定制开发 系统定制开发