兼容主流浏览器的jQuery+CSS 实现遮罩层的简单代码

在页面点击"注册",出现一层有不透明度的黑色遮罩;遮罩层的上方是注册框;此时无法点击页面上除注册框外的其他元素;点击注册框上的"随便逛逛",遮罩层消失。

预览地址:

http://jsfiddle.net/p2x3c7df/embedded/result/

要点:

1.注册框始终水平、垂直居中,包括鼠标滚轮上下滚动页面、缩放页面和调整浏览器窗口大小时

主要由CSS控制,注册框的宽度和高度都已经确定( 620*420px ),首先使用position:fixed来使它相对于浏览器窗口绝对定位;然后使它垂直居中:top:50%; left:50%; margin:-210px 0 0 -310px;

2.当缩放页面和调整浏览器窗口大小时,遮罩层需始终覆盖整个文档和充满整个浏览器可视窗口以及需要滚动才能浏览到的部分,需要兼容Chrome和IE等不同内核浏览器;

两个重要的属性:js的window.screen.availHeight和jQuery的$(document.body).outerHeight(true)。window.screen.availHeight指屏幕可用工作区域的高,$(document.body).outerHeight(true)指浏览器当前窗口文档body的总宽度 包括border padding margin。window.screen.availHeight主要用于IE(11)缩放页面后,遮罩层仍能充满浏览器窗口。

3.遮罩层出现时,页面仍可以上下滚动,但是无法操作页面中除登陆框外的其他元素

代码:

HTML( 需测试足够高的文档 ):

代码如下:

<div id="wrap">
    <div id="rbox"><a class="go" href="#" onclick="return false;">先逛逛>></a></div>
    <div id="mask"></div>
   
    <div class="content">   
        <div id="usertie">
            <span>
                <a id="register" href="#" onclick="return false;">注册</a>
            </span>
        </div>
        The Suicide.
        Meanwhile Monte Cristo had also returned to town with Emmanuel and Maximilian. Their return was cheerful. Emmanuel did not conceal his joy at the peaceful termination of the affair, and was loud in his expressions of delight. Morrel, in a corner of the carriage, allowed his brother-in-law's gayety to expend itself in words, while he felt equal inward joy, which, however, betrayed itself only in his countenance. At the Barriere du Trone they met Bertuccio, who was waiting there, motionless as a sentinel at his post. Monte Cristo put his head out of the window, exchanged a few words with him in a low tone, and the steward disappeared. "Count," said Emmanuel, when they were at the end of the Place Royale, "put me down at my door, that my wife may not have a single moment of needless anxiety on my account or yours."
        "If it were not ridiculous to make a display of our triumph, I would invite the count to our house; besides that, he doubtless has some trembling heart to comfort. So we will take leave of our friend, and let him hasten home."
        "Stop a moment," said Monte Cristo; "do not let me lose both my companions. Return, Emmanuel, to your charming wife, and present my best compliments to her; and do you, Morrel, accompany me to the Champs Elysees."
        "Willingly," said Maximilian; "particularly as I have business in that quarter."
        "Shall we wait breakfast for you?" asked Emmanuel.
        "No," replied the young man. The door was closed, and the carriage proceeded. "See what good fortune I brought you!" said Morrel, when he was alone with the count. "Have you not thought so?"
        "Yes," said Monte Cristo; "for that reason I wished to keep you near me."
        "It is miraculous!" continued Morrel, answering his own thoughts.
        "What?" said Monte Cristo.
        "What has just happened."
        "Yes," said the Count, "you are right -- it is miraculous."
        "For Albert is brave," resumed Morrel.
        "Very brave," said Monte Cristo; "I have seen him sleep with a sword suspended over his head."

"She is going to leave her house," said the steward.
        "And her son?"
        "Florentin, his valet, thinks he is going to do the same."
        "Come this way." Monte Cristo took Bertuccio into his study, wrote the letter we have seen, and gave it to the steward. "Go," said he quickly. "But first, let Haidee be informed that I have returned."
        "Here I am," said the young girl, who at the sound of the carriage had run down-stairs and whose face was radiant with joy at seeing the count return safely. Bertuccio left. Every transport of a daughter finding a father, all the delight of a mistress seeing an adored lover, were felt by Haidee during the first moments of this meeting, which she had so eagerly expected. Doubtless, although less evident, Monte Cristo's joy was not less intense. Joy to hearts which have suffered long is like the dew on the ground after a long drought; both the heart and the ground absorb that beneficent moisture falling on them, and nothing is outwardly apparent.
        Monte Cristo was beginning to think, what he had not for a long time dared to believe, that there were two Mercedes in the world, and he might yet be happy. His eye, elate with happiness, was reading eagerly the tearful gaze of Haidee, when suddenly the door opened. The count knit his brow. "M. de Morcerf!" said Baptistin, as if that name sufficed for his excuse. In fact, the count's face brightened.
        "Which," asked he, "the viscount or the count?"
        "The count."
        "Oh," exclaimed Haidee, "is it not yet over?"
        "I know not if it is finished, my beloved child," said Monte Cristo, taking the young girl's hands; "but I do know you have nothing more to fear."
        "But it is the wretched" --
        "That man cannot injure me, Haidee," said Monte Cristo; "it was his son alone that there was cause to fear."
        "And what I have suffered," said the young girl, "you shall never know, my lord." Monte Cristo smiled. "By my father's tomb," said he, extending his hand over the head of the young girl, "I swear to you, Haidee, that if any misfortune happens, it will not be to me."
        The door was wide open, a hackney-coach was standing in the middle of the yard -- a strange sight before so noble a mansion; the count looked at it with terror, but without daring to inquire its meaning, he rushed towards his apartment. Two persons were coming down the stairs; he had only time to creep into an alcove to avoid them. It was Mercedes leaning on her son's arm and leaving the house. They passed close by the unhappy being, who, concealed behind the damask curtain, almost felt Mercedes dress brush past him, and his son's warm breath, pronouncing these words, -- "Courage, mother! Come, this is no longer our home!" The words died away, the steps were lost in the distance. The general drew himself up, clinging to the curtain; he uttered the most dreadful sob which ever escaped from the bosom of a father abandoned at the same time by his wife and son. He soon heard the clatter of the iron step of the hackney-coach, then the coachman's voice, and then the rolling of the heavy vehicle shook the windows. He darted to his bedroom to see once more all he had loved in the world; but the hackney-coach drove on and the head of neither Mercedes nor her son appeared at the window to take a last look at the house or the deserted father and husband. And at the very moment when the wheels of that coach crossed the gateway a report was heard, and a thick smoke escaped through one of the panes of the window, which was broken by the explosion.
        The door was wide open, a hackney-coach was standing in the middle of the yard -- a strange sight before so noble a mansion; the count looked at it with terror, but without daring to inquire its meaning, he rushed towards his apartment. Two persons were coming down the stairs; he had only time to creep into an alcove to avoid them. It was Mercedes leaning on her son's arm and leaving the house. They passed close by the unhappy being, who, concealed behind the damask curtain, almost felt Mercedes dress brush past him, and his son's warm breath, pronouncing these words, -- "Courage, mother! Come, this is no longer our home!" The words died away, the steps were lost in the distance. The general drew himself up, clinging to the curtain; he uttered the most dreadful sob which ever escaped from the bosom of a father abandoned at the same time by his wife and son. He soon heard the clatter of the iron step of the hackney-coach, then the coachman's voice, and then the rolling of the heavy vehicle shook the windows. He darted to his bedroom to see once more all he had loved in the world; but the hackney-coach drove on and the head of neither Mercedes nor her son appeared at the window to take a last look at the house or the deserted father and husband. And at the very moment when the wheels of that coach crossed the gateway a report was heard, and a thick smoke escaped through one of the panes of the window, which was broken by the explosion.
    </div>
</div>

HTML

CSS:

代码如下:

a{ text-decoration:none; color:#fff;}
#rbox{

width:620px;
    height:420px;
    position:fixed;
    top:50%;
    left:50%;
    margin:-210px 0 0 -310px;
    border-radius:8px; /*圆角*/
    background-color:#999;
    z-index:3;
    display:none;   
}

.go{

position:absolute;
    right: 10px;
    top: 10px;
    padding: 5px 12px;
    background: rgba(0,0,0,.4);
    box-shadow: 0 0 0 2px rgba(255,255,255,.4);
    color: #fff;
    border-radius: 26px;
}

#mask{

background-color:#000;
    position:absolute;
    top:0;
    left:0;
    display:none;
    z-index:2;
}

#register{ z-index:1; color:blue;}
.content{ width:800px; height:auto; margin:0 auto;}

JS:

代码如下:

$(function(){
   
    //点击注册
    $("#register").click(function(){
   
        if(window.screen.availHeight > $(document.body).outerHeight(true)){
       
            //当屏幕可用工作区域的高度 > 浏览器当前窗口文档body的总高度 包括border padding margin时( 缩放时 )
            $("#mask").show().css({"opacity":"0.5","width":"100%","height":window.screen.availHeight});
        }else{
       
            $("#mask").show().css({"opacity":"0.5","width":"100%","height":$(document.body).outerHeight(true)});
        }           
        $("#rbox").show();       
    });

//根据浏览器可视窗口的变化调整遮罩的宽度和高度,使遮罩充满浏览器
    $(window).resize(function(){

//根据浏览器窗口变化改变遮罩宽度和高度,使遮罩充满整个浏览器   
        if($("#mask").css("width")!=0){

$("#mask").css("width","100%"); //必要时可对宽度也作出判断

if(window.screen.availHeight > $(document.body).outerHeight(true)){
           
                $("#mask").css({"opacity":"0.5","width":"100%","height":window.screen.availHeight});
            }else{
           
                $("#mask").css({"opacity":"0.5","width":"100%","height":$(document.body).outerHeight(true)});
            }
        }
    });

$(".go").click(function(){
   
        $("#mask").hide();
        $("#rbox").hide();
    });
});

至此功能完成。

(0)

相关推荐

  • jQuery实现可兼容IE6的遮罩功能详解

    本文实例讲述了jQuery实现可兼容IE6的遮罩功能.分享给大家供大家参考,具体如下: 最精简,最强大的 jQuery 遮罩层效果. 当浏览器改变大小时,遮罩层的大小会相应地改变. 遮罩层上方的对话框可随 scroll 的改变而改变,即对话框在浏览器居中显示. HTML 代码 <div id="main"><a onclick="showBg();" href="#" rel="external nofollow&qu

  • jQuery+html5实现div弹出层并遮罩背景

    渐入弹窗,背景变色不可点击.查看效果:http://runjs.cn/detail/t08gmoij <!doctype html> <html> <head> <meta charset="utf-8"> <title>popup</title> <script type="text/javascript" src="jquery-2.1.3.min.js">&

  • jQuery+AJAX实现遮罩层登录验证界面(附源码)

    JQuery遮罩层登录界面效果的实现,AJAX实现登录验证,文章尾有完整示例源码下载,欢迎大家学习研究. 操作系统:Windwos7 Ultimate 开发工具:Visual Studio 2010 数据库:Sql Server 2005 测试浏览器:IE8.FF3.6.8.Google Chrome (IE8中弹出登录层后会出现竖拉条,其他两种没有出现,那个竖拉条可以在JS中通过修改数值让其不出现,但是下面会出现白边,越来越觉得IE有点那个了......) 1.预览 1)登录前 2)点击登录显

  • jquery弹出关闭遮罩层实例

    复制代码 代码如下: <!doctype html public "-//w3c//dtd xhtml 1.0 transitional//en" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><title>jquery简便实现遮罩层

  • JQuery 遮罩层实现(mask)实现代码

    其中有mask()和unmask()这两个方法,这两个方法在指定的元素上添加一个遮罩层和一个提示消息实现,增加客户体验.由于最近做项目的时候,发现有时为了使用这一两个方法需要引入一个比较"庞大"的Extjs进来,觉得有点不划算,于是自己用jquery实现了一个比较简单mask.unmask方法来实现该效果.大家知道jquery是一个优秀的javascript框架,不但体积小而且使用方便,我现在逐渐将系统中使用Extjs实现的代码或组建全部更换成Jquery来实现.好了不多说,上我的代码

  • JS遮罩层效果 兼容ie firefox jQuery遮罩层

    复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv=&qu

  • jQuery实现简单网页遮罩层/弹出层效果兼容IE6、IE7

    本屌丝最近工作要求重写网站所有代码,so...极其蛋疼的事情出现了,管我的人要求不能用网上的插件,oh~~~my god!! 这是多么能让千万只草原上的马儿奔腾的要求~~~ 先实现一个比较简单的功能: 需求:网页遮罩层/弹出层,兼容IE6 幸好本屌丝以前聪明收集了个js的版本,so,自己改写成了jQuery插件形式的,方便以后使用. 屁话不多放,无码无真相! 复制代码 代码如下: /******************************* * @name Layer跨浏览器兼容插件 v1.

  • jQuery+css+html实现页面遮罩弹出框

    页面遮罩弹出框是最常见的一种情况,今天用jQuery实现页面遮罩弹出框,主要用的技术有JQuery,css和html, html代码如下: 复制代码 代码如下: <div id="main"><a href="javascript:showBg();">点击这里查看效果</a> <div id="fullbg"></div> <div id="dialog"&g

  • jquery下实现overlay遮罩层代码

    复制代码 代码如下: /* 模态遮罩层单例对象 opacity:背景透明度 1. show() 2. close() */ Q.Overlay = function(opacity) { var self = this; self._createDiv = function() { if (self._overlay) return; self._overlay = $("<div></div>"); var overlayCss = { 'width': '1

  • jquery 圆角遮罩图片实现图片圆角

    运行后请刷新一次. 圆角遮罩图片实现图片圆角 by ahuinan 2009-5-15 $(function(){ $(".kuang").after(" "); }) li{ list-style:none; float:left; margin-right:20px; margin-top:20px; position:relative; } img{ border:0; width:94px; height:94px; } .kuang_div{ positi

  • jQuery操作dom实现弹出页面遮罩层(web端和移动端阻止遮罩层的滑动)

    最近项目遇到了遮罩层的一些问题,总结一下: 弹出遮罩层 遮罩层弹出有非常多的方法,这里只写出本人用的代码,使用jq操作dom的方法进行实现的. <style>.box{position:absolute;width:100%;left:50%;height:auto;z-index:100;background-color:#f5f5f5;border:1px #ddd solid;padding:1px;}</style><div id="bg" v-c

随机推荐