js技能提升——手搓图片组展示——基础积累

在这里插入图片描述

    // 图片组展示[{name:'',src:''}]
    showAltPics(picList=[], index=0) {
        if (picList.length === 0) {layer.msg("图片路径不对,请重试!", { time: 2000 });return false;}
        //解析展示
        let inPicListHtml = '';
        let indexPic = picList[index];
        for (let i = 0; i < picList.length; i++) {
            inPicListHtml += `<li class="pic"><img src="${picList[i].src}"/></li>`;
        }
        let html = `<div class="BoxShowPics ov"><i class="close"></i>
        <div class="picbox"><img src="${indexPic.src}" class="zoomable-img"/></div>
        <ul>${inPicListHtml}</ul><span class="tipNote">(* 支持鼠标拖动、滚轮放大缩小 *)</span></div>`;
        $("body").append(html);
        setTimeout(function () {$(".BoxShowPics").addClass('on');}, 300);
        //默认显示
        index++;
        $(".BoxShowPics ul li:nth-child(" + index + ")").addClass('on');
        //点击展示图片
        $(".BoxShowPics li").click(function () {
            $(this).addClass("on").siblings().removeClass('on');
            $(".BoxShowPics .picbox img").attr('src', $(this).find('img').attr('src')).attr('style','transform: scale(1)');
        });
        //关闭弹窗
        $(".BoxShowPics .close").click(function () {
            $(".BoxShowPics").removeClass('on');
            setTimeout(function () {$(".BoxShowPics").remove();}, 300);
        });
        // 鼠标滚轮缩放图片
        let imgScale = 1;
        $(".BoxShowPics .picbox").on('wheel', function (e) {
            e.preventDefault();
            let img = $(this).find('.zoomable-img');
            let transform = img.css('transform');
            if (transform && transform !== 'none') {
                let match = transform.match(/scale\(([\d.]+)\)/);
                if (match) imgScale = parseFloat(match[1]);
            }
            //放大缩小
            imgScale = e.originalEvent.deltaY < 0?imgScale + 0.1:imgScale - 0.1;
            img.css('transform', `scale(${imgScale})`);
        });
        // 左键拖动图片
        let isDragging = false;
        let startX, startY, imgX, imgY;
        $(".BoxShowPics .picbox").on('mousedown', function (e) {
            isDragging = true; startX = e.clientX; startY = e.clientY;
            imgX = parseFloat($(this).find('.zoomable-img').css('left')) || 0;
            imgY = parseFloat($(this).find('.zoomable-img').css('top')) || 0;
        });
        $(document).on('mousemove', function (e) {
            if (isDragging) {
                let newX = imgX + (e.clientX - startX);
                let newY = imgY + (e.clientY - startY);
                $(".BoxShowPics .picbox .zoomable-img").css({left: newX + 'px',top: newY + 'px'});
            }
        });
        $(document).on('mouseup', function () {isDragging = false});
    }
/* 展示图片集 */
.BoxShowPics{position:fixed; top:0; right:0; bottom:0; left:0; opacity:0; visibility:hidden; background-color:rgba(0,0,0,.7)!important; font-size:20px; user-select:none}
.BoxShowPics.on{opacity:1; visibility:visible; z-index:99999}
.BoxShowPics .tipNote{position:absolute; top:0; left:50%; color:#fff; opacity:.5; font-size:.7em; line-height:2em; transform:translateX(-50%)}
.BoxShowPics .close{position:absolute; top:.5em; right:.5em; background-color:rgba(255,255,255,.7); font-weight:normal; color:#000; width:1.8em; height:1.8em; line-height:1.8em; text-align:center; cursor:pointer; opacity:1; border-radius:50%; font-size:.8em; z-index:3}
.BoxShowPics .close:after{content:'\e61d'; font-family:iconfont_dg}
.BoxShowPics .close:hover,.boxalt2021 .close:hover:after{opacity:.5; transform:rotate(90deg)}
.BoxShowPics .picbox{max-width:96%; height:calc(98% - 100px); overflow:hidden; margin:2% auto 0; position:relative; cursor:grab}
.BoxShowPics .picbox:before{content:''; position:absolute; top:0; right:0; bottom:0; left:0; z-index:1}
.BoxShowPics .picbox img{object-fit:contain; width:100%; height:100%; display:block; position:absolute; z-index:0}
.BoxShowPics ul{position:fixed; left:50%; bottom:10px; text-align:center; max-width:1000px; transform:translate(-50%,0); width:90%}
.BoxShowPics ul li{display:inline-block; width:100px; height:60px; overflow:hidden; background:url("/Content/img/loading.gif") #fff no-repeat center center / 50%; position:relative; cursor:pointer}
.BoxShowPics ul li+li{margin-left:10px;}
.BoxShowPics ul li:after{content:''; border:0 solid #f90; position:absolute; top:0; right:0; bottom:0; left:0; opacity:0}
.BoxShowPics ul li.on:after{border-width:4px; opacity:1}
.BoxShowPics ul li img{object-fit:cover; width:100%; height:100%; display:block}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/916112.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

<项目代码>YOLOv8 番茄识别<目标检测>

YOLOv8是一种单阶段&#xff08;one-stage&#xff09;检测算法&#xff0c;它将目标检测问题转化为一个回归问题&#xff0c;能够在一次前向传播过程中同时完成目标的分类和定位任务。相较于两阶段检测算法&#xff08;如Faster R-CNN&#xff09;&#xff0c;YOLOv8具有更高的…

Llama架构及代码详解

Llama的框架图如图&#xff1a; 源码中含有大量分布式训练相关的代码&#xff0c;读起来比较晦涩难懂&#xff0c;所以我们对llama自顶向下进行了解析及复现&#xff0c;我们对其划分成三层&#xff0c;分别是顶层、中层、和底层&#xff0c;如下&#xff1a; Llama的整体组成…

冒泡选择法(c基础)

适合对象c语言初学者。 冒泡选择法 作用对一个数组进行排序。&#xff08;介绍一下数组(c基础)(详细版)-CSDN博客&#xff09; 核心要点 1: 数组元素个数 sz 2: 比较后的交换。 核心思路 进行&#xff08;sz - 1&#xff09;趟&#xff0c;每一趟把最大数的放到末尾。其…

深入浅出《钉钉AI》产品体验报告

1. 引言 随着人工智能技术的迅猛发展&#xff0c;企业协同办公领域迎来了新的变革。钉钉作为阿里巴巴集团旗下的企业级通讯与协同办公平台&#xff0c;推出了钉钉AI助理&#xff0c;旨在提高工作效率&#xff0c;优化用户体验。本报告将对钉钉AI助理进行全面的产品体验分析&am…

【GPTs】Gif-PT:DALL·E制作创意动图与精灵动画

博客主页&#xff1a; [小ᶻZ࿆] 本文专栏: AIGC | GPTs应用实例 文章目录 &#x1f4af;GPTs指令&#x1f4af;前言&#x1f4af;Gif-PT主要功能适用场景优点缺点 &#x1f4af;小结 &#x1f4af;GPTs指令 中文翻译&#xff1a; 使用Dalle生成用户请求的精灵图动画&#…

一文看懂什么1688跨境(专业解析)

1688跨境是什么? 最近火出圈的一个新词 今天老余带大家走近1688跨境 首先为什么会出现1688跨境&#xff1f; 因为&#xff1a; 新型服务商崛起&#xff0c;反向海淘成趋势 在过去三年&#xff0c;1688涌现了一批新型的服务商: 他们帮助海外B类买家到1688采购&#xff…

SpringBoot+Vue3实现数据可视化大屏

前端工程的地址:UserManagerFront: 数据可视化前端 (gitee.com) 效果展示&#xff0c;可以展现出来了&#xff0c;样式可能还有一些丑。 后端代码 后端主要是拿到数据并对数据进行处理&#xff0c;按照前端需要的格式进行返回即可。 import com.njitzx.entity.Student; impor…

<项目代码>YOLOv8 手机识别<目标检测>

YOLOv8是一种单阶段&#xff08;one-stage&#xff09;检测算法&#xff0c;它将目标检测问题转化为一个回归问题&#xff0c;能够在一次前向传播过程中同时完成目标的分类和定位任务。相较于两阶段检测算法&#xff08;如Faster R-CNN&#xff09;&#xff0c;YOLOv8具有更高的…

算法定制LiteAIServer摄像机实时接入分析平台烟火识别检测算法

在公共安全领域&#xff0c;火灾的及时发现与处理是保障人民群众生命财产安全的重要手段。传统的烟火检测手段受限于人工巡查的局限&#xff0c;难以做到全天候、无遗漏的监控。然而&#xff0c;随着人工智能技术的飞速发展&#xff0c;LiteAIServer摄像机实时接入分析平台烟火…

JMeter与大模型融合应用之JMeter日志分析服务化实战应用

JMeter与大模型融合应用之JMeter日志分析服务化 引言 在当今的互联网时代,网站和应用程序的性能直接影响到用户的体验和业务的成功。为了保证系统的稳定性和高效性,性能测试成为了软件开发过程中的一个重要环节。在这其中,Apache JMeter作为一款开源的性能测试工具,凭借其…

【Pikachu】任意文件上传实战

将过去和羁绊全部丢弃&#xff0c;不要吝惜那为了梦想流下的泪水。 1.不安全的文件上传漏洞概述 不安全的文件上传漏洞概述 文件上传功能在web应用系统很常见&#xff0c;比如很多网站注册的时候需要上传头像、上传附件等等。当用户点击上传按钮后&#xff0c;后台会对上传的…

STM32 ADC --- 单通道采样

STM32 ADC — 单通道采样 文章目录 STM32 ADC --- 单通道采样cubeMX配置代码修改&#xff1a;应用 使用cubeMX生成HAL工程 需求&#xff1a;有多个通道需要进行ADC采样&#xff0c;实现每次采样只采样一个通道&#xff0c;且可以随时采样不同通道的功能。 cubeMX配置 这里我们…

influxDB 时序数据库安装 flux语法 restful接口 nodjsAPI

安装 Install InfluxDB | InfluxDB OSS v2 Documentation Debian和Ubuntu用户可以用apt-get包管理来安装最新版本的InfluxDB。 对于Ubuntu用户&#xff0c;可以用下面的命令添加InfluxDB的仓库&#xff0c;添加之后即可apt-get 安装influxdb2 wget -q https://repos.influx…

【轻量化】YOLOv10 更换骨干网络之 MobileNetv4 | 模块化加法!非 timm 包!

之前咱们在这个文章中讲了timm包的加法,不少同学反馈要模块化的加法,那么这篇就讲解下模块化的加法,值得注意的是,这样改加载不了mobilebnetv4官方开源的权重了~ 论文地址:https://arxiv.org/pdf/2404.10518 代码地址:https://github.com/tensorflow/models/blob/master…

电气自动控制电路图图例

单相照明双路互备自投供电电路 双路三相电源自投电路 茶炉水加热自动控制电路 简单的温度控制器电路 简易晶闸管温度自动控制电路 用双向晶闸管控制温度电路 XCT-101动圈式温度调节仪控温电路 电接点压力式温度表控温电路 TDA-8601型温度指示调节仪控温电路 XMT-DA数字…

D3 可以加载的数据格式有哪些?(12种)

D3.js 支持多种数据格式&#xff0c;这些格式涵盖了从简单的表格数据到复杂的地理数据。以下是一些常见的数据格式及其加载方法&#xff1a; D3.js 数据加载方法 d3.blob(input, init) 用途: 加载二进制数据&#xff0c;返回一个 Blob 对象。参数: input: 数据源 URL。init: …

Pinpoint(APM)进阶--Pinot指标采集(System Metric/Inspector)

接上文 Pinpoint使用Pinot进行指标数据存储&#xff0c;Pinot流摄入需要Kafka 本文详解Kafka和Pinot的安装部署&#xff0c;以及Pinpoint的指标采集 Pinot 简介 Apache Pinot是一个实时分布式OLAP数据存储&#xff0c;专为低延迟、高吞吐量分析而构建&#xff0c;非常适合面…

mmsegmentation: 安装 并使用自定义数据集进行训练 ·2

我用的是CHASE_DB1.py 数据集下载链接 https://staffnet.kingston.ac.uk/~ku15565/CHASE_DB1/assets/CHASEDB1.zip 这个用来转换mmseg所需要的格式 python tools/dataset_converters/chase_db1.py /path/to/CHASEDB1.zip其他数据集请看链接&#xff1a;https://mmsegmenta…

通义千问API调用测试 (colab-python,vue)

文章目录 代码&#xff08;来自官网&#xff09;colab中用python测试Qwen2.5在官网上查看并确定过期时间这里看到我的免费额度到25年5月在同一个页面&#xff0c;点击API示例 前端调用直接在前端调用的优缺点以vue为例&#xff08;代码是基于官网node.js的代码转换而来&#xf…

【c++笔试强训】(第九篇)

目录 链表相加&#xff08;⼆&#xff09;&#xff08;链表⾼精度加法&#xff09; 题目解析 讲解算法原理 编写代码 ⼤数乘法&#xff08;⾼精度乘法&#xff09; 题目解析 讲解算法原理 辨析代码 链表相加&#xff08;⼆&#xff09;&#xff08;链表⾼精度加法&#…