Javascript 如何对图片阵列使用缩放?
我需要一个缩放画廊。 我喜欢这个代码,因为它很短 但它使用id,所以我不能用它来建造画廊 我把id改成了类,但没用Javascript 如何对图片阵列使用缩放?,javascript,Javascript,我需要一个缩放画廊。 我喜欢这个代码,因为它很短 但它使用id,所以我不能用它来建造画廊 我把id改成了类,但没用 如何更改此代码以使用类?您可以使用动态ID进行更改。我创建了一个片段,其中有4个具有不同ID的不同图像,并且缩放效果有效 我认为这样做比重写类的缩放功能更容易 //图像列表 //使用随机ID! 常量图像=[{ id:Date.now()-400, src:'https://loremflickr.com/1200/960/girl/all?random=1' }, { id:D
如何更改此代码以使用类?您可以使用动态ID进行更改。我创建了一个片段,其中有4个具有不同ID的不同图像,并且缩放效果有效 我认为这样做比重写
类的缩放功能更容易
//图像列表
//使用随机ID!
常量图像=[{
id:Date.now()-400,
src:'https://loremflickr.com/1200/960/girl/all?random=1'
},
{
id:Date.now()-200,
src:'https://loremflickr.com/1200/960/girl/all?random=2'
},
{
id:Date.now()+200,
src:'https://loremflickr.com/1200/960/girl/all?random=3'
},
{
id:Date.now()+400,
src:'https://loremflickr.com/1200/960/girl/all?random=4'
},
];
//显示图像
(功能(图像){
让html=''
images.forEach(image=>{
html+=`
ID:${image.ID}
`
})
const container=document.getElementById('容器')
container.innerHTML=html
const imagelist=document.querySelectorAll('.img zoom container>img')
//为随机ID添加事件侦听器
imagelist.forEach(图像=>{
image.addEventListener('mouseenter',函数(e){
imageZoom(e.target.id,`${e.target.id}-result`)
})
})
})(图像);
//来自W3学校的代码
// https://www.w3schools.com/howto/howto_js_image_zoom.asp
函数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>图像宽度-镜头偏移宽度){
x=img.width-lens.offsetWidth;
}
if(x<0){
x=0;
}
如果(y>图像高度-镜头离视){
y=图像高度-镜头离视;
}
if(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
};
}
}
*{
框大小:边框框;
}
d-flex{
显示器:flex;
}
.img缩放容器{
位置:相对位置;
}
.img变焦镜头{
位置:绝对位置;
边框:1px实心#d4;
/*设置镜头的大小:*/
宽度:40px;
高度:40px;
}
.img缩放结果{
边框:1px实心#d4;
/*设置结果div的大小:*/
宽度:300px;
高度:300px;
}
你可能会更好。只是好奇:你为什么不能使用id?我不能t使用id
s,因为我有动态图片数组。谢谢。你帮了我。