前端必学——实现电商图片放大镜效果(附代码)

放大镜可以说是前端人必须学会的程序之一,今天的案例为大家展示一下怎么实现放大镜的效果!

效果图展示

 整个效果就是当鼠标放到展示图上的时候,会出现一个遮罩层以及弹出来一个框展示一个详情图,并且鼠标移动的时候详情图跟着移动,鼠标离开详情图消失。

a555c202311241008517750.png

b89fc202311241009073606.png

HTML代码:

<html>

<head>

<style>

#small{

   width: 500px;

   height: 312px;

   position: absolute;

   left: 20px;

   top: 20px;

}

#pic1{

   position: absolute;

   left: 0px;

   top: 0px;

}

#pic1 img{

   width: 100%;

   height: 100%;

}

#big{

   width: 200px;

   height: 200px;

   position: absolute;

   left: 550px;

   top: 50px;

   border: 1px solid blue;

   overflow: hidden;

}

#pic2{

   width: 1000px;

   height: 625px;

   position: absolute;

   left: 0;

   top: 0;

}

#pic2 img{

   width: 100%;

   height: 100%;

}

#mask{

   width: 100px;

   height: 100px;

   background: black;

   opacity: 0.3;/*让遮罩层看起来透明*/

   filter: alpha(opacity = 30);/*兼容不同的浏览器*/

   position: absolute;

   display: none;

}

</style>

<script>

window.onload = function(){//文档内容加载完之后再执行

   //当鼠标移入小图片,显示遮罩层和放大的区域

   $('small').onmouseenter = function(){

       $('mask').style.display = 'block';

       $('big').style.display='block';

   }

       //鼠标移出时,隐藏遮罩层和放大的区域

   $('small').onmouseleave = function(){

       $('mask').style.display='none';

       $('big').style.display="none";

   }

   //鼠标移动

   $('small').onmousemove = function(ev){

       var e = ev || window.event;

       //计算鼠标的位置,并让鼠标显示在遮罩层的中间

       var l = e.clientX - $('small').offsetLeft - 50;

       var t = e.clientY - $('small').offsetTop -50;

       //别让遮罩层移出图片

       if(l <= 0){

           l = 0;

       }

       if(l >= 500 - 100){

           l = 400;

       }

       if(t <= 0){

           t = 0;

       }

       if(t >= 312 - 100){

           t = 212;

       }

       //遮罩层的移动

       $('mask').style.left = l + 'px';

       $('mask').style.top = t + 'px';

       //通过遮罩层移动,来计算出放大后图片的显示区域

       $("pic2").style.left = -$("mask").offsetLeft * 2 + 'px';

       $("pic2").style.top = -$("mask").offsetTop * 2 + 'px';

   }

}

//为了更容容易的获取id

function $(id){

   return document.getElementById(id);

}

</script>

</head>

<div id="small">

   <div id="pic1">

       <img src="mm.jpg" alt="">

   </div>

   <div id="mask"></div>

</div>

<div id="big">

   <div id="pic2">

       <img src="mm.jpg" alt="">

   </div>

</div>

</html>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/174166.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

家乡旅游推广软文怎么写?媒介盒子分享

随着各地政策的放开&#xff0c;旅行已经成为很多消费者生活中不可缺少的一项&#xff0c;各地景区也在宣传上纷纷发力&#xff0c;希望能够吸引游客。只要文案写得好&#xff0c;没有景点火不了&#xff0c;今天媒介盒子就来和大家聊聊&#xff1a;家乡旅游推广软文怎么写。 一…

独乐乐不如众乐乐(二)-某汽车零部件厂商IC EMC企业规范

前言&#xff1a;该汽车零部件厂商关于IC EMC的规范可能是小编看过的企业标准里要求最明确的一份企业标准了&#xff0c;充分说明了标准方法不是死的&#xff0c;可以灵活应用。 先看看这份规范的抬头&#xff1a; 与其他企业规范一样&#xff0c;该汽车零部件厂商的IC EMC规范…

TDA4开发环境Docker化

文章目录 背景1. TDA4X Linux SDK编译环境镜像构建1.1 安装SDK1.2 验证制卡1.2.1 出现的问题:1.3 验证编译1.3.1 出现的问题2. TDA4X Linux-RT SDK编译环境镜像构建2.1 安装SDK2.2 出现的问题参考背景 开始阅读本篇前,假设你已经对docker有了一定了解,且有过docker换件搭建…

1、Linux_介绍和安装

1. Linux概述 Linux&#xff1a;是基于Unix的一个开源、免费的操作系统&#xff0c;其稳定性、安全性、处理多并发能力强&#xff0c;目前大多数企业级应用甚至是集群项目都部署运行在linux操作系统之上&#xff0c;在我国软件公司得到广泛的使用 Unix&#xff1a;是一个强大…

聊聊如何进行代码混淆加固

​ 聊聊如何进行代码混淆 前言什么是代码混淆代码混淆&#xff0c;是指将计算机程序的代码&#xff0c;转换成一种功能上等价&#xff0c;但是难于阅读和理解的形式的行为。 代码混淆常见手段1、名称混淆 将有意义的类&#xff0c;字段、方法名称更改为无意义的字符串。生成…

CSGO搬砖还能做吗?CSGO饰品未来走势如何?

steam/csgo搬砖项目真能月入过万吗&#xff1f;到底真的假的&#xff1f; 如何看待CSGO饰品市场的整体走向&#xff1f; 从整体来说&#xff0c;CSGO的饰品市场与规模肯定会持续不断的上升&#xff0c;大盘不会发生特别大的波动&#xff0c;目前处于稳定期&#xff01;&…

【C++干货铺】非类型模板 | 模板特化 | 模板分离编译

个人主页点击直达&#xff1a;小白不是程序媛 C系列专栏&#xff1a;C干货铺 代码仓库&#xff1a;Gitee 目录 非类型模板参数 模板的特化 什么是模板特化&#xff1f; 函数模板特化 类模板的特化 全特化 偏特化 模板的分离编译 什么是分离编译&#xff1f; 模板的…

单细胞featureplot美化修改-自定义修改图片样式-umap密度图画等高线

大家好&#xff0c;欢迎来的单细胞图片美化专辑 1.如何修改seruat对象的行名 2.FeaturePlot如何把所有阳性表达的spot放到图的前面 在单细胞实践中&#xff0c;我发现不同的客户对画图需求并不一致&#xff0c;这可能和个人审美有关吧。本专辑着重于各种各样的单细胞个性化绘…

Vatee万腾科技的数字化奇迹:Vatee创新力量的前瞻探讨

在数字化的潮流中&#xff0c;Vatee万腾科技以其独特而强大的创新力量&#xff0c;创造了一系列数字化奇迹&#xff0c;引领着科技的前沿发展。这不仅是对技术的突破&#xff0c;更是对未来的深刻探讨&#xff0c;为整个数字化时代描绘出一幅充满奇迹的画卷。 Vatee万腾以创新为…

入侵redis之准备---Linux关于定时任务crontab相关知识了解配合理解shell反弹远程控制

入侵redis之准备—Linux关于定时任务crontab相关知识了解配合理解shell反弹远程控制 几点需要知道的信息 【1】crontab一般来说服务器都是有的&#xff0c;依赖crond服务&#xff0c;这个服务也是必须安装的服务&#xff0c;并且也是开机自启动的服务&#xff0c;也就是说&…

【Linus】进程的等待

进程等待的必要性 如果子进程退出了&#xff0c;父进程没有对子进程进行回收&#xff0c;子进程就会进入僵尸进程&#xff0c;占用内存&#xff0c;导致内存泄漏如果程序进入僵尸状态&#xff0c;那么kill -9 也无法强制杀死进程子进程是父进程创建出来&#xff0c;完成父进程…

自动驾驶中的LFM(LED 闪烁缓解)问题

自动驾驶中的LFM Reference: 自动驾驶系统如何跨越LFM这道坎&#xff1f; 从路灯、交通灯&#xff0c;到车载照明&#xff0c;低功耗、长寿命、高可靠的 LED 正在快速取代传统照明方式。但 LED 在道路上的普遍使用&#xff0c;却带来“LED闪烁”现象。“LED闪烁”是由 LED 驱…

【JavaEE】Java中的多线程 (Thread类)

作者主页&#xff1a;paper jie_博客 本文作者&#xff1a;大家好&#xff0c;我是paper jie&#xff0c;感谢你阅读本文&#xff0c;欢迎一建三连哦。 本文录入于《JavaEE》专栏&#xff0c;本专栏是针对于大学生&#xff0c;编程小白精心打造的。笔者用重金(时间和精力)打造&…

【Docker】安装MySQL 通俗易懂 亲测没有任何问题

目录 1.拉取镜像 2.运行容器 3.创建mysql配置文件 4.测试 1.拉取镜像 dockerhub官网&#xff1a;Docker 如果需要其他版本mysql docker pull mysql:xxx&#xff08;版本&#xff09; docker pull mysql #默认拉取最新版本 latest 2.运行容器 docker run -d -p 3306:33…

论文公式工具

论文公式工具 https://www.latexlive.com/home## 论文图片识别公式网页工具&#xff0c;免费的方便但是有限制次数&#xff0c;一天只能用三次公式图片识别。 先注册登录 我们到论文中截取一张图片 在识别得到的一串码中&#xff0c;删掉前面没用的 输出为这个格式&#x…

【服务器能干什么】搭建一个短网址平台,可以查看数据详情!

昨天在 YouTube 上看到又一个搭建自己短网址的视频教程&#xff0c;用的是开源的 polr&#xff0c;但是按照步骤一步步搭建下来&#xff0c;最后一步都会出现 顺哥轻创 PLAINTEXT Whoops, looks like something went wrong百度、谷歌查了一圈也没找到有效的解决方法。&#x…

【好书推荐-第30期】开发者请注意!因果推断与机器学习,终于有人能讲明白啦!

本文目录 一、因果推断二、因果推断的前世今生三、总结四、赠书条件 今天给各位读者推荐一本好书&#xff1a;《机器学习高级实践&#xff1a;计算广告、供需预测、智能营销、动态定价》&#xff0c;好书链接。 2023年初是人工智能爆发的里程碑式的重要阶段&#xff0c;以Open…

【Web】攻防世界Web_php_wrong_nginx_config

这题考察了绕过登录、目录浏览、后门利用 进来先是一个登录框&#xff0c;随便怎么输前端都直接弹窗 禁用js后再输入后登录 查看源码&#xff0c;好家伙&#xff0c;不管输什么都进不去 直接扫目录 访问/robots.txt 访问/hint.php 访问/Hack.php 抓包看一下 cookie里isLogin0…

机器学习【04重要】pycharm中关闭jupyter服务器

直接关掉pycharm 不行 点红方块关闭 不行 我们曲线进行 我们的方法成功截图 实现全程不在服务器上操作 首先点击下图 点击退出&#xff0c;即可 查看端口

java Swing UI设置统一字体大小

编写一个遍历组件设置字体大小的方法 public static void setUIFont() {Font f new Font("宋体", Font.PLAIN, 18);String names[] {"Label", "CheckBox", "PopupMenu", "MenuItem", "CheckBoxMenuItem", &quo…