1.页面布局

定位一个正常的图片,上面放一个可被鼠标移动的半透明的色块
在图片右侧隐藏一个更大的图片
当半透明色块移动时显示右侧大图的对应部分

注:如果想在网页中查看源代码提取文件,提取不到大图,可以直接Ctrl+s保存网页全部内容

       <div id="left"><div id="box"></div></div><div id="right"><img id="bbox" src="../HTML/img/big.jpg"></img></div>

2.页面样式

为了让色块可以在图片中移动,需要给图片相对定位,色块绝对定位,便于给色块进行位置赋值
为了让大图根据色块进行位置变化,需要给右边外框相对定位,图片绝对定位
分别给左右框左浮动,保障放大图出现在正常图旁边

*{padding:0;margin: 0;}#left{width: 400px;height: 400px;border: 1px solid black;margin:20px;background-image: url(../HTML/img/small.jpg);background-size: 100% 100%;position: relative;float: left;}#box{width: 220px;height: 200px;background:white;/*透明度*/opacity: 0.4;/*方块要动所以给他一个定位*/position: absolute;}#right{width: 440px;height: 400px;border: 1px solid black;position: relative;float: left;margin:20px;overflow: hidden;}#bbox{position: absolute;left: 0;top: 0;}

3.给左侧图片加鼠标移动事件

1)鼠标移动函数

left.onmousemove=function(e){      }

2)获得兼容的事件对象(鼠标位置)
window.event:ie解析这个 e:谷歌,火狐解析这个

var move=window.event||e;

3)获得鼠标距离事件源的位置(需要先给事件源一个相对定位)
move.offsetX:IE浏览器上的获取方法,e.offsetX:非IE浏览器的获取方法

var move_left=move.offsetX||e.offsetX;
var move_top=move.offsetY||e.offsetY;

4)为了让鼠标在色块中心时色块开始正式移动,所以鼠标位置减去色块的一边才是色块距离边框的真实距离

var box_left=move_left-110;
var box_top=move_top-100;

5)将计算好的位置赋值给色块

box.style.left=box_left+"px";
box.style.top=box_top+"px";

4.色块在触碰过程中会抖动的原因

鼠标和事件源之间如果有其他元素存在,效果的触发就会有问题(图片作为事件源,色块影响了效果
所以要避免鼠标与事件源有其他元素,可以在色块和图片上在加一个盒子,让鼠标在盒子上移动

<div id="new"></div>

调整盒子的位置,保证盒子透明

#new{width: 400px;height: 400px;background: blue;position: absolute;top: 0;left: 0;/*背景设置成透明*/opacity: 0;/*鼠标变成十字*/cursor: crosshair;}

5.保证色块不超出表框

所以当计算好色块的距离小于0时,不再让色块在移动而是等于0
判断结束后再进行赋值

if(box_left<0){box_left=0;}if(box_top<0){box_top=0;}if(box_left>180){box_left=180;}if(box_top>200){box_top=200;}

6.控制右侧显示大图

右侧整个大图片800x800
1)根据对应色块移动,大图在框内的显示位置可得到关系式

var bbox_left=box_left*-2;
var bbox_top=box_top*-2;

2)将计算的值赋值

bbox.style.left=bbox_left+"px";
bbox.style.top=bbox_top+"px";

7.当鼠标移入移出色块

1)鼠标未移入前色块,右侧大图不显示

#box,#right{display: none;           }

2)鼠标移入事件,色块显示 ,右侧大图显示

newleft.onmouseover=function(){box.style.display="block";right.style.display="block";}

3)鼠标移出事件色块显示 ,右侧大图消失

newleft.onmouseout=function(){box.style.display="none";right.style.display="none";}

8.源代码

<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title></title><style>*{padding:0;margin: 0;}#left{width: 400px;height: 400px;border: 1px solid black;margin:20px;background-image: url(../HTML/img/small.jpg);background-size: 100% 100%;position: relative;float: left;}#box{width: 220px;height: 200px;background:white;/*透明度*/opacity: 0.4;/*方块要动所以给他一个定位*/position: absolute;}#right{width: 440px;height: 400px;border: 1px solid black;position: relative;float: left;margin:20px;overflow: hidden;}#bbox{position: absolute;left: 0;top: 0;}#new{width: 400px;height: 400px;background: blue;position: absolute;top: 0;left: 0;/*背景设置成透明*/opacity: 0;/*鼠标变成十字*/cursor: crosshair;}#box,#right{display: none;}</style></head><body><div id="left"><div id="box"></div><div id="new"></div></div><div id="right"><img id="bbox" src="../HTML/img/big.jpg"></img></div><script>var left=document.getElementById("left");var box=document.getElementById("box");var right=document.getElementById("right");var bbox=document.getElementById("bbox");var newleft=document.getElementById("new");//          给左侧小图加鼠标移动事件newleft.onmousemove=function(e){
//              鼠标移动函数var move=window.event||e;
//              获得兼容的事件对象var move_left=move.offsetX||e.offsetX;
//              获得鼠标距离事件源的位置var move_top=move.offsetY||e.offsetY;//              为了让鼠标在色块中心时色块开始正式移动,所以鼠标位置减去色块的一边才是色块距离边框的真实距离var box_left=move_left-110;var box_top=move_top-100;当计算好的距离小于0时,不再让色块在移动而是等于0if(box_left<0){box_left=0;}if(box_top<0){box_top=0;}if(box_left>180){box_left=180;}if(box_top>200){box_top=200;}//              将计算好的位置赋值给色块box.style.left=box_left+"px";box.style.top=box_top+"px";var bbox_left=box_left*-2;var bbox_top=box_top*-2;
//           将计算的值赋值bbox.style.left=bbox_left+"px";bbox.style.top=bbox_top+"px";}
//          鼠标移入事件newleft.onmouseover=function(){box.style.display="block";right.style.display="block";}
//          鼠标移出事件newleft.onmouseout=function(){box.style.display="none";right.style.display="none";}</script></body>
</html>

9.效果

前端——js 天猫商品图放大镜效果、鼠标移动显示放大效果、(查看图片细节)相关推荐

  1. JavaScript放大镜插件magnifier实现图像放大效果

    原文:JavaScript放大镜插件magnifier实现图像放大效果 源代码下载地址http://www.zuidaima.com/share/1801078585658368.htm magnif ...

  2. js实现网页左侧导航条,鼠标经过显示隐藏的面板

    js实现网页左侧导航条,鼠标经过显示隐藏的面板 <style>* {margin: 0;padding: 0;}#left_nav {position: relative;border: ...

  3. html制作天猫页面,《编程基础:HTML第八章》:制作 天猫 商品图展示图

    作者|李娜 *本文为「Java联盟」原创内容,转载无需授权,请保留署名来源. 这几天真是艳阳高照呀!李娜我看了一下自己的"装备",感觉这时候出去浪,是不是有点不给太阳公公面子呀! ...

  4. 10.【CSS定位】:position、z-index、dispaly(none)、visibility、overflow hot new 模块 + 淘宝焦点图布局 +土豆网鼠标经过显示遮罩

    文章目录 [CSS定位] 一.定位 1.1 为什么需要定位? 1.2 定位组成 1.3 静态定位 static(了解) 1.4 相对定位 relative(重要) 1.5 绝对定位 absolute( ...

  5. JS文字过长隐藏,鼠标悬停显示

    目录 原生JS的处理办法 vue下的处理办法 原生JS的处理办法 此部分转载自链接: js 文字超出长度用省略号代替,鼠标悬停并以悬浮框显示. 以下展示最简单的办法,转载的原文还另举了一种onload ...

  6. jQuery 仿淘宝 鼠标悬停显示大图效果

    页面只需要包含 jquery库, bigpic.js 和 bigpic.css即可自动给页面上符合条件的图片加上悬停效果. <script type="text/javascript& ...

  7. 案例——淘宝轮播图和土豆网鼠标经过显示遮罩

    综合案例 - 淘宝轮播图 1 效果图 5.2 布局分析 3 步骤 1. 大盒子我们类名为:  tb-promo      淘宝广告 2. 里面先放一张图片. 3. 左右两个按钮 用链接就好了. 左箭头 ...

  8. 纯CSS实现鼠标移入显示图标效果

    1.效果预览 在淘宝或京东商城我们经常看到这样的效果:鼠标移动除某一个位置时出现下拉菜单,或者显示一个图标,那么这是如何实现的呢?我们今天就用CSS来实现鼠标移入时显示图标的一个效果. 下面是我们这次 ...

  9. 鼠标悬浮显示文字,右击图片复制该文字

    右击图片复制id 右击图片复制id 鼠标悬浮显示文字 图片 方法 效果 右击图片复制id 鼠标悬浮显示文字 图片的alt属性可以产生鼠标悬浮,显示文字的功能.如果实现不了,可以加上title. 图片 ...

最新文章

  1. 以往计算机二级c语言填空题,计算机二级C语言考试填空题精选4
  2. 人文英语学习品牌「友邻优课」携手神策数据 精细化数据分析让每一次互动都有价值
  3. Ubuntu下面apache2安装
  4. 前缀转后缀(表达式)
  5. (转)Linux传输大文件(分割传输)
  6. 轻松学习分布式|系列2|负载均衡算法。
  7. 题解 luogu P6002 【[USACO20JAN]Berry Picking S】
  8. OpenGL着色器程序解析--初识着色器
  9. java 解析dojo_Dojo入门三种HelloWorld!
  10. Unity 动画模拟果冻抖动效果
  11. html文本框打tab,HTML标签textarea支持tab键
  12. GDR(Gradual Decoding Refresh, GradualDecoder Refresh)
  13. 实验:通过MUX-vlan实现vlan隔离
  14. matlab做的脑网络分析,eeg脑网络分析
  15. IOCP之accept、AcceptEx、WSAAccept的区别 .
  16. 粒径测量中的D10 D50 D90的含义
  17. 解决IE系列浏览器上传页面接收问题
  18. Spring+SpringMVC+Jsp实现校园二手交易系统
  19. 一个自动填写仿站小工具下载网址的按键精灵脚本
  20. PHP将Word转PDF文件

热门文章

  1. android 布局加圆角,Android通用圆角布局
  2. matlab sift乘积量化,PQ(乘积量化)应用于ANN算法原理和代码解读
  3. 指数分布族(Exponential Family)相关公式推导及在变分推断中的应用
  4. 简述用决策表设计测试用例的步骤_决策表设计测试用例的步骤(流程)?
  5. DSP芯片上算法加速技巧总结
  6. DSP芯片上电后在执行main函数前的执行流程
  7. 睢阳区中小学计算机提升培训,睢阳区中小学幼儿园教师信息技术应用能力.doc...
  8. SVN使用LDAP认证
  9. endnote文献管理
  10. wordpress加速之wp super cache 插件的使用