用jQuery编写放大镜效果
来源:互联网 发布:类似米赚的软件 编辑:程序博客网 时间:2024/06/05 20:05
以《锋利的jQuery》第8章综合案例为基础,书中是用的插件,这里自己摸索写了一套程序。
HTML如下:
<!DOCTYPE HTML><html><head><meta charset = utf-8 /><title>zoom effects</title><link type = "text/css" rel = "stylesheet" href="style/zoom.css" /><script type = "text/javascript" src = "scripts/jquery.js"></script></head><body><div id = "jnProitem"><div class="jqzoomWrap"> <a href="images/blue_one_big.jpg" title="免烫高支棉条纹衬衣" > <img src="images/blue_one_small.jpg" alt="免烫高支棉条纹衬衣" id="bigImg" /> </a></div></div><div id = "jnProDetails"><!-- 选择商品--><h4>免烫高支棉条纹衬衣</h4><ul class = "jnProDetailList"><li>全新精品高支棉衬衫再次提升品质,精选100%新疆长绒棉织造而成,平整度好,短绒少; 80-100高支双股经纬交织,带来无与伦比的舒适享受;而且面料反光效果好,具有漂亮的光泽,质感上佳,有利于免烫效果的维持!</li><li><span>价 格:</span><strong class = "del">379.00元</strong></li><li><span>促 销:</span><strong class = "detail_price">200.00</strong><span>元</span></li></ul></div><script type="text/javascript" src = "scripts/zoom.js"></script></body></html>
CSS如下:
*{margin: 0; padding: 0;}#jnProitem {float: left;width: 312px;height: 560px;margin-left: 10px;}#jnProDetails{margin-left: 324px;line-height: 2;}#jnProDetails ul{list-style-type:none;}strong{font-weight: normal;}.del{text-decoration: line-through; }.detail_price{/*改变字体*/font: 24px Tahoma,Arial,Helvetica,sans-serif;color: #F87217;/*垂直居中*/vertical-align: middle;/*单位留出间距*/padding-right: 5px;}.jqzoomWrap{border: 1px solid #BBB;cursor: crosshair;}#mGlass{width: 120px; height: 120px;opacity: 0.5;background: #E5E4E2;position: absolute;}#zoomWindow{position: absolute;border: 1px solid #BBB;overflow: hidden;}#zoomWindow>div{position: relative;width:100%;height:100%;}#zoomWindow img{position: absolute;}
JS如下:
$ (function () {var $parent = $(".jqzoomWrap");//现有展示栏的位置、宽高,不能只是内容的高度var dpWidth = $parent.outerWidth();var dpHeight = $parent.outerHeight();//放大镜的大小var mSize = 120;//创建放大镜var $mGlass = $("<div id ='mGlass'></div>");//创建预览区域,双层div。因为图片的父元素必须relative,但relative会占据原来位置,所以再在外面加一层div,设为absolutevar $zoomWindow = $("<div id ='zoomWindow'><div><img src='images/blue_one_big.jpg' /></div></div>");//可不可以不设为全局变量?var dpPos = null;var scale = [];$(".jqzoomWrap a").mouseenter(function (e) {//获取光标位置this.myTitle = this.title;this.title = "";//不能放在全局变量,不然浏览器加载后就成为固定值,窗口缩小再mouseenter位置不对dpPos = $parent.offset();//改变放大镜的位置showGlass(e, dpPos, dpWidth, dpHeight);//插入放大镜$mGlass.appendTo(".jqzoomWrap");//获取预览图链接,插入$zoomWindow.find("img").attr("src", this.href);$zoomWindow.prependTo("#jnProDetails");// 先插入文档,才能获得图片大小。设置预览图的大小scale = imgScale($zoomWindow, $parent);$zoomWindow.width(scale[0] * mSize + "");$zoomWindow.height(scale[1] * mSize + "");});$("body").on("mousemove", "#mGlass", function(e) {//改变放大镜的位置showGlass(e, dpPos, dpWidth, dpHeight);var left = dpPos.left;var top = dpPos.top;//设置预览图片的位置var absLeft = -(e.pageX - mSize/2 - left)*scale[0];var absTop = -(e.pageY - mSize/2 - top)*scale[1];var ultRight = -($zoomWindow.find("img").width() - $zoomWindow.width());var ultBottom = -($zoomWindow.find("img").height() - $zoomWindow.height());$zoomWindow.find("img").css({ "left": (Math.max(Math.min(0, absLeft), ultRight)) + "px", "top": (Math.max(Math.min(0, absTop), ultBottom)) + "px"});console.log(scale);});// 既不能绑定在放大镜的父元素,也不能绑定在兄弟元素// 由于用函数给框框设置了界限,鼠标怎么动框框都在图片范围内,这样鼠标指针就可以脱离框框,实现解除绑定$parent.mouseleave(function() {$(this).find("a").attr("title", this.myTitle);$mGlass.remove();$zoomWindow.remove();});// 改变放大镜位置的函数function showGlass(e, dpPos, dpWidth, dpHeight) {var mLeft = Math.min(Math.max((e.pageX - mSize/2), dpPos.left), (dpPos.left + dpWidth - mSize));var mTop = Math.min(Math.max((e.pageY - mSize/2), dpPos.top), (dpPos.top + dpHeight - mSize));$mGlass.css({ "left": mLeft + "px", "top": mTop + "px"});}//预览区大小:大图/小图*放大镜尺寸function imgScale($big, $small) { // 必须先把元素插入文档才能获取大小 var big_width = $big.find("img").width();var small_width = $small.find("img").width();var scaleX = big_width/small_width;var big_height = $big.find("img").height();var small_height = $small.find("img").height();var scaleY = big_height/small_height;return [scaleX, scaleY];}});
阅读全文
0 0
- 用jQuery编写放大镜效果
- JQuery 图片放大镜效果
- Jquery放大镜效果
- jquery放大镜效果插件
- jQuery放大镜效果
- Jquery 放大镜效果
- Jquery图片放大镜效果
- Jquery放大镜效果
- jQuery实现放大镜效果
- Jquery放大镜效果
- jquery实现放大镜效果
- JQuery--放大镜效果
- jQuery实现放大镜效果
- jQuery实现放大镜效果
- jQuery实现放大镜效果
- jQuery实现放大镜效果
- jQuery实现放大镜效果
- jquery 放大镜效果[带演示](
- keystone介绍
- 禅道搭建踩过的坑
- 失分情况记录
- 软件测试[(美)Ron Patton]8/9/10
- ios11 UITableView顶部有空隙
- 用jQuery编写放大镜效果
- SpringCloud(第 026 篇)简单异构系统之 nodejs 微服务
- S3C2440存储器扩展研究——剖析nWE, nWBE, nBE间关系
- Servlet学习笔记
- TCP/IP学习笔记(11)-TCP交互数据流,成块数据流
- 仙人掌学习笔记
- Effective STL学习笔记-条款23
- Linux下编译ffmpeg及其依赖库
- Java设计模式之工厂模式