js原生淘宝京东宝贝放大镜效果
js实现商城放大镜效果
效果:
- 鼠标放上去会有半透明遮罩、右边会有大图片局部图。
- 鼠标移动时右边的大图片也会局部移动。
技术点:
Event
Event 是一个事件对象,当一个事件发生后,和当前事件发生相关的详细信息被临时存储到一个指定的地方,也就是event对象,以方便我们在需要的时候调用。
事件捕获,定位
`难点``:计算。
**接下来是demo分享:
css部分:
* {
margin: 0;
padding: 0;
}
/* img {
vertical-align: top;
} */
.box {
width: 350px;
height: 350px;
position: relative;
border: 1px solid black;
margin: 150px 0 0 300px;
}
.big {
width: 450px;
height: 450px;
position: absolute;
border: 1px solid black;
left: 400px;
top: 0;
display: none;
overflow: hidden;
}
.small {
position: relative;
}
.mask {
width: 100px;
height: 100px;
background-color: rgba(255, 255, 0, 0.4);
position: absolute;
left: 0;
top: 0;
cursor: move;
display: none;
}
.big img {
position: absolute;
left: 0;
top: 0;
}
html结构部分:
<div class="box" id="oBox">
<div class="small" id="oSmall">
<img src="./images/001.jpg" alt="">
<div class="mask" id="oMask"></div>
</div>
<div class="big" id="oBig">
<img src="./images/0001.jpg" alt="">
</div>
</div>
//第一步获取节点
let box = document.getElementById('oBox');
let small = box.children[0]; //获取盒子的第一个子节点samll
let big = box.children[1]; //获取盒子的第二个子节点big
let mask = small.children[1]; //获取小盒子里的遮罩
let bigImg = big.children[0]; //获取大盒子里的图片
//鼠标进入small 遮罩(mask)大盒子(big)display:block
small.onmouseover = function() {
mask.style.display = 'block';
big.style.display = 'block';
};
//鼠标离开small 遮罩(mask)大盒子(big)display:none
small.onmouseout = function() {
mask.style.display = 'none';
big.style.display = 'none';
};
let x = 0;
let y = 0;
small.onmousemove = function(even) {
var even = even || window.event;
// 获取鼠标在small里的坐标
let x = even.clientX - this.offsetParent.offsetLeft - mask.offsetWidth / 2;
let y = even.clientY - this.offsetParent.offsetTop - mask.offsetHeight / 2;
// 限制住鼠标的坐标导致遮罩的位置越界
if (x < 0) {
x = 0;
} else if (x > small.offsetWidth - mask.offsetWidth) {
x = small.offsetWidth - mask.offsetWidth;
}
if (y < 0) {
y = 0;
} else if (y > small.offsetHeight - mask.offsetHeight) {
y = small.offsetHeight - mask.offsetHeight;
}
mask.style.left = x + 'px';
mask.style.top = y + 'px';
//注意大图片的方向
bigImg.style.top = -y * big.offsetHeight / small.offsetHeight + 'px';
bigImg.style.left = -x * big.offsetWidth / small.offsetWidth + 'px';
};
js原生淘宝京东宝贝放大镜效果的更多相关文章
- js 实现淘宝放大镜功能,可更改配置参数 带完整版解析代码[magnifier.js]
前言: 本人纯小白一个,有很多地方理解的没有各位大牛那么透彻,如有错误,请各位大牛指出斧正!小弟感激不尽. 本篇文章为您分析一下原生JS写淘宝放大镜效果 基本功能: 运 ...
- JS仿淘宝详情页菜单条智能定位效果
类似于淘宝详情页菜单条智能定位 对于每个人来说并不陌生!如下截图所示:红色框的那部分! 基本原理: 是用JS侦听滚动事件,当页面的滚动距离(页面滚动的高度)大于或者等于 "对象"( ...
- js 实现淘宝无缝轮播图效果,可更改配置参数 带完整版解析代码[slider.js]
前言: 本人纯小白一个,有很多地方理解的没有各位大牛那么透彻,如有错误,请各位大牛指出斧正!小弟感激不尽. 本篇文章为您分析一下原生JS写淘宝无缝轮播图效果 需求分析: ...
- jquery仿淘宝规格颜色选择效果
jquery实现的仿淘宝规格颜色选择效果源代码如下 jquery仿淘宝规格颜色选择效果 -收缩HTML代码 运行代码 [如果运行无效果,请自行将源代码保存为html文件运行] <script t ...
- 基于jQuery仿淘宝产品图片放大镜代码
今天给大家分享一款 基于jQuery淘宝产品图片放大镜代码.这是一款基于jquery.imagezoom插件实现的jQuery放大镜.适用浏览器:IE8.360.FireFox.Chrome.Safa ...
- 原生js仿淘宝手机购买选项代码
这是一款基于原生js实现仿淘宝手机信息购买选项效果源码,界面整体效果仿照淘宝购物选项设计,点击不同选项还可实时显示不同的价格计算结果,界面简洁大方.美观实用.可兼容目前最新的各类主流浏览器. 在线演示 ...
- javascript项目实战之原生js模拟淘宝购物车
通过JavaScript实现类似与淘宝的购物车效果,包括商品的单选.全选.删除.修改数量.价格计算.数目计算.预览等功能的实现.实现的效果图: 相应的代码: shoppingCart.html < ...
- js实现淘宝首页图片轮播效果
原文:http://ce.sysu.edu.cn/hope2008/Education/ShowArticle.asp?ArticleID=10585 <!DOCTYPE html> &l ...
- javascript--淘宝页面的放大镜效果
放大镜效果需求: 鼠标放入原图中,会出现一个黄色的遮盖层和一个放大的图片,鼠标移动时候,遮盖层会跟着鼠标一起移动,同时放大的图片会跟着一起移动. 实现过程: 1.鼠标移入,遮盖层和大图片显示 2.鼠标 ...
随机推荐
- 【SQL】BETWEEN操作符
BETWEEN 操作符在 WHERE 子句中使用,作用是选取介于两个值之间的数据范围. 操作符 BETWEEN ... AND 会选取介于两个值之间的数据范围.这些值可以是数值.文本或者日期. 注意: ...
- Metadata
元数据是关于数据的组织.数据域及其关系的信息,简言之,元数据就是关于数据的数据. Metadata is "data [information] that provides informat ...
- Dart 调用C语言混合编程
Dart 调用C语言本篇博客研究Dart语言如何调用C语言代码混合编程,最后我们实现一个简单示例,在C语言中编写简单加解密函数,使用dart调用并传入字符串,返回加密结果,调用解密函数,恢复字符串内容 ...
- 【剑指Offer】47、求1+2+3+4+···+n
题目描述: 求1+2+3+...+n,要求不能使用乘除法.for.while.if.else.switch.case等关键字及条件判断语句(A?B:C). 解题思路: 本题本身没有太多 ...
- python-if判断
1. python 条件语句 Python条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块. 可以通过下图来简单了解条件语句的执行过程: Python程序语言指定任何 ...
- Python列表、集合与字典(3)
目录 一.列表 二.集合 三.字典 一.列表 1. 列表初识 列表的使用为处理特定顺序排列的数据提供了便利,列表元素可以是字母.数字或者其他信息,同时所加元素之间不存在任何关系. 在Pytho ...
- BZOJ 3218 UOJ #77 A+B Problem (主席树、最小割)
大名鼎鼎的A+B Problem, 主席树优化最小割-- 调题死活调不对,一怒之下改了一种写法交上去A了,但是改写法之后第4,5个点常数变大很多,于是喜提UOJ全站倒数第三 目前还不知道原来的写法为什 ...
- win7的目录和vbox的共享,linux中没有权限打开
来自于 http://www.cnblogs.com/usegear/p/5120427.html win7的目录由vbox共享是个老话题.稳拿网上很多介绍. 在linux中通过文件夹不能打开,说没有 ...
- NYIST 99 单词拼接
单词拼接时间限制:3000 ms | 内存限制:65535 KB难度:5 描述给你一些单词,请你判断能否把它们首尾串起来串成一串.前一个单词的结尾应该与下一个单词的道字母相同.如 aloha dog ...
- orcale 查询
修改日期显示形式: alter session set nls_date_formate='DD-MON-RR'; alter session set nls_date_formate='yyyy-M ...