1、介绍

a:可用于多层iframe中,显示在最外层

b:动画效果为从点击的图片位置开始放大至全屏显示

2、效果图

3、js代码

 1 function ShowMaxImg(src, y, x, w, h) {
2 var str = '<section id="ShowMaxImgBox">';
3 str += '<div class="button button-primary ShowMaxImgClose" onclick="window.top.RemoveMaxImg(' + y + ',' + x + ',' + w + ',' + h + ')">';
4 str += '<i class="ion ion-close"></i>';
5 str += '</div>';
6 str += '<section class="ShowMaxImgBg" style=\'width:' + w + 'px;height:' + h + 'px;top:' + y + 'px;left:' + x + 'px;background-image:url(' + src + ')\' onclick="window.top.RemoveMaxImg(' + y + ',' + x + ',' + w + ',' + h + ')">';
7 str += '</section>';
8 str += '</section>';
9 $("#ShowMaxImgBox").remove();
10 window.top.$("body").append(str);
11 window.top.$("#ShowMaxImgBox .ShowMaxImgBg").animate({ "height": "100vh", "width": "100vw", "left": "0", "top": "0" }, 300, "swing");
12 }
13 function RemoveMaxImg(y, x, w, h) {
14 $("#ShowMaxImgBox .ShowMaxImgBg").animate({ "height": h + "px", "width": w + "px", "left": x + "px", "top": y + "px" }, 300, "swing", function () {
15 $("#ShowMaxImgBox").remove();
16 });
17 }
18
19 function GetPointInScreen(e, x, y) {
20 var point = e.getBoundingClientRect();
21 x += point.left;
22 y += point.top;
23 if (self != top) {
24 return window.parent.GetPointInScreen(window.parent.$("[name='myIframe']")[0], x, y);
25 }
26 return { x: x, y: y };
27 }
28
29 $("body").on("click", ".ShowMaxImg,[ShowMaxImg]", function () {
30 var src = "";
31 if ($(this).attr("ShowMaxImg") != undefined) {
32 src = $(this).attr("ShowMaxImg");
33 }
34 else {
35 src = $(this).attr("src");
36 }
37 if (src == "" || src == undefined) {
38 return;
39 }
40 var point = GetPointInScreen(this, 0, 0);
41 var w = $(this).width();
42 var h = $(this).height();
43 ShowMaxImg(src, point.y, point.x, w, h);
44 });

4、cs代码

 1 #ShowMaxImgBox {
2 position: fixed;
3 width: 100vw;
4 height: 100vh;
5 display: flex !important;
6 background-color: rgba(0,0,0,0.6);
7 /*实现垂直居中*/
8 align-items: center !important;
9 /*实现水平居中*/
10 justify-content: center !important;
11 text-align: justify !important;
12 text-decoration: none;
13 -moz-user-select: none;
14 -webkit-user-select: none;
15 -ms-user-select: none;
16 user-select: none;
17 left: 0;
18 top: 0;
19 z-index: 9999;
20 }
21
22 #ShowMaxImgBox .ShowMaxImgBg {
23 z-index: -1;
24 position: absolute;
25 background-repeat: no-repeat;
26 background-position: center;
27 background-size: contain;
28 }
29
30 #ShowMaxImgBox .ShowMaxImgClose {
31 position: absolute;
32 width: 30px;
33 height: 30px;
34 right: 20px !important;
35 top: 20px !important;
36 z-index: 99;
37 }
38
39 #ShowMaxImgBox .ShowMaxImgClose i {
40 font-size: 20px;
41 }
42
43 #ShowMaxImgBox .ShowMaxImgBg p {
44 color: white;
45 position: absolute;
46 bottom: 10px;
47 text-align: center;
48 width: 100%;
49 height: 30px;
50 line-height: 30px;
51 }
52
53 [upload-showmaximg], [ShowMaxImg], .ShowMaxImg {
54 cursor: zoom-in !important;
55 }
56
57 #ShowMaxImgBox .ShowMaxImgBg:hover, #ShowMaxImgBox .ShowMaxImgClose:hover {
58 cursor: zoom-out !important;
59 }

jquery自定义弹层显示大图(兼容多层iframe)的更多相关文章

  1. CSS3/jQuery自定义弹出窗口

    简单演示一下,精简了演示效果和css样式文件,更利于在项目中的实际应用 引入style.css   index.js <!DOCTYPE HTML PUBLIC "-//W3C//DT ...

  2. Jquery 点击图片在弹出层显示大图

    http://blog.csdn.net/wongwaidah/article/details/28432427(案例链接出处,本人只是转载收藏) <html> <head> ...

  3. jQuery Layer 弹层组件

    layer是一款近年来口碑非常不错的web弹层组件,她具备全方位的解决方案,致力于服务各个水平段的开发人员,您的页面会轻松地拥有丰富友好的操作体验. 在与同类组件的比较中,layer总是能轻易获胜.她 ...

  4. 基于Vue.js PC桌面端弹出框组件|vue自定义弹层组件|vue模态框

    vue.js构建的轻量级PC网页端交互式弹层组件VLayer. 前段时间有分享过一个vue移动端弹窗组件,今天给大家分享一个最近开发的vue pc端弹出层组件. VLayer 一款集Alert.Dia ...

  5. [转]Jquery 点击图片在弹出层显示大图

    这个还行不需要别的包! https://www.cnblogs.com/antis/p/7053991.html

  6. JQuery - 点击图片显示大图

    效果: 目录结构: 代码: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="De ...

  7. apicloud实现各种自定义弹层组件

  8. jQuery 鼠标移入图片 显示大图并跟随鼠标移动

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  9. 解决: 移动端经mouseover显示出的弹层中链接点击问题

    通常我们会遇到这样的需求,导航菜单在鼠标划过的时候显示自定义弹层,在弹层中有一些链接需要点击后跳转或者其他一些事件.比如: $(".menu li").on("mouse ...

随机推荐

  1. git仓库之gitlab搭建使用

    一.简介 GitLab 是一个用于仓库管理系统的开源项目,使用git作为代码管理工具,并在此基础上搭建起来的web服务.类似github,常用在企业内部做git私有仓库使用: 二.gitlab安装 系 ...

  2. ansible-playbook定义变量与使用

    1. ansible-playbook变量定义与使用 命令行 在Inventory中定义 在Playbook中定义 在Role中定义 注册变量(register) 系统信息变量(facts) 2. 在 ...

  3. intellij idea如何解决javax.servlet.http不存在

    正确的解决方法是:对项目名右键,选中Open Mudule Settings--选择左侧的Modules,选择右边的Dependencies--然后点击右侧边栏的绿色"+"号,点击 ...

  4. day28 Pyhton MRO和C3算法

    1.python多继承.一个类可以拥有多个父类 class ShenXian: # 神仙 def fei(self): print("神仙都会飞") class Monkey: # ...

  5. lumen-ioc容器测试 (3)

    lumen-ioc容器测试 (1) lumen-ioc容器测试 (2) lumen-ioc容器测试 (3) lumen-ioc容器测试 (4) lumen-ioc容器测试 (5) lumen-ioc容 ...

  6. 【应用服务 App Service】当使用EntityFrameWorkCore访问Sql Server数据库时,在Azure App Service会出现Cannot create a DbSet for ** because this type is not included in the model for the context的错误

    问题情形 使用EF Core访问数据库,在本地运行正常,发布到App Service后,偶尔出现了Cannot create a DbSet for ** because this type is n ...

  7. kettle学习笔记(三)— 定时任务的脚本执行

    kettle-定时任务 Kettle 的定时任务可以用kettle中的job工作来定时转换(缺点窗口不可关闭),同时也可以使用bat脚本来启动kettle的 '.ktr'转换. 注:这里对定时任务的时 ...

  8. ssm整合之applicationContext.xml

    <?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.spr ...

  9. ElasticSearch详细笔记

    ElasticSearch详细笔记 什么是ElasticSearch Elasticsearch(简称ES)是一个基于Apache Lucene(TM)的开源搜索引擎,无论在开源还是专有领域,Luce ...

  10. vue 项目抛出警告

    There are multiple modules with names that only differ in casing. 此图为 博主(初雪日)的截图, 这个问题虽然不报错,但是会对项目有影 ...