• 遮罩层


    遮罩层:

      又名弹出框,是一种页面在常用不过的效果之一了,今天就说一说这一效果的制作原理:

    代码展示

       html:

    <!DOCTYPE html>
    <html>
    	<head>
    		<meta charset="UTF-8">
    		<title></title>
    		<style>
    			*{margin:0px;padding:0px;}
    		</style>
    		<link rel="stylesheet" href="shadowxx.css" />
    		<script src="jquery-1.7.2.js"></script>
    		<script src="shadowxx.js"></script>
    		<script>
    			$(function(){
    				$('.btn').on('click',function(){
    					shadow({
    						title:'大兄弟',
    						closeText:'确定2',
    						cancel:false,
    						beforeConfirm:function(){
    							alert('确定之前');
    						},
    						afterConfirm:function(){
    							alert('确定之后');
    						},
    						
    					},$('.shadow'));
    				})
    			})
    		</script>
    	</head>
    	<body>
    		<div class="btn">123</div>
    		<div class="shadow"></div>
    	</body>
    </html>
    

          css: 

    /*弹出框*/
    .shadow{display: none;}
    .shadowxx{100%;height:100%;background-color:rgba(0,0,0,0.4);position: fixed;left:0px;top:0px;z-index:999;}
    .shadowxx .promptxx{300px;height:auto;position:relative; top:50%;background: #fff; margin: 0 auto; transform:translate(0%,-50%);border-radius:6px;padding-bottom:20px;}
    .shadowxx .promptxx .titlexx{padding-top:20px;font-size:22px;text-align: center;line-height:50px;}
    .shadowxx .promptxx .btnxx{font-size:16px;text-align: center;color:#fff;margin:30px auto;margin-bottom:0px;}
    .shadowxx .promptxx .btnxx div{display: inline-block;100px;height:30px;line-height:30px;border-radius:6px;cursor:pointer;}
    .shadowxx .promptxx .btnxx .confirmxx{background: #f14848;}
    .shadowxx .promptxx .btnxx .cancelxx{background: #f14848;margin-right:20px;}
    

         js:

    function shadow(json,parent){
        json=json||{};
        json.title=json.title;  //内容
        json.closeText=json.closeText || '确定'; //确定按钮的内容
        json.cancel=json.cancel || false; //取消按钮是否存在
        json.beforeConfirm=json.beforeConfirm || null;//确定之前
        json.afterConfirm=json.afterConfirm || null;//确定回调
        json.beforeCancel=json.beforeCancel || null;//取消之前
        json.afterCancel=json.afterCancel || null;//取消回调
        
        //创建弹出框
        var str=
            '<div class="shadowxx">'+
                '<div class="promptxx">'+
                    '<div class="titlexx">5555555</div>'+
                    '<div class="btnxx">'+
                        '<div class="cancelxx">取消</div>'+
                         '<div class="confirmxx">'+json.closeText+'</div>'+
                    '</div>'+
                '</div>'+
            '</div>';
        parent.html(str);
        
        //取消显示隐藏
        if(json.cancel){
            $('.cancelxx').css({
                'display':'inline-block'
            });
        }else{
            $('.cancelxx').css({
                'display':'none'
            });
        }
        
        //确定按钮
        $('.shadowxx').on('click','.confirmxx',function(){
            json.beforeConfirm&&json.beforeConfirm();
            parent.hide(function(){
                json.afterConfirm&&json.afterConfirm();//确定之后回调
            });
        });
        
        //取消按钮
        $('.shadowxx').on('click','.cancelxx',function(){
            json.beforeCancel&&json.beforeCancel();
            parent.hide(function(){
                json.afterCancel&&json.afterCancel();//取消之后的回调
            });
        });
        
        var clientHeight=$(window).height();
        var clientWidth=$(window).width();
        parent.css({
            'position':'absolute',
            'top':0,
            'left':0,
            'width':clientWidth,
            'height':clientHeight,
        });
        
        parent.show();
    }

    知识点总结:

      1.shadowxx是黑色透明,底层的透明层;width,height是整个可视区,而且层级要提到最高,它的层级高了,它的子级的层级比它高;

      2.promptxx是显示在中间的内容,绝对定位,left:50%,top:50%,transform:translate(-50%,-50%);

      3.在页面创建一个空div(“.shadow”)用于放置遮罩层;

      4.对于创建出来的东西要使用事件委托来处理;

    创建一个遮罩层需要三层包裹哦!!!

  • 相关阅读:
    mysql中表名是order的CRUD的错误
    BAT-增加JAVA环境变量(WIN764位)
    D7 D2007 XE10.1 都支持的字符分隔函数
    问题-百度云同步盘登陆时提示155010错误
    BAT-批量改文件后缀名
    delphi判断线程是否正在运行
    JAVA-JSP动作元素之param
    JAVA-JSP动作元素之forward
    JAVA-JSP动作元素之include
    JAVA-JSP之taglib指令
  • 原文地址:https://www.cnblogs.com/yang0901/p/6760546.html
Copyright © 2020-2023  润新知