文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

使用JavaScript编写一个放大镜特效

2023-06-07 23:43

关注

这篇文章给大家介绍使用JavaScript编写一个放大镜特效,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

JavaScript的特点

1.JavaScript主要用来向HTML页面添加交互行为。2.JavaScript可以直接嵌入到HTML页面,但写成单独的js文件有利于结构和行为的分离。3.JavaScript具有跨平台特性,在绝大多数浏览器的支持下,可以在多种平台下运行。

元素的定位方式:

1、static     静态定位,所有元素,不添加任何定位方式时的默认状态

2、relative   相对定位,不脱离文档流,可以相对于自身的原始位置,位移

3、fixed      固定定位,完全脱离文档流,相对于浏览器的空白区域来位移, 且不会因为浏览器的滚动而滚动

4、absolute   绝对定位,完全脱离文档流,相对于上N级元素来定位,  如果父级元素没有相对、绝对或固定定位方式时,绝对定位的元素会向更上层查找。

我们先定位盒子和放大盒子的位置然后隐藏放大盒子

.box { width: 450px; height: 450px; margin: 100px 0 0 100px; border: 1px solid red; position: relative; }  .bigBox{ width: 540px; height: 540px; position: absolute; top: 100px; left: 560px; border: 1px solid #ccc; overflow: hidden; display: none; } .bigBox img { position: absolute; left: 0; top: 0; }  .box .mask{ width: 260px; height: 260px; background-color: yellow;  opacity: .4; position: absolute; left: 0; top: 0;  display: none; }

写js时我们要注意:

当页面加载完毕后,给box绑定鼠标进入和移出事件

<script>  window.onload = function (){ var box = document.querySelector(".box"); var mask = document.querySelector(".mask"); var bigBox = document.querySelector(".bigBox"); var bigImg = document.querySelector(".bigBox > img"); console.log(bigImg);  // 鼠标移入 box.onmouseover = function (){ document.querySelector(".mask").style.display = "block"; document.querySelector(".bigBox").style.display = "block"; } // 移出 box.onmouseout = function (){ document.querySelector(".mask").style.display = "none"; document.querySelector(".bigBox").style.display = "none"; } // 让覆盖物跟随鼠标移动 box.onmousemove = function (){ // 因为box有100像素的外边距,我们需要减掉,否则会错位 var left = event.pageX - 100 - 130; var top = event.pageY - 100 - 130; // 覆盖物不能超出box范围,就需要判坐标的取值范围了 // 得到覆盖物在box中可移动的最大距离 var maskMax = this.offsetWidth - mask.offsetWidth; // 判断left if(left <= 0){ left = 0; }else if(left >= maskMax){ left = maskMax; } // top if(top <= 0){ top = 0; }else if(top >= maskMax){ top = maskMax; } // 将设置好的left,top值设置给样式 mask.style.left = left + "px"; mask.style.top = top + "px"; mask.style.cursor = "move";

注意:

①根据移动的比例,设置大图的移动坐标
②大图的移动坐标 = 覆盖物的偏移量 * 大图片的最大可移动距离 /  覆盖物的最大可移动距离
③ ? = 偏移量 *( 图片的宽度 - bigBox的宽度 ) / maskMax

// 大图在大盒子中的最大位移距离var bigImgMax = bigImg.offsetWidth - bigBox.offsetWidth;// 大图片的left值var bigImgX = mask.offsetLeft * bigImgMax / maskMax;// 大图的top值 var bigImgY = mask.offsetTop * bigImgMax / maskMax; // 覆盖物与大图片的移动方向是反的,所以这里要给负值 bigImg.style.left = -bigImgX + "px"; bigImg.style.top = -bigImgY + "px"; } }

mark为放大镜(黄色部分)

<div class="box"> <img src="../img/small.jpg" alt=""><div class="mask"></div><div class="bigBox"> <img src="../img/big.jpg" alt=""></div>

关于使用JavaScript编写一个放大镜特效就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯