js放大镜

  <!DOCTYPE html>
  <html>
  <head>
  <meta charset="UTF-8">
  <title></title>
  <style type="text/css">
  *{
  margin:0px;
  padding:0px;
  border:0px;
  }
  #demo{
  width:800px;
  height:800px;
  border:1px solid red;
  position:relative;
  display: block;
  margin: 50px;
  }
  #small-box{
  width:230px;
  height:230px;
  position:relative;
  z-index:1111;
  }
  #float-box{
  display: none;
  width:160px;
  height:120px;
  position:absolute;
  top:0px;
  left:0px;
  background: #ffffcc;
  border:1px solid red;
  opacity: 0.5;
  filter:alpha(opcity=50);
  cursor:move;
  }
  #big-box{
  display: none;
  position:absolute;
  top:100px;
  left:300px;
  width:487px;
  height:365px;
  border:1px solid green;
  overflow: hidden;
  z-index:1;
   
  }
  #big-box img{
  position:absolute;
  z-index: 5;
  top:0px;
  left:0px;
  }
  </style>
  <script type="text/javascript">
  window.onload=function(){
  var objdemo=document.getElementById("demo");
  var objsmallbox=document.getElementById("small-box");
  var objfloatbox=document.getElementById("float-box");
  var objbigbox=document.getElementById("big-box");
  var objbigboximg=objbigbox.getElementsByTagName("img")[0];
  objsmallbox.onmouseover=function(e){
  e.preventDefault();
  e.stopPropagation();
  objfloatbox.style.display="block";
  objbigbox.style.display="block";
   
  }
  objsmallbox.onmouseout=function(e){
  e.preventDefault();
  e.stopPropagation();
  objfloatbox.style.display="none";
  objbigbox.style.display="none";
   
  }
  objsmallbox.onmousemove=function(e){
  var _ev=e;
  var left=_ev.clientX-objdemo.offsetLeft-objsmallbox.offsetLeft-objfloatbox.offsetWidth/2 ;
  var top=_ev.clientY-objdemo.offsetTop-objsmallbox.offsetTop-objfloatbox.offsetHeight/2;
   
  if(left<0){
  left=0;
  }else if(left>(objsmallbox.offsetWidth-objfloatbox.offsetWidth)){
  left=objsmallbox.offsetWidth-objfloatbox.offsetWidth;
  }
   
  if(top<0){
  top=0;
  }else if(top>(objsmallbox.offsetHeight-objfloatbox.offsetHeight)){
  top=objsmallbox.offsetHeight-objfloatbox.offsetHeight;
  }
  // console.log(objsmallbox.offsetHeight);
  // console.log(objfloatbox.offsetHeight);
  objfloatbox.style.left=left+"px";
  objfloatbox.style.top=top+"px";
  var parcentX=left/(objsmallbox.offsetWidth-objfloatbox.offsetWidth);
  var parcentY=top/(objsmallbox.offsetHeight-objfloatbox.offsetHeight);
  console.log(parcentX)
  console.log(parcentY)
  console.log(objbigboximg.offsetWidth)
  console.log(objbigboximg.offsetHeight)
  objbigboximg.style.left=-parcentX*(objbigboximg.offsetWidth-objbigbox.offsetWidth)+"px";
  objbigboximg.style.top=-parcentY*(objbigboximg.offsetHeight-objbigbox.offsetHeight)+"px";
  }
  }
  </script>
  </head>
  <body>
  <!--放大镜的原理:大图片移动的位置==放大镜图片移动的偏移量-->
  <div id="demo">
  <div id="small-box">
  <div id="float-box"></div><!--放大镜盒子-->
  <img src="img/1.jpg" /><!--小图片-->
  </div>
  <div id="big-box">
  <img src="img/1.jpg" style="width:1000px;height:1000px"/><!--大图片-->
  </div>
  </div>
  </body>
  </html>
   
时间: 2024-10-11 03:13:22

js放大镜的相关文章

原生js放大镜效果

效果: 1.  鼠标放上去会有半透明遮罩.右边会有大图片局部图 2.  鼠标移动时右边的大图片也会局部移动 放大镜的关键原理: 鼠标在小图片上移动时,通过捕捉鼠标在小图片上的位置,定位大图片的相应位置: 放大镜的移动方向和大图片的移动方向:横向和纵向都是相反,才可以保证同步: 页面元素: 技术点:事件捕获,定位 难点:计算 需要元素:小图片和大图片,存放小图片和大图片的容器,有一个放大镜: 涉及到的技术点: (1)       鼠标事件的捕获:onmouseover(进入).onmouseout

JS放大镜特效(兼容版)

原理 1.鼠标在小图片上移动时,通过捕获鼠标在小图片上的位置,定位大图片的相应位置 设计 1.页面元素:小图片.大图片.放大镜 2.技术点:事件捕获.定位 1)onmouseover:会在鼠标指针移动到指定的对象上时发生 2)onmouseout:会在鼠标指针移出指定的对象时发生 3)onmousemove:会在鼠标指针移动时发生 4)各边距表示 5)ofgsetLeft与style.left对比 style.left返回的是字符串,比如:30px,offsetLeft返回的是数值30 styl

最全js 放大镜效果

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-

js放大镜特效

原理分析:当鼠标在小图片上移动时,通过捕捉鼠标在小图片上的位置,定位大图片的相应位置.(同时,当鼠标在小图片上移动时,右侧大图片往相反的方向移动.) 放大镜特效设计: ①页面元素:小图片,大图片以及盛放图片的容器 ②事件捕获:onmouseover(当鼠标指针移动到指定对象上时发生).onmouseout(当鼠标指针移除指定对象时发生).onmousemove(当鼠标指针移动时发生) ③技术难点:offsetLeft(相对于父元素的左位移).offsetTop (相对于父元素的顶部位移) 注:o

JS 放大镜特效

放大镜特效 放大镜在商城网站经常会看到,作为前端,写这么一个肯定是小case,本人就献丑了.如果没有一点思路的同学,可以先学DOM事件里的事件位置.距离.宽高各种方法属性. 那么直接上代码,代码里各种注释相当完备: 栗子代码链接 <!doctype html> <title>放大镜</title> <meta charset="utf-8"> <style> *{ margin:0; padding:0; list-style

js放大镜效果

<!doctype html> <html> <head> <meta charset="utf-8"> <meta name="author" content="智能社 - zhinengshe.com"> <meta name="copyright" content="智能社 - zhinengshe.com"> <title

javascript -- (js放大镜效果)

<style> * { margin: 0; padding: 0; } </style> <script type = "text/javascript" > var body = document.getElementsByTagName('body')[0]; var box1 = document.createElement('div'); var box2 = document.createElement('div'); var mask

JS 放大镜

http://www.elevateweb.co.uk/image-zoom/examples HTML <img id="zoom_05" src="small/image1.png" data-zoom-image="large/image1.jpg"/> JAVASCRIPT $("#zoom_05").elevateZoom({ zoomType : "inner", cursor: &

原生js实现的放大镜效果

这是我用原生js写的放大镜效果,与各种各样的框架技术相比,我喜欢使用原生的js,在这里,想和大家一起谈谈原生和框架技术的理解与个人喜好. <!DOCTYPE HTML><html> <head> <title>js放大镜效果</title> <meta http-equiv="content-type" content="text/html;charset=utf-8"/> <style&