添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
Document

效果如下:

对于两张图片重叠,实现透视效果本质与前面是相同的,只要改变圆圈内使用的图片即可, 本质上两种方法都需要准备两张图片,并将其中一张隐藏

<!DOCTYPE html>
<html lang="en">
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
    .box{
    width: 100%;
    min-height: 100%;
    position: relative;
    .clicr{
    width:200px;
    height: 200px;
    border-radius: 50%;
    position: absolute;
    box-shadow: 1px 1px 10px 1px gray;
    left: 0;
    top: 0;
    overflow: hidden;
    opacity: 0 ;
    .clicr img{ /*表示小圆圈里面的图片,即被放大的部分*/
    position: absolute;
    left: 0;
    top: 0;
    </style>
</head>
        <div class="box">
             <img src="https://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/199/199-bigskin-4.jpg" alt="" width="100%">
             <div class="clicr">
                 <img src="https://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/515/515-bigskin-2.jpg" alt="" >
    <script>
        const box = document.querySelector(".box");
        const clicr = document.querySelector(".clicr");
        const bigImg = document.querySelector(".clicr img"); //放大镜图片
        box.addEventListener('mousemove',function(e){
        clicr.style.opacity="1"; //只有在图片内才显示
        let clicrLeft = e.clientX - box.offsetLeft - clicr.offsetWidth/2;//让鼠标在放大镜中间
        let clicrTop = e.clientY -  box.offsetTop - clicr.offsetHeight/2;
        clicr.style.left = clicrLeft + "px";//放大镜相对于box的偏移量
        clicr.style.top = clicrTop + "px";
        let bigImgLeft = (clicrLeft + clicr.offsetWidth / 2)/box.offsetWidth * bigImg.offsetWidth - clicr.offsetWidth/2; //得到放大镜里图片的位置
        let bigImgTop = (clicrTop + clicr.offsetTop / 2)/box.offsetHeight * bigImg.offsetHeight - clicr.offsetTop / 2;
        bigImg.style.left=  -bigImgLeft + "px";
        bigImg.style.top=  -bigImgTop + "px";
    </script>
</body>
</html>

效果如下:

之前写过一篇关于电商项目商品详情页面的 图片 放大镜 效果 :电商项目商品详情页的 图片 放大 效果 实现 :https://blog.csdn.net/yehaocheng520/article/details/119003274?spm=1001.2014.3001.5501 当时是在vue项目中使用的,其实跟在 js 中原理也是一样的。 实现 图片 放大镜 效果 的重点就是下面的这张图了: 上面的方法中,右侧 图片 ,为了 实现 放大,使用的是background背景 图片 的设置原理,给background-size设置大于1的参数,就
//重点坑!需要将坐标数组转为mat,并且格式为cv.CV_32FC2 let dstmat = new cv.matFromArray(4, 1, cv.CV_32FC2, dstTri); 在这个坑掉了一天,终于在官网找到类似的变换属性,官网愣是没有 js 方面这个函数的说明。。囧 var transform=cv.getPerspectiveTran... 2. 在CSS文件中设置该<img>标签的宽度和高度,以及鼠标悬停时的光标样式。 3. 在 JavaScript 文件中编写相应的函数,用于 实现 图片 的放大 效果 。这个函数需要做以下几件事情: - 创建一个<div>标签,用于显示放大后的 图片 。 - 在鼠标移动时,获取鼠标的坐标,并根据坐标计算出放大 图片 的位置。 - 设置放大 图片 的src属性为要放大的 图片 的src属性,以及放大 图片 的宽度和高度。 - 将放大 图片 添加到<div>标签中,并设置<div>标签的位置和样式。 4. 在<img>标签上添加鼠标移动事件,调用上述函数 实现 图片 放大 效果 。 以下是一个简单的 实现 代码示例,供参考: HTML : <img src="image.jpg" width="200" height="200" id="myImg"> #myImg { cursor: pointer; JavaScript : function zoomIn(event) { const imgSrc = event.target.src; const posX = event.pageX; const posY = event.pageY; const zoomImg = document.createElement('img'); zoomImg.src = imgSrc; zoomImg.width = 400; zoomImg.height = 400; const zoomDiv = document.createElement('div'); zoomDiv.appendChild(zoomImg); zoomDiv.style.position = 'absolute'; zoomDiv.style.top = posY + 'px'; zoomDiv.style.left = posX + 'px'; zoomDiv.style.border = '1px solid black'; zoomDiv.style.padding = '10px'; zoomDiv.style.backgroundColor = 'white'; document.body.appendChild(zoomDiv); const myImg = document.getElementById('myImg'); myImg.addEventListener('mousemove', zoomIn);