最简单实现图片放大缩小并翻转的方法

开发中经常遇到图片放大缩小并翻转的需求,实现方法有很多,但是写在页面里就要写个弹框来收纳,单独写一个页面,如果是vue还需要配置路由,最后想到了下面的方法,一个js方法搞定一切。

function openImg(url) {
            console.log('图片地址url:', url)
            let openNew = window.open(url);
            let pageName = url.substring(url.lastIndexOf("/") + 1, url.length);
            openNew.document.write(`<!DOCTYPE html>
<html lang="en">

<head>
    <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>${pageName}</title>
    <style>
        * {
            margin: 0;
            padding: 0;
            font-size: 0;
        }

        body {
            display: flex;
            justify-content: center;
            align-items: center;
            flex-wrap: wrap;
            width: 100vw;
            min-height: 100vh;
            background: #0e0e0e;
        }

        img {
            height: 100vh;
            zoom: 1;
            transform: rotate(0deg);
            cursor: pointer;
        }
    </style>
</head>

<body>
    <img src="${url}" alt="" title="单击放大缩小,双击旋转图片">
    <s`+ `cript>
        var imgNode = document.getElementsByTagName('img')[0];
        var r = 0;
        imgNode.style.zoom = '1.00001'
        var timeout
        // 由于打开的是空白页,无法刷新,只能通过监听F5,重置参数,实现刷新的效果
        window.onkeydown = function (event) {
                // event.returnValue = false;//阻止默认事件,在空白页没有用
                if (event.key == 'F5') {
                    r = 0;
                    imgNode.style.zoom = '1.00001'
                    imgNode.style.transform = 'rotate(' + r * 90 + 'deg)';
                    clearTimeout(timeout)
                }
            }

        imgNode.ondblclick = function () {
            imgRotate()
        }
        imgNode.onclick = function () {
            clearTimeout(timeout)
            timeout = window.setTimeout(imgZoom, 500)
        }
        // // 下面设置图片的宽高比例
        // imgNode.onload = function (e) {
        //     console.log('naturalWidth:', e.path[0].naturalWidth, 'naturalHeight:', e.path[0].naturalHeight)
        //     let naturalWidth = e.path[0].naturalWidth
        //     let naturalHeight = e.path[0].naturalHeight
        //     if (naturalHeight > naturalWidth) {
        //         imgNode.style.height = '100vh';
        //     }
        // };
        function imgRotate() {
            clearTimeout(timeout)
            r++;
            imgNode.style.transform = 'rotate(' + r * 90 + 'deg)';
        }
        function imgZoom() {
            if (imgNode.style.zoom == '1.00001') {
                imgNode.style.zoom = '1.5'
            } else if (imgNode.style.zoom == '1.5') {
                imgNode.style.zoom = '1'
            } else if (imgNode.style.zoom == '1') {
                imgNode.style.zoom = '0.5'
            } else if (imgNode.style.zoom == '0.5') {
                imgNode.style.zoom = '1.00001'
            }
        }
    </s`+ `cript>
</body>

</html>`)
        }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用 CSS 的 transform 属性来放大缩小图片。transform 属性可以通过 scale 函数来控制元素的缩放比例。 下面是一个示例代码,可以通过鼠标滚轮来放大缩小图片: ```html <!DOCTYPE html> <html> <head> <style> img { transition: transform 0.5s ease-in-out; } </style> </head> <body> <img id="myImage" src="https://picsum.photos/400/300"> <script> var img = document.getElementById("myImage"); // 监听鼠标滚轮事件 img.addEventListener("wheel", function(e) { // 阻止默认事件,避免页面滚动 e.preventDefault(); // 计算缩放比例 var scale = e.deltaY > 0 ? 0.9 : 1.1; // 设置 transform 属性 img.style.transformOrigin = "center"; img.style.transform = "scale(" + scale + ")"; }); </script> </body> </html> ``` 上面的代码中,`img` 元素默认显示为原始大小。通过监听鼠标滚轮事件,在滚轮向上滚动时将图片放大,向下滚动时缩小。使用 `transition` 属性来实现缩放时的平滑过渡效果。 ### 回答2: transform是一种在图像处理中经常使用的技术,可以通过调整图像的尺寸来实现放大缩小的效果。 当我们需要将图片放大时,可以使用transform的缩放功能。通过改变图片的尺寸,增加图片的像素数量,从而使图片在显示时更加清晰、细节丰富。使用transform进行放大时,我们可以指定放大的比例,例如放大到原来的2倍或3倍等。 同样地,当我们需要将图片缩小时,也可以利用transform的缩放功能。缩小图片可以减少图片的像素数量,从而减小图片的尺寸和文件大小。缩小图片可以帮助我们在网络上传输图片时减少带宽的占用,也可以节省存储空间。 除了放大缩小图片,transform还可以进行其他操作,例如旋转、翻转等。这些操作可以帮助我们调整图片的方向、角度,或者改变图片的镜像效果。 总而言之,transform是一个功能强大的图像处理技术,可以用来放大缩小图片。通过调整图像的尺寸、旋转或翻转等操作,我们可以灵活地处理图片,满足各种不同的需求。无论是在设计领域还是在日常生活中,transform都是一个非常有用的工具。 ### 回答3: transform是一种常用的CSS属性,可以通过它来实现放大缩小图片的效果。 要实现放大图片的效果,可以使用transform的缩放功能。通过设置scale的值大于1,可以将图片放大,比如设置scale(1.2)时,图片将会放大20%。这样就能够在保持图片比例的情况下放大图片。 而要实现缩小图片的效果,同样可以使用transform的缩放功能。通过设置scale的值小于1,可以将图片缩小,比如设置scale(0.8)时,图片将会缩小20%。同样,保持图片比例的同时缩小图片大小。 除了放大缩小图片大小,transform还可以实现其他的变换效果,如旋转、倾斜等。通过设置不同的transform值,可以实现各种各样的图片变换效果,让图片呈现出丰富多样的样式。 总之,使用transform属性可以方便地实现放大缩小图片的效果,通过设置scale的值可以调整图片的大小,并且可以保持图片的比例。这是一种常用且灵活的CSS属性,广泛应用于网页设计和开发中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值