1.onclick点击小图可以切换图片

2.onmouseover显示黄色div与放大图片的div

3.onmouseout,2的内容消失

4.onmousemove黄色div跟随鼠标移到,但是不能超出图片范围,放大图片的部位与黄色div的位置有关联

代码实现:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>京东商品</title>
<style>
#all{
position: relative;
margin-left: 200px;
}
.little{
float: left;
margin: 10px;
color: transparent;
}
#main{
position: relative;
width: 350px;
height: 350px;
background-image: url(img/pics/img1-1.jpg);
}
#movediv{
position: absolute;
width: 160px;
height: 160px;
background-color: yellow;
opacity: 0.5;
}
#big{
width: 500px;
height: 500px;
position: absolute;
left: 400px;
top: 10px;
display: none;
background-image: url(img/pics/img1-1-1.jpg);
background-repeat: no-repeat;
}
</style>
</head>
<body>
<div id="all">
<div id="main">
<div id="movediv"></div>
</div>
<div>
<div class="little"><img src="img/pics/img1.jpg" /></div>
<div class="little"><img src="img/pics/img2.jpg" /></div>
<div class="little"><img src="img/pics/img3.jpg" /></div>
<div class="little"><img src="img/pics/img4.jpg" /></div>
<div class="little"><img src="img/pics/img5.jpg" /></div>
</div>
<div id="big"> </div>
</div>
<script>
// console.log(parseInt("123adc"));
var all=document.getElementById("all");
var littles=document.getElementsByClassName("little");
var main=document.getElementById("main");
var movediv=document.getElementById("movediv");
var big=document.getElementById("big");
for(let i=0;i<littles.length;i++){
littles[i].setAttribute("onclick","changeMain(this)");
}
function changeMain(obj){
var index=null;
for(var i=0;i<littles.length;i++){
if(littles[i]==obj){
index=i+1;;
}
}
console.log(index);
main.style.backgroundImage="url(img/pics/img"+index+"-1.jpg)";
big.style.backgroundImage="url(img/pics/img"+index+"-1-1.jpg)";
}
main.onmousemove=function(event){
movediv.style.display="block";
big.style.display="block";
movediv.style.top=event.clientY-movediv.offsetHeight*0.5-all.offsetTop+"px";
if(event.clientY>=main.offsetHeight-movediv.offsetHeight*0.5+all.offsetTop){
movediv.style.top=main.offsetHeight-movediv.offsetHeight+"px";
}
if(event.clientY<=movediv.offsetHeight*0.5+all.offsetTop){
movediv.style.top=0+"px";
}
movediv.style.left=event.clientX-movediv.offsetWidth*0.5-all.offsetLeft+"px";
if(event.clientX<=movediv.offsetWidth*0.5+200){
movediv.style.left=0+"px";
}
if(event.clientX>=main.offsetWidth-movediv.offsetWidth*0.5+all.offsetLeft){
movediv.style.left=main.offsetWidth-movediv.offsetWidth+"px";
}
big.style.backgroundPositionX=-parseInt(movediv.style.left)*8/5+"px";
big.style.backgroundPositionY=-parseInt(movediv.style.top)*8/5+"px";
}
main.onmouseout=function(){
movediv.style.display="none";
big.style.display="none";
}
</script>
</body>
</html>

【javascript】京东商品浏览放大镜效果的更多相关文章

  1. JavaScript实现的网页放大镜效果

    今天在观看视频学习的时候,学到了一个小技巧.就拿过来与大家进行分享一下啦. 实现的原理 分析需求:需要两张图,一大一小.然后根据鼠标的动作显示出不同的区域块的图像. 核心:鼠标事件的获取和处理.图片显 ...

  2. 用JavaScript中jQuery编写放大镜效果

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. js 实现商品放大镜效果

    知识点,需熟悉下面属性及含义: offsetLeft           //获取元素相对左侧的距离 (计算是从最左侧边框外开始) offsetTop           //获取元素相对顶部的距离 ...

  4. js、jquery实现放大镜效果

    在一些电商网站的商品详情页面,都会有放大镜效果,实现起来并不是很困难,今天用了两个小时,写了一个放大镜效果的实例,来分享给大家! 实现的效果大概是这个样子的 预览 先来看一下效果吧,点击下面的链接预览 ...

  5. 原生javascript实现图片放大镜效果

    当我们在电商网站上购买商品时,经常会看到这样一种效果,当我们把鼠标放到我们浏览的商品图片上时,会出现类似放大镜一样的一定区域的放大效果,方便消费者观察商品.今天我对这一技术,进行简单实现,实现图片放大 ...

  6. JavaScript之放大镜效果

    在网上也浏览过许多关于JavaScript放大镜效果的文章,有的代码解释得些隐晦难懂,看的我头有点晕晕的╮(╯﹏╰)╭,我的心情是这样的: 吐槽完了,我们动动小鼠标,当鼠标经过下面这张美女图片时就实现 ...

  7. 利用JS实现购物网站商品放大镜效果

    大家几乎都有在网上购物的经验,有的网站会有一个商品放大镜功能, 就是把鼠标移到图片上的时候,旁边会有另外一张大的图片展示,等同于 放大镜效果,那这样的效果怎样实现的呢,我把代码发给大家,请大家参考. ...

  8. 【JavaScript】放大镜效果

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  9. JavaScript之放大镜效果2

    在放大图片效果的同时,我们怎么原图和放大窗体增加间隔呢? 我们只需应用一个table就行了: 源码上: <!DOCTYPE html PUBLIC "-//W3C//DTD HTML ...

随机推荐

  1. Java 常用API(一)

    目录 Java 常用API(一) 1. Scanner类 引用类型的一般使用步骤 Scanner的使用步骤 例题 2. 匿名对象 概述 匿名对象作为方法的参数 匿名对象作为方法的返回值 3. Rand ...

  2. 10_CSS入门和高级技巧(8)

    图片透明 先来复习一下盒子的透明问题: opacity:0.6; 介于0~1之间,为了让IE兼容,我们要使用IE自己的滤镜: filter:alpha(opacity=60); 盒子的透明,会让里面的 ...

  3. 【Scala】看代码,初步了解Apply方法

    class ApplyTest(val name:String) { /** * apply源码 * def apply(x: Int, xs: Int*): Array[Int] = { * val ...

  4. CSS实现div填充剩余高度

    相信小伙伴们经常会遇到这个问题,我也是填了很多坑,查了很多资料,才解决的,下面我列出2个方法: 我们的需求如图: 1:(这个方法不推荐使用,因为可能会因为设备不同,而出现未知BUG,特别是div出现p ...

  5. vue面试常遇到的面试题

    最近面试了好几家公司,总结一下经常被问到的面试题. 首先呢,一开始先来一个自我介绍,没啥好说的. 接下来就是考验你vue技术的问题了 一些常见的面试题 vue的生命周期 一共有八个阶段,分别为创建前后 ...

  6. navicat 远程链接Mysql问题

    mysql服务器需要配置 给远程访问配置权限:注意自己的用户名和密码 使用select host, user, password from mysql.user;查看是否配置好相应的用户和密码 nav ...

  7. linux centos7 和 windows下 部署 .net core 2.0 web应用

    centos7 下部署asp.net core 2.0应用 安装CentOS7 配置网络[可选] 安装.Net core2.0 创建测试Asp.net Core应用程序 正式部署项目 安装VMware ...

  8. 2018-06-28 jq CSS处理

    CSS处理 1.CSS样式 css() -> 获取jq对象的css样式 css({'':"'}) ->设置jq对象的css样式 相当于js对象的style()方法 2.位置 of ...

  9. Spring全家桶之SpringMVC(三)

    Spring MVC单个接收表单提交的数据   单个接收表单提交的参数 在实际开发中通过会在spring MVC的Controller里面接收表单提交过来的参数,这块代码该怎么去编写呢? 示例: 编写 ...

  10. Docker & k8s 系列一:快速上手docker

    Docker & k8s 系列一:快速上手docker 本篇文章将会讲解:docker是什么?docker的安装,创建一个docker镜像,运行我们创建的docker镜像,发布自己的docke ...