html+js实现按钮控制图片放大、缩小以及同时实现滑轮滚动图片放缩

html+js实现按钮控制图片放大、缩小以及同时实现滑轮滚动图片放缩

今天模仿别人页面功能的时候,碰到了一个问题,就是一张图片,需要有放大按钮和缩小按钮,点击放大可以无限放大(有需要可以限制最大宽高),同时,需要在图片上监听鼠标滚轮事件,来放大和缩小图片。

按钮改变只要改变宽高其一,另一个会一起改变。

鼠标滚轮,参考下边这个链接讲的很清楚。

判断滚轮向上或向下在浏览器中也要考虑兼容性,现在五大浏览器(IE、Opera、Safari、Firefox、Chrome)中Firefox 使用detail,其余四类使用wheelDelta;两者只在取值上不一致,代表含义一致,detail与wheelDelta只各取两个 值,detail只取±3,wheelDelta只取±150,其中正数表示为向下,负数表示向上。

链接: [https://blog.csdn.net/qq_41756580/article/details/81179359].
css样式自己调整吧

来吧上代码== 代码片.

//监听鼠标滚轮,不同浏览器需要做兼容处理
<script type="text/javascript">
        var images1 = document.getElementById("images1");
        // IE9, Chrome, Safari, Opera  
        images1.addEventListener("mousewheel", MouseWheelHandler, false);//兼容处理
        // Firefox  
        images1.addEventListener("DOMMouseScroll", MouseWheelHandler, false);//兼容处理
        // images1.attachEvent("onmousewheel", MouseWheelHandler);
        function MouseWheelHandler(e) {
            // cross-browser wheel delta  
            var e = window.event || e; // old IE support  
            var delta = Math.max(-1, Math.min(1, (e.wheelDelta || -e.detail)));//IE、Opera、Safari、Chrome  e.wheelDelta,Firefox中  e.detail  判断是向上还是向下滚动负值delta取-1 正值delta取1  
            images1.height = Math.max(300, Math.min(700, images1.height + (30 * delta)));
            return false;
        } 
 </script>
//监听放缩按钮的
 <script>
        function blowup() {
            var images1 = document.getElementById("images1");
            if (images1.height <= 700) {
                images1.height = images1.height + 20;
            }
        }
        function reduce() {
            var images1 = document.getElementById("images1");
            if (images1.height > 300) {
                images1.height = images1.height - 20;
            }
        }
        function getDefault() {
            var images1 = document.getElementById("images1");
            images1.height = 500;
        }
        function getFixed() {
            var images1 = document.getElementById("images1");
            images1.height = 450;
        }
  </script>
<div style="display:flex;flex-direction:row;justify-content: center;">
        <button id="bigger" onclick="blowup()">放大</button>
        <div id="mqp">
            <img id="images1" src="http://www.pig66.com/uploadfile/2017/0511/20170511074941292.jpg" alt="" />
        </div>
        <button id="smaller" onclick="reduce()">缩小</button>
        <button id="default" onclick="getDefault()">原图</button>
        <button id="fixed" onclick="getFixed()">固定尺寸</button>
 </div>

还有就是我不知道为什么,引入layui就不行了,请大神们指导一下,或者哪里有错请大神们指正。。。。。。

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现导入图片鼠标滑轮和左键按住移动,可以使用QGraphicsView和QGraphicsScene来实现,具体步骤如下: 1. 创建一个QGraphicsView对象和QGraphicsScene对象,并将QGraphicsScene设置为QGraphicsView的场景。 2. 使用QGraphicsPixmapItem将图片添加到QGraphicsScene中。 3. 重写QGraphicsView的wheelEvent()方法,实现鼠标滑轮图片的功能。 4. 重写QGraphicsView的mousePressEvent()、mouseMoveEvent()和mouseReleaseEvent()方法,实现鼠标左键按住移动图片的功能。 下面是一个简单的代码示例: ```python from PyQt5.QtWidgets import QGraphicsView, QGraphicsScene, QGraphicsPixmapItem from PyQt5.QtGui import QPixmap from PyQt5.QtCore import Qt class ImageViewer(QGraphicsView): def __init__(self, parent=None): super().__init__(parent) # 创建QGraphicsScene对象 self.scene = QGraphicsScene(self) self.setScene(self.scene) # 添加图片 self.image = QGraphicsPixmapItem() self.scene.addItem(self.image) # 设置滚动条策略 self.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff) self.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff) self.setRenderHint(QPainter.Antialiasing, True) # 设置鼠标追踪 self.setMouseTracking(True) # 设置比例 self.scaleFactor = 1.0 def loadImage(self, filename): # 加载图片 pixmap = QPixmap(filename) self.image.setPixmap(pixmap) self.setSceneRect(pixmap.rect()) def wheelEvent(self, event): # 图片 if event.angleDelta().y() > 0: self.scaleFactor *= 1.1 else: self.scaleFactor /= 1.1 self.scale(self.scaleFactor, self.scaleFactor) def mousePressEvent(self, event): # 记录鼠标按下的位置 if event.button() == Qt.LeftButton: self.lastPos = event.pos() def mouseMoveEvent(self, event): # 移动图片 if event.buttons() & Qt.LeftButton: delta = event.pos() - self.lastPos self.lastPos = event.pos() self.translate(delta.x(), delta.y()) def mouseReleaseEvent(self, event): pass ``` 在上面的代码中,loadImage()方法用于加载图片,wheelEvent()方法用于图片,mousePressEvent()、mouseMoveEvent()和mouseReleaseEvent()方法用于移动图片。注意,在mousePressEvent()方法中要记录鼠标按下的位置,在mouseMoveEvent()方法中要计算鼠标移动的距离,并将场景平移相应的距离。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值