Javascript 如何使用jquery对单个图像标记中传递的所有图像在鼠标上方应用缩放效果?

Javascript 如何使用jquery对单个图像标记中传递的所有图像在鼠标上方应用缩放效果?,javascript,python,html,django,Javascript,Python,Html,Django,我试图在鼠标上方缩放图像,但缩放仅应用于第一张图像 我在django模板中使用给定的代码来缩放图像 {% for image in images_obj %} <img class="drift-demo-trigger" data-zoom="{% static '/images/catalog/products/thumbnail/' %}{{image}}" src="{% static '/images/catalog/products/thumbnai

我试图在鼠标上方缩放图像,但缩放仅应用于第一张图像

我在django模板中使用给定的代码来缩放图像

{% for image in images_obj %}
    <img class="drift-demo-trigger" data-zoom="{% static 
    '/images/catalog/products/thumbnail/' %}{{image}}" src="{% static 
    '/images/catalog/products/thumbnail/' %}{{image}}" alt="IMG-PRODUCT"  
    style="width:99%;border:1px solid #ccc;">

    <div class="detail">                                            
       <section>                                                    
       </section>                                                                                    
    </div>
{% endfor %}

new Drift(document.querySelector('.drift-demo-trigger'), {
        paneContainer: document.querySelector('.detail'),
        inlinePane: 900,
        inlineOffsetY: -85,
        containInline: true,
        hoverBoundingBox: true
});

{%用于图像中的图像\u obj%}
{%endfor%}
新的漂移(document.querySelector('.Drift demo trigger'){
paneContainer:document.querySelector(“.detail”),
内联窗格:900,
inlineOffsetY:-85,
对,,
hoverBoundingBox:true
});

应缩放循环中的所有图像,但当前只有第一个图像可以缩放。

在您的html代码之前尝试此操作:

<style>
* {box-sizing: border-box;}
.img-zoom-container {
  position: relative;
}
.img-zoom-lens {
  position: absolute;
  border: 1px solid #d4d4d4;
  /*set the size of the lens:*/
  width: 80px;
  height: 80px;
}
.img-zoom-result {
  border: 1px solid #d4d4d4;
  /*set the size of the result div:*/
  width: 400px;
  height: 400px;
}
</style>
<script>
function imageZoom(imgID, resultID) {
  var img, lens, result, cx, cy;
  img = document.getElementById(imgID);
  result = document.getElementById(resultID);
  /*create lens:*/
  lens = document.createElement("DIV");
  lens.setAttribute("class", "img-zoom-lens");
  /*insert lens:*/
  img.parentElement.insertBefore(lens, img);
  /*calculate the ratio between result DIV and lens:*/
  cx = result.offsetWidth / lens.offsetWidth;
  cy = result.offsetHeight / lens.offsetHeight;
  /*set background properties for the result DIV:*/
  result.style.backgroundImage = "url('" + img.src + "')";
  result.style.backgroundSize = (img.width * cx) + "px " + (img.height * cy) + "px";
  /*execute a function when someone moves the cursor over the image, or the lens:*/
  lens.addEventListener("mousemove", moveLens);
  img.addEventListener("mousemove", moveLens);
  /*and also for touch screens:*/
  lens.addEventListener("touchmove", moveLens);
  img.addEventListener("touchmove", moveLens);
  function moveLens(e) {
    var pos, x, y;
    /*prevent any other actions that may occur when moving over the image:*/
    e.preventDefault();
    /*get the cursor's x and y positions:*/
    pos = getCursorPos(e);
    /*calculate the position of the lens:*/
    x = pos.x - (lens.offsetWidth / 2);
    y = pos.y - (lens.offsetHeight / 2);
    /*prevent the lens from being positioned outside the image:*/
    if (x > img.width - lens.offsetWidth) {x = img.width - lens.offsetWidth;}
    if (x < 0) {x = 0;}
    if (y > img.height - lens.offsetHeight) {y = img.height - lens.offsetHeight;}
    if (y < 0) {y = 0;}
    /*set the position of the lens:*/
    lens.style.left = x + "px";
    lens.style.top = y + "px";
    /*display what the lens "sees":*/
    result.style.backgroundPosition = "-" + (x * cx) + "px -" + (y * cy) + "px";
  }
  function getCursorPos(e) {
    var a, x = 0, y = 0;
    e = e || window.event;
    /*get the x and y positions of the image:*/
    a = img.getBoundingClientRect();
    /*calculate the cursor's x and y coordinates, relative to the image:*/
    x = e.pageX - a.left;
    y = e.pageY - a.top;
    /*consider any page scrolling:*/
    x = x - window.pageXOffset;
    y = y - window.pageYOffset;
    return {x : x, y : y};
  }
}
</script>


*{框大小:边框框;}
.img缩放容器{
位置:相对位置;
}
.img变焦镜头{
位置:绝对位置;
边框:1px实心#d4;
/*设置镜头的大小:*/
宽度:80px;
高度:80px;
}
.img缩放结果{
边框:1px实心#d4;
/*设置结果div的大小:*/
宽度:400px;
高度:400px;
}
函数imageZoom(imgID、resultID){
var-img,lens,result,cx,cy;
img=document.getElementById(imgID);
结果=document.getElementById(resultID);
/*创建镜头:*/
lens=document.createElement(“DIV”);
镜头属性(“类”、“img变焦镜头”);
/*插入镜头:*/
img.parentElement.insertBefore(镜头,img);
/*计算结果DIV和镜头之间的比率:*/
cx=结果.offsetWidth/镜头.offsetWidth;
cy=结果.偏视/镜头.偏视;
/*设置结果DIV的背景属性:*/
result.style.backgroundImage=“url('”+img.src+“)”;
result.style.backgroundSize=(img.width*cx)+“px”+(img.height*cy)+“px”;
/*当有人将光标移动到图像或镜头上时,执行一项功能:*/
lens.addEventListener(“mousemove”,moveLens);
img.addEventListener(“mousemove”,moveLens);
/*以及触摸屏:*/
lens.addEventListener(“触摸移动”,moveLens);
img.addEventListener(“触摸移动”,移动镜头);
功能镜头(e){
变量pos,x,y;
/*防止在图像上移动时可能发生的任何其他操作:*/
e、 预防默认值();
/*获取光标的x和y位置:*/
pos=getCursorPos(e);
/*计算透镜的位置:*/
x=位置x-(镜头偏移宽度/2);
y=位置y-(镜头离视/2);
/*防止镜头位于图像外部:*/
如果(x>img.width-lens.offsetWidth){x=img.width-lens.offsetWidth;}
如果(x<0){x=0;}
如果(y>img.height-lens.offsetHeight){y=img.height-lens.offsetHeight;}
如果(y<0){y=0;}
/*设置镜头的位置:*/
lens.style.left=x+“px”;
lens.style.top=y+“px”;
/*显示镜头“看到”的内容:*/
result.style.backgroundPosition=“-”+(x*cx)+“px-”+(y*cy)+“px”;
}
函数getCursorPos(e){
变量a,x=0,y=0;
e=e | | window.event;
/*获取图像的x和y位置:*/
a=img.getBoundingClientRect();
/*计算光标相对于图像的x和y坐标:*/
x=e.pageX-a.左;
y=e.pageY-a.top;
/*考虑任何页面滚动:*/
x=x-window.pageXOffset;
y=y-window.pageYOffset;
返回{x:x,y:y};
}
}
现在使用html:

{% extends 'base.html' %}
{% block content %}
<div class="col-md-12"style="margin-left: 0px">
<div class="panel-body">
<table class="table-responsive">
<tbody>
<tr>
<td><div class="img-zoom-container">
<img id="myimage" src="{{ member.immagine.url }}" width="860" >
</div></td><td>
<div id="myresult" class="img-zoom-result"></div></td></tr>
</tbody>
</table>
<br>
<script>
// Initiate zoom effect:
imageZoom("myimage", "myresult");
</script>
</div>
</div>
</div>
</div>

{% endblock %}
{%extends'base.html%}
{%block content%}

//启动缩放效果: 图像缩放(“我的图像”、“我的结果”); {%endblock%}
太好了。。。。。