jQuery实现网页放大镜功能 转载
京东等电商网站中可以对商品进行放大观察,本文要实现的就是模仿这个放大镜功能,大致效果如下图所示:
简要说明实现思路:
1.原图窗口与放大窗口插入的是同一个图片,不过原图窗口的图片要适当缩小,放大窗口图片保持原大小,超出部分设置隐藏
2.先定下放大比例,例如本文原图大小为1000*1000,可以把原图窗口的图片设为400*400,这样放大窗口就能实现2.5倍的放大效果了(两个窗口的大小是一样的!!都是400*400)
3.首先实现小框框跟着鼠标移动的功能(本文设置鼠标总是在小框框的中心位置)
4.再实现放大窗口中的图片随着小框框的移动实现自身移动
5.鼠标(小框框)向右移动,放大窗口中的图片是要向左移动的!他们的方向总是相反
6.小框框大小不是随意设置,与放大倍数有关,本文放大2.5倍,则原图窗口应该也是小框框大小的2.5倍,即小框框大小160*160
具体代码如下:
---------------------
作者:metoo9527
来源:CSDN
原文:https://blog.csdn.net/metoo9527/article/details/79100080
版权声明:本文为博主原创文章,转载请附上博文链接!
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>简易放大镜的实现</title>
<style>
body,ul,li{padding: 0;margin: 0;list-style: none;}
.orig,.fd{
width: 400px;
height: 400px;
border:1px solid red;
position: absolute;
}
.fd{ left:410px;
top:0;
overflow: hidden;
display: none;
} .blocks{
/*小图的宽高比例
窗口的宽度 / 大图的宽度 * 窗口的宽度
*/
width:160px;
height:160px;
background:rgba(254,238,167,.4);
position: absolute;
left: 0;
top:0;
display: none;
}
</style>
</head>
<body>
<!-- 建立显示原图窗口 --> <div class="orig"> <!-- 插入要放大的图片 -->
<img src="./images/3.jpg" alt="" width="400"> <!-- 加入用于锁定放大区域的小框框 -->
<div class="blocks"></div>
</div> <!-- 建立显示放大图片的窗口 -->
<div class="fd"><img src="./images/3.jpg" alt="" style="position: absolute;">
</div> <script src="./jquery-1.8.3.min.js"></script>
<script>
// 绑定鼠标移入原图窗口事件
$('.orig').mouseover(function(e){
$('.fd').css('display','block');
$('.blocks').css('display','block'); })
//绑定鼠标在原图窗口移动的事件
$('.orig').mousemove(function(e){ // 获取鼠标当前的位置
var x=e.clientX;
var y=e.clientY;
// 获取原图窗口距离文档的偏移位置
var sX=$('.orig').offset().left;
var sY=$('.orig').offset().top; // 计算鼠标的相对位置(相对于原图窗口的偏移距离)
var mx=x-sX;
var my=y-sY; // 获取小框框的宽高
var mw=$('.blocks').width()/2;
var mh=$('.blocks').height()/2; // 鼠标移动后小框框的移动距离
$('.blocks').css({left:mx-mw+'px',top:my-mh+'px'}); // 获取小框框的偏移位置
var lw=$('.blocks').position().left;
var lh=$('.blocks').position().top; // 判断边界(小框框只能在原图窗口范围内移动)
var maxW=$('.orig').width()-$('.blocks').width()
var maxH=$('.orig').height()-$('.blocks').height()
// 左边界
if(lw<=0){$('.blocks').css('left','0px');}
// 右边界
if(lw>=maxW){
$('.blocks').css('left',maxW+'px');
}
// 上边界
if(lh<=0){$('.blocks').css('top','0px');}
// 下边界
if(lh>=maxH){
$('.blocks').css('top',maxH+'px');
} // 获取小框框的偏移位置
var lw=$('.blocks').position().left;
var lh=$('.blocks').position().top;
// 计算鼠标在小图里的位置 *2.5计算大图移动的比例
var newX=lw*2.5;
var newY=lh*2.5; $('.fd img').css({left:-newX+'px',top:-newY+'px'});
})
//绑定鼠标离开原图窗口事件
$('.orig').mouseout(function(){
$('.fd').css('display','none');
$('.blocks').css('display','none');
})
</script>
</body>
</html>
jQuery实现网页放大镜功能 转载的更多相关文章
- jQuery实现网页放大镜功能
京东等电商网站中可以对商品进行放大观察,本文要实现的就是模仿这个放大镜功能,大致效果如下图所示: 简要说明实现思路: 1.原图窗口与放大窗口插入的是同一个图片,不过原图窗口的图片要适当缩小,放大窗口图 ...
- jQuery插件:图片放大镜--jQuery Zoom
本文转载于http://blog.csdn.net/xinhaozheng/article/details/4085644, 这是一款非常不错的给图片添加放大镜效果,可以应用在诸如zen cart,m ...
- 8款极具表现力的jQuery/CSS3网页菜单
上一篇我向大家分享了7款效果震憾的HTML5应用组件,今天主要来分享一下CSS3网页菜单,因为在一个网站中,菜单起着举足轻重的作用,所以作为WEB开发人员,我们有必要将网站的菜单设计得尽量完美,下面向 ...
- 11款样式新颖的 jQuery/CSS3 网页菜单
今天为大家准备了11款样式风格挺不错的jQuery/CSS3网页菜单,主要包括面包屑菜单.下拉菜单.Tab菜单等,喜欢的朋友赶紧收藏,一起来看看这些菜单. 1.jQuery / CSS3多功能下拉菜单 ...
- nodeJS实现简单网页爬虫功能
前面的话 本文将使用nodeJS实现一个简单的网页爬虫功能 网页源码 使用http.get()方法获取网页源码,以hao123网站的头条页面为例 http://tuijian.hao123.com/h ...
- jQuery Ajax 全解析(转载)
本文地址: jQuery Ajax 全解析 本文作者:QLeelulu 转载请标明出处! jQuery确实是一个挺好的轻量级的JS框架,能帮助我们快速的开发JS应用,并在一定程度上改变了我们写Java ...
- JQuery制作网页——第五章 初识 jQuery
1.jQuery简介: ● jQuery由美国人John Resig于2006年创建 ● jQuery是目前最流行的JavaScript程序库,它是对JavaScript对象和函数的封装 ● 它的设计 ...
- [COCOS2DX-LUA]0-001.利用ClippingNode实现放大镜功能
用过Iphone的都知道,Iphone在定位光标位置的时候会把内容进行放大,这样我们就能很快的把光标移动到指定的位置.那么在我们的Cocos2dX的游戏中,怎么可以实现这种功能呢.起先我就是想起了Ip ...
- Jquery对网页高度、宽度的操作
Jquery获取网页的宽度.高度 网页可见区域宽: document.body.clientWidth 网页可见区域高: document.body.clientHeight 网页可见区域宽: doc ...
随机推荐
- bzoj4244 & loj2878. 「JOISC 2014 Day2」邮戳拉力赛 括号序列+背包
题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=4244 https://loj.ac/problem/2878 题解 挺妙的一道题. 一开始一直 ...
- python在mapreduce运行Wordcount程序
首先脚本文件: mapper.py: #!/usr/bin/env python import sys for line in sys.stdin: line = line.strip() words ...
- vmware版本选择
vmware哪个版本好用 2014-03-10 22:59一枚小白3 | 分类:常见软件 | 浏览6743次 准备装ghost xp,想问下哪个版本更适合?或者现在哪个版本更稳定,求不要复制,求大神解 ...
- 基于dokcer的zoookeeper集群安装
编写docker-compose.ymlversion: '3.1' services: zoo1: image: zookeeper restart: always hostname: zoo1 p ...
- asp.net core web api 版本控控制
通过微软的一个库Microsoft.AspNetCore.Mvc.Versioning实现asp.net core web api的版本控制. 以两种形式组织了Controller: 文件夹分开 命名 ...
- 51nod 1490: 多重游戏(树上博弈)
题目链接 该题实质上是一个树上博弈的问题.要定义四种状态——2先手必胜 1先手必败 3可输可赢 0不能控制 叶子结点为先手必败态: 若某结点的所有儿子都是先手必败态,则该结点为先手必胜态: 若某结点的 ...
- WIN10无法识别安卓设备,提示Windows 无法验证此设备所需的驱动程序的数字签名
在设备管理器,显示ANDROID设备是感叹号, 不管更新驱动,还是下载什么手机助手自动安装驱动,均不可解. 从属性中查看提示的是“Windows 无法验证此设备所需的驱动程序的数字签名”, 解决办法: ...
- Apache Flink 进阶(六):Flink 作业执行深度解析
本文根据 Apache Flink 系列直播课程整理而成,由 Apache Flink Contributor.网易云音乐实时计算平台研发工程师岳猛分享.主要分享内容为 Flink Job 执行作业的 ...
- sqlserver 中的时间算法
DECLARE @Date DATETIME SET @Date=GETDATE() --前一天,给定日期的前一天 ,@Date) AS '前一天' --后一天,给定日期的后一天 ,@Date) AS ...
- 前端每日实战:18# 视频演示如何用纯 CSS 创作 404 文字变形为 NON 文字的交互特效
效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/ZoxjXm 可交互视频教程 此视频 ...