zoukankan      html  css  js  c++  java
  • jquery 遮罩层显示img

    如果点击iframe中的image显示整个页面的遮罩层,可参考如下:

    http://blog.csdn.net/shiaijuan1/article/details/70160714

    具体思路就是,顶层添加dom对象,用来显示信息,默认隐藏,需要时在iframe中调用,宽高设置为100%。

    实现如下:

       //遮罩层
        .showmask {
                position: fixed;//position设置为fixed或者absolute或者relative,z-index才生效,且z-index值越大越显示到顶层
                z-index: 99;//fixed固定定位,相对于浏览器窗口
                width: 100%;//relative相对定位,相对于其正常位置进行定位,比如left:20px,相对于其正常位置向左偏移20个像素
                height: 100%;
                background-color: silver;
                top: 0px;
                left: 0px;
                opacity: 0.5;//遮罩透明度
            }
         
            .showmasklayer {
                position: absolute;//绝对定位,相对于该元素之外的第一个父元素进行定位
                z-index: 168;
                top: 0px;
                left: 0px;
                min-width: 100%;
                min-height: 100%;
                display: flex;//多列布局
                justify-content: center;//设置元素在主轴(横轴)上的对其方式
                align-items: center;//当前行侧轴(纵轴)方向上的对齐方式
            }
           //关闭按钮
            .showmaskclose {
                background-color: red;
                color: white;
                border: 2px solid gray;
                position: fixed;
                z-index: 288;
                top: 0px;
                right: 0px;
                cursor: pointer;
                height: 30px;
                width: 30px;
                font-size: large;
                font-weight: bold;
                text-align: center;
                display: flex;
                justify-content: center;
                align-items: center;
            }

    这儿调整一下,为了解决,部分图片像素过大,浏览器无法展示全部,又没有加入拖动及滚动条等:

           .showmask {
                position: fixed;
                z-index: 99;
                width: 100%;
                height: 100%;
                background-color: silver;
                top: 0px;
                left: 0px;
                opacity: 0.5;
            }
    
            .showmasklayer {
                position: absolute;
                z-index: 168;
                top: 0px;
                left: 0px;
                /*min- 100%; 这里默认显示100%,不能超过100%
                min-height: 100%;*/
                width: 100%;
                height: 100%;
                display: flex;
                justify-content: center;
                align-items: center;
            }
    
                .showmasklayer img {
                    max-width: 100%;/*图片最大宽高都是100%*/
                    max-height: 100%;
                }
    
            .showmaskclose {
                background-color: red;
                color: white;
                border: 2px solid gray;
                position: fixed;
                z-index: 288;
                top: 0px;
                right: 0px;
                cursor: pointer;
                height: 30px;
                width: 30px;
                font-size: large;
                font-weight: bold;
                text-align: center;
                display: flex;
                justify-content: center;
                align-items: center;
            }

    iframe中调用如下:

     $(function () {
            $("#image").on("click", function () {
                //判断是否已经添加过遮罩层dom
                if ($(".showmaskclose", window.top.document).length == 0) {
                    //附加遮罩层dom
                    $("body", window.top.document).append("<div class='showmaskclose'>×</div>").append("<div class='showmask'></div>").append("<div class='showmasklayer'></div>")
              //这儿双击遮罩showmask/showmasklayer时候,会导致showmasklayer图片成选中状态,这儿可以调整为如下,参照:www.w3cui.com?p=141
              //.append("<div class='showmasklayer' unselectable='on' style='-moz-user-select:none;' onselectstart='return false;'></div>");
    //附加后绑定事件 $(".showmaskclose", window.top.document).on("click", function () { htsHide(); }) $(".showmask", window.top.document).on("dblclick", function () { htsHide(); }) $(".showmasklayer", window.top.document).on("dblclick", function () { htsHide(); }) //添加图片 $(".showmasklayer", window.top.document).append("<img src='" + this.src + "' />") } else { //遮罩层dom显示 $(".showmaskclose", window.top.document).show();//可通过css设置display为none和block控制显示和隐藏 $(".showmask", window.top.document).show(); $(".showmasklayer", window.top.document).show(); //切换图片 $(".showmasklayer > img", window.top.document).attr('src', this.src); } }); }); function htsHide() { //遮罩层隐藏 $(".showmask", window.top.document).hide(); $(".showmaskclose", window.top.document).hide(); $(".showmasklayer", window.top.document).hide(); }

     以上的js在双击showmask关闭时,重新打开,时而会出现一个类似于showmask选中状态的东西,体验不好,可以每次关闭后移除,下次点击时添加,如下:

    $(function () {
            $("#image").on("click", function () {
    //添加遮罩层 $(
    "body", window.top.document).append("<div class='showmaskclose'>×</div>").append("<div class='showmask'></div>").append("<div class='showmasklayer'></div>") //绑定遮罩层事件 $(".showmaskclose", window.top.document).on("click", function () { htsHide(); }) $(".showmask", window.top.document).on("dblclick", function () { htsHide(); }) $(".showmasklayer", window.top.document).on("dblclick", function () { htsHide(); }) $(".showmasklayer", window.top.document).append("<img src='" + this.src + "' />") }); }); function htsHide() {
    //移除遮罩层 $(
    ".showmaskclose", window.top.document).remove(); $(".showmask", window.top.document).remove(); $(".showmasklayer", window.top.document).remove(); }

    呵呵,升级一下,加入图像的旋转功能,主要是通过css样式调整实现:

    css:

    .showmask {
                position: fixed;
                z-index: 99;
                width: 100%;
                height: 100%;
                background-color: silver;
                top: 0px;
                left: 0px;
                opacity: 0.5;
            }
    
            .showmasklayer {
                position: absolute;
                z-index: 168;
                top: 0px;
                left: 0px;
                width: 100%;
                height: 100%;
                display: flex;
                justify-content: center;
                align-items: center;
            }
    
                .showmasklayer img {
                    max-width: 100%;
                    max-height: 100%;
                }
    
            .showmaskrotate {/*实现旋转的按钮*/
                background-color: Highlight;
                color: white;
                border: 2px solid gray;
                position: fixed;
                z-index: 288;
                top: 0px;
                right: 40px;
                cursor: pointer;
                height: 30px;
                width: 30px;
                font-size: large;
                font-weight: bold;
                text-align: center;
                display: flex;
                justify-content: center;
                align-items: center;
            }
    
            .showmaskclose {
                background-color: red;
                color: white;
                border: 2px solid gray;
                position: fixed;
                z-index: 288;
                top: 0px;
                right: 0px;
                cursor: pointer;
                height: 30px;
                width: 30px;
                font-size: large;
                font-weight: bold;
                text-align: center;
                display: flex;
                justify-content: center;
                align-items: center;
            }

    js,rotate实现:

    /**
     * jquery-rotate v0.1.0
     *  Very lightweight jquery rotate plugin using CSS 3 Transformation
     *  https://github.com/schickling/jquery-rotate
     */
    (function ($) {
    
        $.fn.extend({
            rotate: function (deg) {
    
                // cache dom element
                var $this = $(this);
    
                // make deg random if not set
                if (deg === null) {
                    deg = Math.floor(Math.random() * 359);
                }
    
                // rotate dom element
                $this.css({
                    '-webkit-transform': 'rotate(' + deg + 'deg)',
                    '-moz-transform': 'rotate(' + deg + 'deg)',
                    '-ms-transform': 'rotate(' + deg + 'deg)',
                    '-o-transform': 'rotate(' + deg + 'deg)',
                    'transform': 'rotate(' + deg + 'deg)'
                });
    
                // make chainable
                return $this;
            }
        });
    
    })(jQuery);

    js,调用img遮罩:

        function htsHide() {
            $(".showmaskclose", window.top.document).remove();
            $(".showmaskrotate", window.top.document).remove();
            $(".showmask", window.top.document).remove();
            $(".showmasklayer", window.top.document).remove();
        }
        oper = {
            View: function (imagepath) {
                $("body", window.top.document).append("<div class='showmaskclose'>×</div><div class='showmaskrotate'>⌒</div>").append("<div class='showmask'></div>").append("<div class='showmasklayer'></div>")
                var tIndex = 0;//控制旋转次数
                $(".showmaskclose", window.top.document).on("click", function () { htsHide(); })
                $(".showmaskrotate", window.top.document).on("click", function () { $('.showmasklayer > img', window.top.document).rotate(-90 * ++tIndex); })//实现旋转功能,每次逆时针旋转90度
                $(".showmask", window.top.document).on("dblclick", function () { htsHide(); })
                $(".showmasklayer", window.top.document).on("dblclick", function () { htsHide(); })
                $(".showmasklayer", window.top.document).append("<img src='" + imagepath + "' style='max-height:100%;max-100%;'/>")
            }
        }
  • 相关阅读:
    firstResponder
    形而上学
    du -h
    数据本地存贮与数据结构(对象)
    RFC
    oc语言源代码
    HTTP1.1协议中文版-RFC2616
    如何提高团队协作的效率
    iOS应用架构谈 开篇
    nginx版本如何选择?
  • 原文地址:https://www.cnblogs.com/lcawen/p/7120513.html
Copyright © 2011-2022 走看看