• 图片的滑动缩放html、css、js代码


    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
    #box {
    100px;
    height: 100px;
    background-color: aquamarine;
    position: absolute;
    }
    #father {
    600px;
    height: 500px;
    background-color: rgb(226, 117, 184);
    position: relative;
    }
    img {
    100%;
    height: 100%;
    cursor: move;
    }
    #scale {
    10px;
    height: 10px;
    overflow: hidden;
    cursor: se-resize;
    position: absolute;
    right: 0;
    bottom: 0;
    background-color: rgb(122, 191, 238);
    }
    </style>

    </head>
    <body>
    <div id="father">
    <div id="box">
    <img src='./src/assets/logo.png'/>
    <div id="scale"></div>
    </div>
    </div>

    </body>
    </html>
    <script type="text/javascript">
    // box是装图片的容器,fa是图片移动缩放的范围,scale是控制缩放的小图标
    var box = document.getElementById("box");
    var fa = document.getElementById('father');
    var scale = document.getElementById("scale");
    // 图片移动效果
    box.onmousedown=function(ev) {
    var oEvent = ev;
    // 浏览器有一些图片的默认事件,这里要阻止
    oEvent.preventDefault();
    var disX = oEvent.clientX - box.offsetLeft;
    var disY = oEvent.clientY - box.offsetTop;
    console.log(disX,disY)
    fa.onmousemove=function (ev) {
    oEvent = ev;
    oEvent.preventDefault();
    var x = oEvent.clientX -disX;
    var y = oEvent.clientY -disY;
    console.log(x,y)

    // 图形移动的边界判断
    x = x <= 0 ? 0 : x;
    x = x >= fa.offsetWidth-box.offsetWidth ? fa.offsetWidth-box.offsetWidth : x;
    y = y <= 0 ? 0 : y;
    y = y >= fa.offsetHeight-box.offsetHeight ? fa.offsetHeight-box.offsetHeight : y;
    box.style.left = x + 'px';
    box.style.top = y + 'px';
    }
    // 图形移出父盒子取消移动事件,防止移动过快触发鼠标移出事件,导致鼠标弹起事件失效
    fa.onmouseleave = function () {
    fa.onmousemove=null;
    fa.onmouseup=null;
    }
    // 鼠标弹起后停止移动
    fa.onmouseup=function() {
    fa.onmousemove=null;
    fa.onmouseup=null;
    }
    }
    // 图片缩放效果
    scale.onmousedown = function (e) {
    // 阻止冒泡,避免缩放时触发移动事件
    e.stopPropagation();
    e.preventDefault();
    var pos = {
    'w': box.offsetWidth,
    'h': box.offsetHeight,
    'x': e.clientX,
    'y': e.clientY
    };
    fa.onmousemove = function (ev) {
    ev.preventDefault();
    // 设置图片的最小缩放为30*30
    var w = Math.max(30, ev.clientX - pos.x + pos.w)
    var h = Math.max(30,ev.clientY - pos.y + pos.h)
    // console.log(w,h)

    // 设置图片的最大宽高
    w = w >= fa.offsetWidth-box.offsetLeft ? fa.offsetWidth-box.offsetLeft : w
    h = h >= fa.offsetHeight-box.offsetTop ? fa.offsetHeight-box.offsetTop : h
    box.style.width = w + 'px';
    box.style.height = h + 'px';
    // console.log(box.offsetWidth,box.offsetHeight)
    }
    fa.onmouseleave = function () {
    fa.onmousemove=null;
    fa.onmouseup=null;
    }
    fa.onmouseup=function() {
    fa.onmousemove=null;
    fa.onmouseup=null;
    }
    }

    </script>
     
  • 相关阅读:
    我把 Spring Boot Banner 换成了美女背景后……
    玩大发了,Tomcat 8.5 升级有坑…
    10 分钟快速上手 Shiro 新手教程
    为什么 HashMap 的加载因子是0.75?
    图解 Spring 循环依赖,写得太好了!
    单点登录的实现原理是什么?怎么实现?
    Maven三种仓库详解
    为什么 wait,notify,notifyAll 在 Object 类定义而不是 Thread 类?
    我们公司用了6 年的分布式锁,很是厉害!
    Google 开源的依赖注入库,比 Spring 更小更快!
  • 原文地址:https://www.cnblogs.com/zhx119/p/10330742.html
Copyright © 2020-2023  润新知