弹出框移动、放大、缩小、最大化处理

2023-10-30

function getViewportSize() {
    //可视区域的宽度和高度
    return {
        width: document.documentElement.clientWidth,
        height: document.documentElement.clientHeight
    };
}

class LayerMove {
    /**
     * 弹层移动
     * @param $setCanMoveAreaName 鼠标点击哪个区域可以移动容器
     * @param $moveContainerName 要移动的容器
     */
    static execute($setCanMoveAreaName, $moveContainerName, $iframe) {
        let viewport = getViewportSize();
        $setCanMoveAreaName.mousedown(function (e) {
            e.stopPropagation();
            e.preventDefault();
            let x = e.clientX - $moveContainerName.offset().left;
            let y = e.clientY - $moveContainerName.offset().top;
            $(`#${$iframe}`).find('iframe')[0].contentWindow.init(x, y);
            $(document).mousemove(function (e) {
                let left = e.clientX - x;
                let top = e.clientY - y;
                let currentLeft = viewport.width - $moveContainerName.width();
                let currentTop = viewport.height - $moveContainerName.height();
                left = left < 0 ? 0 : left;
                left = left > currentLeft ? currentLeft : left;
                top = top < 0 ? 0 : top;
                top = top > currentTop ? currentTop : top;
                $moveContainerName.css({left: left + "px", top: top + "px"});
            });
            $(document).mouseup(function () {
                $(this).unbind("mousemove");
                $(`#${$iframe}`).find('iframe')[0].contentWindow.removeMouseMove();
                $(document).unbind("mouseup");
            });
        });
    }
}

/**
 *
 */
class LayerZoom {

    static execute($zoomContainerName, isEnlarge) {
        if (isEnlarge) {
            $zoomContainerName.css({position: "absolute", left: 0, top: 0, width: "100%", height: "100%"});
        } else {
            $zoomContainerName.css({position: "absolute", left: "15%", top: "15%", width: "70%", height: "70%"});
        }
    }

}

class LayerHandZoom {
    static execute($setCanZoomAreaName, $moveContainerName) {
        let viewport = getViewportSize();
        $setCanZoomAreaName.mousedown(function (e) {
            let x = e.clientX - $moveContainerName.width();
            let y = e.clientY - $moveContainerName.height();
            $(document).mousemove(function (e) {
                let width = e.clientX - x + "px";
                let height = e.clientY - y + "px";
                width = width < 0 ? 0 : width;
                width = width > viewport.width ? viewport.width : width;
                height = height < 0 ? 0 : height;
                height = height > viewport.height ? viewport.height : height;
                $moveContainerName.css({width: width, height: height});
            });
            $(document).mouseup(function () {
                $(document).unbind("mousemove");
            });
        });
    }
}

https://www.nowcoder.com

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

弹出框移动、放大、缩小、最大化处理 的相关文章

随机推荐

  • python中的常见运算符

    文章目录 算数运算符 赋值运算 关系运算符 逻辑运算符 非布尔值的与或非运算 条件运算符 也叫三元运算符 运算符的优先级 算数运算符 加法运算符 如果两个字符串之间进行加法运算 则会进行拼串操作 减法运算符 乘法运算符 如果将字符串和数字相
  • Java 父类 与子类之间的转换

    一 子类的实列化通过父类实现 代码正常 二 基于子类的实列化是通过父类实现 强制转换父类 代码正常 三 父类的实列化不能强制转换为子类 代码错误 提示 java lang ClassCastException 针对第三种情况 建议采用方案
  • 爬取竞技游戏排行榜 - 从游戏网站获取游戏排行榜信息

    在这篇博客中 我们将探讨如何使用Python编写一个爬虫程序 从游戏网站 例如Steam 获取竞技游戏排行榜信息 我们将依次完成以下步骤 选择目标游戏网站 分析网站结构 准备工具和库 编写爬虫程序 保存获取的数据 在开始编写爬虫程序之前 请
  • angular 1.7.5_了解Angular 1.5生命周期挂钩

    angular 1 7 5 The release of Angular 1 5 has introduced some powerful features that have made Angular 1 x fun and easy t
  • Gym的Spaces.Discrete和Spaces.box

    原文 https www jianshu com p cb0839a4d1d3 1 OpenAI Gym安装 安装 本人环境是Ubuntu16 04 anaconda Python3 6 2 git clone https github c
  • 【微信小程序系列:四】前端利用wx.setStorageSync缓存设置有效时间

    先言 简单来说 就是利用缓存 进行有效期的保存 以此前端加以判断 在如登录状态过期 操作过期等场景使用 扩展性还蛮多的 官方文档 实现 原理 就是先设置一个缓存 这个缓存值为当前时间加上有效期的时间 缓存会一直存在在本地 当到有效期后 执行
  • Reactor Cooling【ZOJ 2314】【无源汇有上下界可行流】

    题目链接 无源汇上下界可行流 没有源点 S 汇点 T 在网络中求可行流或者指出不存在 对于这个问题 不好处理 但是如果我们去掉流量下界限制 B 那么就是最大流的模型了 问题就可以解决了 但是 我们不能直接去掉 因为有可能存在入 出的情况 也
  • 利用信号量解决线程同步与互斥——以生产者消费者模型为例

    线程同步和互斥的概念 线程同步就是把同一进程环境下的一组并发线程 因直接制约而互相发送消息而进行互相合作 互相等待 使得各线程按一定的速度执行的过程 互斥是指不允许两个以上的共享该资源的并发线程同时进入临界区 其中直接制约是指同一进程环境下
  • 仙境传说RO:npc汉化方法

    仙境传说RO npc汉化方法 大家好我是艾西 在我们说了那么多期的教程中大家应该有发现游戏内很多都还是英文的 如果对于国内的玩家开展这个游戏可能有些不熟悉的小伙伴玩起来会有点难受 今天艾西跟大家分享下怎么汉化NPC等 我们的仙境传说RO是基
  • 【注解】ajax+@RequestBody前端向后台传值

    直接上代码 function getLocation var result ajax url BaseManage SysInfo GetLocation type post contentType application json dat
  • 谷粒商城-整合elasticSearch

    SpringBoot整合ElasticSearch 初识ElasticSearch 入门ES 掌握了基本语法 导入一些数据进行实际学习 SpringBoot整合high level client SearchRequest的构建 检索 Se
  • 母猪产仔早知道,这次南农用上了英伟达边缘 AI Jetson

    内容一览 对养猪业而言 母猪产仔是其中关键的一环 因此 提高猪仔成活率 确保母猪分娩过程安全 成为重要课题 现有的 AI 监测方式 存在着高设备成本与信息传输不稳定的问题 南京农业大学研究人员 利用一种轻量级深度学习方式 对母猪分娩这一过程
  • 云原生Kubernetes:阿里云托管k8s集群ACK创建和使用

    目录 一 理论 1 容器服务Kubernetes版 2 ACK Pro版集群概述 3 ACK版本说明 二 实验 1 创建专有版Kubernetes集群 三 问题 1 依赖检查未通过 一 理论 1 容器服务Kubernetes版 1 概念 阿
  • [开发过程]<软件设计>关于统一建模语言UML

    目录 1 引言 2 为什么需要UML 3 怎么学UML 4 UML设计工具 1 引言 为了根据需求 设计规划好软件的开发 常常需要用到 统一建模语言 Unified Modeling Language UML 2 为什么需要UML 从某一个
  • Vue常用属性

    私人博客 许小墨 Blog 菜鸡博客直通车 系列文章完整版 配图更多 CSDN博文图片需要手动上传 因此文章配图较少 看不懂的可以去菜鸡博客参考一下配图 系列文章目录 前端系列文章 传送门 后端系列文章 传送门 文章目录 私人博客 系列文章
  • 百度无人驾驶apollo项目训练最佳算法模型改进

    百度无人驾驶apollo项目训练最佳算法模型改进 google的无人驾驶的最新算法训练模型 现在已经为外界熟知 使用了较为复杂的训练模型 当然了 google的无人驾驶也没有真正的落地实用化 所以google的算法也不是最终解决方案 百度a
  • 华为mate20pro删除云空间备份_云相册是干什么的?上存之后的照片占用手机内存吗?...

    现在苹果 华为 小米 OPPO等手机都支持 云相册 功能 而且一般大容量的云相册都是收费的 根据云相册的容量一个月需要几元或者几十元不等 付费越多 云相册的空间就越大 很多网友以为手机的云相册就是本地相册的备份 所以把手机中的照片全部备份到
  • 使用opencv做双目测距(相机标定+立体匹配+测距).

    转 http www cnblogs com daihengchen p 5492729 html 最近在做双目测距 觉得有必要记录点东西 所以我的第一篇博客就这么诞生啦 双目测距属于立体视觉这一块 我觉得应该有很多人踩过这个坑了 但网上的
  • 瑞数信息入选专用Bot管理代表厂商 Gartner《创新洞察报告:面向IAM的Bot管理》

    近日 全球权威IT与顾问咨询公司Gartner发布全新创新洞察报告Innovation Insight Bot Management for the IAM Leader 该报告主要为负责身份识别和访问管理 IAM 的决策者提供Bot管理领
  • 弹出框移动、放大、缩小、最大化处理

    function getViewportSize 可视区域的宽度和高度 return width document documentElement clientWidth height document documentElement cl