功能需求:

1、分为三个模块
2、鼠标经过小图片盒子,黄色的遮挡层和大图片盒子显示,离开隐藏两个盒子功能
3、黄色的遮挡层跟随着鼠标移动
4、移动黄色遮挡层,大图片跟随着移动

大图片移动距离=(遮挡层移动距离*大图片最大移动距离)/ 遮挡层最大移动距离

<style>
body,
div {
margin: 0;
padding: 0;
}
.product {
position: relative;
width: 400px;
height: 400px;
margin: 50px 0 0 20px;
border: 1px solid #000;
}
.preview_img img {
width: 300px;
height: 300px;
margin: 50px 50px;
}
.mask {
position: absolute;
display: none;
top: 20px;
left: 30px;
width: 80px;
height: 80px;
background-color: yellow;
opacity: 0.5;
cursor: move;
}
.big {
position: absolute;
display: none;
left: 410px;
top: 0;
width: 500px;
height: 500px;
z-index: 999;
overflow: hidden;
}
.big img {
position: absolute;
top: 0;
left: 0;
width: 400px;
height: 400px;
}
</style>
<!-- 引入js文件 -->
<script src="detail.js"></script>
</head>
<body>
<div class="product">
<div class="preview_img">
<img src="images/xs.jpg" alt="" />
<div class="mask"></div>
<div class="big">
<img src="images/xs.jpg" alt="" class="bigImg" />
</div>
</div>
</div>
</body>
JS页面

//页面预加载
window.addEventListener(“load”, function () {
var preview_img = document.querySelector(“.preview_img”);
var mask = document.querySelector(“.mask”);
var big = document.querySelector(“.big”);

//1.鼠标经过 preview_img 就显示和隐藏 mask 遮挡层 和 big 大盒子
preview_img.addEventListener(“mouseover”, function () {
mask.style.display = “block”;
big.style.display = “block”;
});
preview_img.addEventListener(“mouseout”, function () {
mask.style.display = “none”;
big.style.display = “none”;
});
//把鼠标坐标给遮挡层是不合适的,因为遮挡层坐标以父盒子为准
preview_img.addEventListener(“mousemove”, function (e) {
//(1)先计算出鼠标在盒子内的坐标
var x = e.pageX - this.offsetLeft;
var y = e.pageY - this.offsetTop;
//(2)减去盒子高度宽度的一半
//(3)mask 移动的距离
var maskX = x - mask.offsetWidth / 2;
var maskY = y - mask.offsetHeight / 2;
//(4)如果坐标小于0 就让他停在 0 的位置(即超出盒子范围就停止)
var egdeX = preview_img.offsetWidth - mask.offsetWidth;
var egdeY = preview_img.offsetHeight - mask.offsetHeight;
if (maskX <= 0) {
maskX = 0;
} else if (maskX >= egdeX) {
maskX = egdeX;
}
if (maskY <= 0) {
maskY = 0;
} else if (maskY >= egdeY) {
maskY = egdeY;
}
mask.style.left = maskX + “px”;
mask.style.top = maskY + “px”;
//大图片的移动距离 = 遮挡层移动距离大图片最大移动距离 / 遮挡层的最大移动距离
var bigImg = document.querySelector(“.bigImg”);
//大图片最大移动距离
var bigMax = bigImg.offsetWidth - big.offsetWidth;
//大图片的移动距离 x y
var bigX = (maskX
bigMax) / egdeX;
var bigY = (maskY * bigMax) / egdeY;
bigImg.style.left = -bigX + “px”;
bigImg.style.top = -bigY + “px”;
});
});
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

时间: 2021-10-26

JavaScript实现放大镜详细
目录 1.效果图 2.实现原理 3.总结 1.效果图 2.实现原理 借助宽高等比例放大的两张图片,结合js中鼠标偏移量.元素偏移量.元素自身宽高等属性完成:左侧遮罩移动Xpx,右侧大图移动X*倍数px:其余部分就是用小学数学算一下就OK了. HTML和CSS: <divclass="wrap"> <!-- 小图与遮罩 --> <div id="small"> <img src="img/1.jpg" aljavaScript实现放大镜特效要实现的效果:鼠标放到小图片上小图片上方会出现一个小块,这个小块里面的区域会放大显示到右边大图里面(如下图所示) 这个效果主要用到的是:鼠标的坐标e.clientX,e.clientY,偏移量offsetLeft,offsetTop,offsetWidth,sffsetHeight等属性. HTML和CSS代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset=”UTF-8&

JavaScript仿淘宝放大镜效果
本文实例为大家分享了JavaScript实现淘宝放大镜效果的具体代码,供大家参考,具体内容如下 html代码 <div class="thumbnail"> <img src="./img/12-1Z930152149 (2).jpg" alt=""> <div class="magnifier"></div> </div> <div class=”o
JavaScript实现放大镜效果
本文实例为大家分享了JavaScript实现放大镜效果的具体代码,供大家参考,具体内容如下 这次实现的效果如下: 这次的案例稍微有一点难度,在css和js上都需要多加思考,话不多说,让我们来开始吧~ 1.首先我们需要使用html和css规划好整体的布局,即两个相邻的盒子A和B,左边的盒子A中还有一个小盒子S.为了实现相邻,我采用的方法是为其均设置position:absolute ,然后设置left和top的值来使其相邻. 小盒子S我们同样可以为其设置position:absolute,调整一下

JavaScript面向对象实现放大镜案例

本文实例为大家分享了JavaScript面向对象实现放大镜的具体代码,供大家参考,具体内容如下 效果图 实现原理分析 如图所示 触发鼠标的移动事件时,根据事件对象的 clientX 和 clientY 属性得到实时的坐标点 x 和 y 值 ,减去 small_box 的 offsetLeft 值 和 cutting_box 的宽度的一半 ,可以得到 cutting_box 的偏移量 left 值,top值同理.当 cutting_box 到达右侧和下侧时,left 和 top 取得最大值.用 实
Javascript实例项目放大镜特效的实现流程

目录 前言 案例:仿京东放大镜效果 offset系列 client系列 scroll系列 三大系列总结 前言 本票博客主要是放大镜案例,里面涉及到的知识点会提出来,可放心食用~后有源代码. 案例:仿京东放大镜效果 效果见下图: 功能要求: 当鼠标移动到小图片上时,遮罩层出现,同时旁边大图片也出现,鼠标移出,遮罩层消失,大图片也消失. 遮罩层只能在小盒内子移动,不能超出. 遮罩层在小盒子内移动,大图片显示对应的板块. 案例分析: 元素的隐层和显示 遮罩层的移动范围用offset计算 计算出大盒子内
js实现放大镜效果的思路与代码
本文实例为大家分享了js实现放大镜效果的具体代码,供大家参考,具体内容如下 样式展示: 思路 先准备两张图片,一张小图,一张大图,并且两张图片有一个整数比值 在小图片的上方设置一个放大镜样式,背景设为透明色即可 大图片外边套一个父元素,超出父元素隐藏,大小为只能容纳你的放大部分即可 父元素与放大镜样式的比值=大图与小图的比值 在小图片上进行鼠标移动时获取鼠标的坐标,得到鼠标当前处于小图片上的坐标 根据对应的比例求出大图片的坐标并移动大图片令放大部分处于父元素可见范围 代码 1.html部分 <d
JavaScript仿京东放大镜效果

本文实例为大家分享了JavaScript实现京东放大镜效果的具体代码,供大家参考,具体内容如下 案例分析 整个案例可以分为三个功能模块 鼠标经过小图片盒子, 黄色的遮挡层 和 大图片盒子显示,离开隐藏2个盒子功能 黄色的遮挡层跟随鼠标功能. 移动黄色遮挡层,大图片跟随移动功能. 鼠标经过小图片盒子, 黄色的遮挡层 和 大图片盒子显示,离开隐藏2个盒子功能 就是显示与隐藏 移动黄色遮挡层,大图片跟随移动功能,大图片的移动距离要跟黄色遮挡层的比例相等. 求大图片的移动距离公式 代码 <!DOCTYP

js仿京东放大镜效果
本文实例为大家分享了js仿京东放大镜效果的具体代码,供大家参考,具体内容如下 1.效果1:鼠标经过前 2.效果2:鼠标放上去,弹出右边放大镜 3.效果3:鼠标在小盒子移动,放大镜跟着移动 4.源代码如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name=”viewport” content=&q
JavaScript实现京东放大镜效果

本文实例为大家分享了JavaScript实现京东放大镜展示的具体代码,供大家参考,具体内容如下 实现效果: 1.鼠标放到图片上显示放大镜和详细图,鼠标离开时什么都不显示(效果消失) 2.鼠标一直在放大镜的中间,且放大镜随鼠标移动 3.放大镜不能出缩列图的盒子 4.鼠标放在详细图上详细图消失 实现细节: 1.大盒子虽然比详细图的盒子宽度小,但是在逻辑上详细图的盒子属于大盒子 2.详细图不能使用浮动,因为盒子下面一般会有文字内容 3.以父盒子来定位详细图的盒子 4.放大镜鼠标选中为十字形 5
Javascript仿京东放大镜的效果
随便找一个图片吧.小伙伴们,想怎么玩就怎么玩(注意路径),亲自测试,绝对没问题. 话不多说,请看代码: <html> <head> <meta charset="utf-8"> <style type="text/css"> body,div{margin: 0; padding: 0;} #zhuti{ margin:50px; position: relative; } #small{ width: 300px;
JavaScript仿微博输入框效果(案例分析)

这篇文章给大家分享一个小的JavaScript的案例,就是模仿微博输入框的效果. 效果图: 代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>仿微博输入框效果</title> <script src="jquery.js"></script> </h

Android使用Scroll+Fragment仿京东分类效果

本文实例为大家分享了Android九宫格图片展示的具体代码,供大家参考,具体内容如下 实现思路:首先说下布局,整个是一个横向的线性布局,左边是一个ScrollView,右边是一个FrameLayout,在代码中动态向ScrollView中添加TextView,然后根据TextView的点击事件使用Fragment替换FrameLayout 首先看下布局: <LinearLayout xmlns:android=”http://schemas.android.com/apk/res/andr
Android仿京东分类效果

本文实例为大家分享了Android仿京东分类效果展示的具体代码,供大家参考,具体内容如下 1.写一个fragment import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView;
Android通过实现GridView的横向滚动实现仿京东秒杀效果
实现GridView的横向滚动 效果如下图: 具体实现的代码 •1. 主界面布局代码:activity_main.xml <?xml version=”1.0” encoding=”utf-8”?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent"JavaScript仿京东秒杀倒计时本文实例为大家分享了JavaScript仿京东秒杀倒计时的具体代码,供大家参考,具体内容如下 仿京东秒杀倒计时 html代码 <div id="box"> <div class="txt">秒杀倒计时</div> <div class="hour"></div> <!-- 小时与分钟之间的冒号 --> <span class="h_m">:&l
原生javascript实现图片放大镜效果

当我们在电商网站上购买商品时,经常会看到这样一种效果,当我们把鼠标放到我们浏览的商品图片上时,会出现类似放大镜一样的一定区域的放大效果,方便消费者观察商品.今天我对这一技术,进行简单实现,实现图片放大镜效果. 我在代码中进行了代码编写的思路的说明和详细的代码注释,方便读者,请看代码: <html> <head> <meta charset="UTF-8"> <title>Document</title> <style t

更多相关文章

  1. Android水波纹点击效果
  2. 收集android上开源的酷炫的交互动画和视觉效果:Interactive-anima
  3. android的动画
  4. Flutter实战(八)---巧用SizedBox实现Margin效果
  5. android 抗锯齿效果
  6. Android(安卓)ListView元素间隙线自定义渐变效果
  7. EditText设置更多文字为省略号
  8. Android(安卓)特殊界面效果之——透明界面
  9. android:layout_weight属性详解

随机推荐

  1. googlesamples/android-topeka学习笔记(
  2. Android Audio System 架构初探:库层(一)
  3. 利用opengl es画立方体的简单流程
  4. Android自定义万能Canvas画布
  5. Android模拟器BlueStacks的使用
  6. Android webservice的用法详细讲解
  7. android 音频播放类
  8. Android--自定义控件解析(一)
  9. AndroidStudio编写JNI程序
  10. Android Studio 在 win7 下的安装