前端——js 天猫商品图放大镜效果、鼠标移动显示放大效果、(查看图片细节)
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 天猫商品图放大镜效果、鼠标移动显示放大效果、(查看图片细节)相关推荐
- JavaScript放大镜插件magnifier实现图像放大效果
原文:JavaScript放大镜插件magnifier实现图像放大效果 源代码下载地址http://www.zuidaima.com/share/1801078585658368.htm magnif ...
- js实现网页左侧导航条,鼠标经过显示隐藏的面板
js实现网页左侧导航条,鼠标经过显示隐藏的面板 <style>* {margin: 0;padding: 0;}#left_nav {position: relative;border: ...
- html制作天猫页面,《编程基础:HTML第八章》:制作 天猫 商品图展示图
作者|李娜 *本文为「Java联盟」原创内容,转载无需授权,请保留署名来源. 这几天真是艳阳高照呀!李娜我看了一下自己的"装备",感觉这时候出去浪,是不是有点不给太阳公公面子呀! ...
- 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( ...
- JS文字过长隐藏,鼠标悬停显示
目录 原生JS的处理办法 vue下的处理办法 原生JS的处理办法 此部分转载自链接: js 文字超出长度用省略号代替,鼠标悬停并以悬浮框显示. 以下展示最简单的办法,转载的原文还另举了一种onload ...
- jQuery 仿淘宝 鼠标悬停显示大图效果
页面只需要包含 jquery库, bigpic.js 和 bigpic.css即可自动给页面上符合条件的图片加上悬停效果. <script type="text/javascript& ...
- 案例——淘宝轮播图和土豆网鼠标经过显示遮罩
综合案例 - 淘宝轮播图 1 效果图 5.2 布局分析 3 步骤 1. 大盒子我们类名为: tb-promo 淘宝广告 2. 里面先放一张图片. 3. 左右两个按钮 用链接就好了. 左箭头 ...
- 纯CSS实现鼠标移入显示图标效果
1.效果预览 在淘宝或京东商城我们经常看到这样的效果:鼠标移动除某一个位置时出现下拉菜单,或者显示一个图标,那么这是如何实现的呢?我们今天就用CSS来实现鼠标移入时显示图标的一个效果. 下面是我们这次 ...
- 鼠标悬浮显示文字,右击图片复制该文字
右击图片复制id 右击图片复制id 鼠标悬浮显示文字 图片 方法 效果 右击图片复制id 鼠标悬浮显示文字 图片的alt属性可以产生鼠标悬浮,显示文字的功能.如果实现不了,可以加上title. 图片 ...
最新文章
- 以往计算机二级c语言填空题,计算机二级C语言考试填空题精选4
- 人文英语学习品牌「友邻优课」携手神策数据 精细化数据分析让每一次互动都有价值
- Ubuntu下面apache2安装
- 前缀转后缀(表达式)
- (转)Linux传输大文件(分割传输)
- 轻松学习分布式|系列2|负载均衡算法。
- 题解 luogu P6002 【[USACO20JAN]Berry Picking S】
- OpenGL着色器程序解析--初识着色器
- java 解析dojo_Dojo入门三种HelloWorld!
- Unity 动画模拟果冻抖动效果
- html文本框打tab,HTML标签textarea支持tab键
- GDR(Gradual Decoding Refresh, GradualDecoder Refresh)
- 实验:通过MUX-vlan实现vlan隔离
- matlab做的脑网络分析,eeg脑网络分析
- IOCP之accept、AcceptEx、WSAAccept的区别 .
- 粒径测量中的D10 D50 D90的含义
- 解决IE系列浏览器上传页面接收问题
- Spring+SpringMVC+Jsp实现校园二手交易系统
- 一个自动填写仿站小工具下载网址的按键精灵脚本
- PHP将Word转PDF文件
热门文章
- android 布局加圆角,Android通用圆角布局
- matlab sift乘积量化,PQ(乘积量化)应用于ANN算法原理和代码解读
- 指数分布族(Exponential Family)相关公式推导及在变分推断中的应用
- 简述用决策表设计测试用例的步骤_决策表设计测试用例的步骤(流程)?
- DSP芯片上算法加速技巧总结
- DSP芯片上电后在执行main函数前的执行流程
- 睢阳区中小学计算机提升培训,睢阳区中小学幼儿园教师信息技术应用能力.doc...
- SVN使用LDAP认证
- endnote文献管理
- wordpress加速之wp super cache 插件的使用