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


Posted in Javascript onOctober 14, 2014

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

预览地址:

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();

    });

});

至此功能完成。

Javascript 相关文章推荐
可缩放Reloaded-一个针对可缩放元素的复用组件
Mar 10 Javascript
根据鼠标的位置动态的控制层的位置
Nov 24 Javascript
JavaScript 开发规范要求(图文并茂)
Jun 11 Javascript
Javascript实现返回上一页面并刷新的小例子
Dec 11 Javascript
JavaScript简单实现弹出拖拽窗口(二)
Jun 17 Javascript
深入浅析JavaScript函数前面的加号和叹号
Jul 09 Javascript
JavaScript实现自动切换图片代码
Oct 11 Javascript
详解使用JS如何制作简单的ASCII图与单极图
Mar 31 Javascript
vue如何判断dom的class
Apr 26 Javascript
RxJS的入门指引和初步应用
Jun 15 Javascript
js实现跟随鼠标移动的小球
Aug 26 Javascript
Vue与React的区别和优势对比
Dec 18 Vue.js
从数据库读取数据后将其输出成html标签的三种方法
Oct 13 #Javascript
JavaScript使用循环和分割来替换和删除元素实例
Oct 13 #Javascript
javascript实现分栏显示小技巧附图
Oct 13 #Javascript
jquery引用方法时传递参数原理分析
Oct 13 #Javascript
form.submit()不能提交表单的错误原因及解决方法
Oct 13 #Javascript
js的touch事件的实际引用
Oct 13 #Javascript
JQuery 使用attr方法实现下拉列表选中
Oct 13 #Javascript
You might like
常用表单验证类,有了这个,一般的验证就都齐了。
2006/12/06 PHP
PHP 杂谈《重构-改善既有代码的设计》之四 简化条件表达式
2012/04/09 PHP
PHP的一个完美GIF等比缩放类,附带去除缩放黑背景
2014/04/01 PHP
PHP函数strip_tags的一个bug浅析
2014/05/22 PHP
使用PHPMailer实现邮件发送代码分享
2014/10/23 PHP
php同时使用session和cookie来保存用户登录信息的实现代码
2016/05/13 PHP
PHP二维数组去重算法
2016/12/17 PHP
使用phpQuery获取数组的实例
2017/03/13 PHP
又一个小巧的图片预加载类
2007/05/05 Javascript
在UpdatePanel内jquery easyui效果失效的解决方法
2010/04/11 Javascript
15 个 JavaScript Web UI 库
2010/05/19 Javascript
页面使用密码保护代码
2013/04/10 Javascript
下拉列表选择项的选中在不同浏览器中的兼容性问题探讨
2013/09/18 Javascript
JS实现鼠标点击展开或隐藏表格行的方法
2015/03/03 Javascript
jQuery判断数组是否包含了指定的元素
2015/03/10 Javascript
jQuery插件实现控制网页元素动态居中显示
2015/03/24 Javascript
JS简单获取当前日期和农历日期的方法
2017/04/17 Javascript
jquery.uploadifive插件怎么解决上传限制图片或文件大小问题
2017/05/08 jQuery
vue与TypeScript集成配置最简教程(推荐)
2017/10/17 Javascript
js时间戳与日期格式之间转换详解
2017/12/11 Javascript
JQuery实现ul中添加LI和删除指定的Li元素功能完整示例
2019/10/16 jQuery
python zip文件 压缩
2008/12/24 Python
使用tensorflow实现线性回归
2018/09/08 Python
利用python实现周期财务统计可视化
2019/08/25 Python
Python实现点云投影到平面显示
2020/01/18 Python
Python代码一键转Jar包及Java调用Python新姿势
2020/03/10 Python
Python实现获取当前目录下文件名代码详解
2020/03/10 Python
python 利用Pyinstaller打包Web项目
2020/10/23 Python
使用phonegap进行本地存储的实现方法
2017/03/31 HTML / CSS
美国在线眼镜商城:Eyeglasses.com
2017/06/26 全球购物
Agoda台湾官网:国内外订房2折起
2018/03/20 全球购物
西班牙多品牌鞋店连锁店:Krack
2018/11/30 全球购物
YBF Beauty官网:美丽挚友,美国知名彩妆品牌
2020/11/22 全球购物
党员自评材料范文
2014/12/17 职场文书
幼儿园圣诞节活动总结
2015/05/06 职场文书
《异世界四重奏》剧场版6月10日上映 PV视觉图原创角色发表
2022/03/20 日漫