jquery實(shí)現(xiàn)簡單的遮罩層
本文實(shí)例講解了jquery遮罩層,包括遮罩層的不同樣式實(shí)現(xiàn)、mask實(shí)現(xiàn)遮罩層等,分享給大家供大家參考,具體內(nèi)容如下
一、jQuery實(shí)現(xiàn)遮罩層的不同樣式
1.1 背景半透明遮罩層樣式
需要一個(gè)黑色(當(dāng)然也可以其他)背景,且須設(shè)置為絕對定位,以下是項(xiàng)目中用到的css樣式:
/* 半透明的遮罩層 */
#overlay {
background: #000;
filter: alpha(opacity=50); /* IE的透明度 */
opacity: 0.5; /* 透明度 */
display: none;
position: absolute;
top: 0px;
left: 0px;
width: 100%;
height: 100%;
z-index: 100; /* 此處的圖層要大于頁面 */
display:none;
}
1.2 jQuery實(shí)現(xiàn)遮罩
/* 顯示遮罩層 */
function showOverlay() {
$("#overlay").height(pageHeight());
$("#overlay").width(pageWidth());
// fadeTo第一個(gè)參數(shù)為速度,第二個(gè)為透明度
// 多重方式控制透明度,保證兼容性,但也帶來修改麻煩的問題
$("#overlay").fadeTo(200, 0.5);
}
/* 隱藏覆蓋層 */
function hideOverlay() {
$("#overlay").fadeOut(200);
}
/* 當(dāng)前頁面高度 */
function pageHeight() {
return document.body.scrollHeight;
}
/* 當(dāng)前頁面寬度 */
function pageWidth() {
return document.body.scrollWidth;
}
1.3 提示框
遮罩的目的無非讓人無法操作內(nèi)容,突出提示框,而提示框可參考上面的制作,z-index比遮罩層更高便可。主要問題是,如何控制提示框在瀏覽器居中。
/* 定位到頁面中心 */
function adjust(id) {
var w = $(id).width();
var h = $(id).height();
var t = scrollY() + (windowHeight()/2) - (h/2);
if(t < 0) t = 0;
var l = scrollX() + (windowWidth()/2) - (w/2);
if(l < 0) l = 0;
$(id).css({left: l+'px', top: t+'px'});
}
//瀏覽器視口的高度
function windowHeight() {
var de = document.documentElement;
return self.innerHeight || (de && de.clientHeight) || document.body.clientHeight;
}
//瀏覽器視口的寬度
function windowWidth() {
var de = document.documentElement;
return self.innerWidth || (de && de.clientWidth) || document.body.clientWidth
}
/* 瀏覽器垂直滾動(dòng)位置 */
function scrollY() {
var de = document.documentElement;
return self.pageYOffset || (de && de.scrollTop) || document.body.scrollTop;
}
/* 瀏覽器水平滾動(dòng)位置 */
function scrollX() {
var de = document.documentElement;
return self.pageXOffset || (de && de.scrollLeft) || document.body.scrollLeft;
}
二、Jquery超簡單遮罩層實(shí)現(xiàn)代碼
在開發(fā)中,為了避免二次提交,遮罩層的運(yùn)用越來越普遍
看了很多代碼,下面跟大家分享一下我認(rèn)為最簡單的遮罩層實(shí)現(xiàn)方式:
1.樣式如下設(shè)置:
CSS代碼:
<style type="text/css">
.mask {
position: absolute; top: 0px; filter: alpha(opacity=60); background-color: #777;
z-index: 1002; left: 0px;
opacity:0.5; -moz-opacity:0.5;
}
</style>
其中:opacity:0.5;適用于IE, -moz-opacit:0.5;適用于火狐;你只需要都加上,便可以火狐和IE下都可以使用。
2.指定層的高度、和寬度
js代碼
<pre class="html" name="code"><script type="text/javascript">
//兼容火狐、IE8
//顯示遮罩層
function showMask(){
$("#mask").css("height",$(document).height());
$("#mask").css("width",$(document).width());
$("#mask").show();
}
//隱藏遮罩層
function hideMask(){
$("#mask").hide();
}
</script>
3.在<body>中加入如下代碼,然后就可以看到效果
html代碼
<div id="mask" class="mask"></div> <a href="javascript:;" onclick="showMask()" >點(diǎn)我顯示遮罩層</a><br />
4.使用方法
在ajax提交表單后,加上showMask方法,數(shù)據(jù)返回后,加上hideMask()
需要的親們可以根據(jù)自己需求,在遮罩層上面加一些提示信息
三、發(fā)布個(gè)JQuery的遮罩層實(shí)現(xiàn)(mask)
用過ExtJs的可能知道在ExtJs中集成了很多的UI元素可以很方便我們的使用。其中有mask()和unmask()這兩個(gè)方法,這兩個(gè)方法在指定的元素上添加一個(gè)遮罩層和一個(gè)提示消息實(shí)現(xiàn),增加客戶體驗(yàn)。由于最近做項(xiàng)目的時(shí)候,發(fā)現(xiàn)有時(shí)為了使用這一兩個(gè)方法需要引入一個(gè)比較“龐大”的Extjs進(jìn)來,覺得有點(diǎn)不劃算,于是自己用jquery實(shí)現(xiàn)了一個(gè)比較簡單mask、unmask方法來實(shí)現(xiàn)該效果。大家知道jquery是一個(gè)優(yōu)秀的javascript框架,不但體積小而且使用方便,我現(xiàn)在逐漸將系統(tǒng)中使用Extjs實(shí)現(xiàn)的代碼或組建全部更換成Jquery來實(shí)現(xiàn)。好了不多說,上我的代碼,這些代碼是根據(jù)網(wǎng)上的一位朋友實(shí)現(xiàn)的documentMask基礎(chǔ)上進(jìn)行整改的,使用上更加靈活方便了。
(function(){
$.extend($.fn,{
mask: function(msg,maskDivClass){
this.unmask();
// 參數(shù)
var op = {
opacity: 0.8,
z: 10000,
bgcolor: '#ccc'
};
var original=$(document.body);
var position={top:0,left:0};
if(this[0] && this[0]!==window.document){
original=this;
position=original.position();
}
// 創(chuàng)建一個(gè) Mask 層,追加到對象中
var maskDiv=$('<div class="maskdivgen"> </div>');
maskDiv.appendTo(original);
var maskWidth=original.outerWidth();
if(!maskWidth){
maskWidth=original.width();
}
var maskHeight=original.outerHeight();
if(!maskHeight){
maskHeight=original.height();
}
maskDiv.css({
position: 'absolute',
top: position.top,
left: position.left,
'z-index': op.z,
width: maskWidth,
height:maskHeight,
'background-color': op.bgcolor,
opacity: 0
});
if(maskDivClass){
maskDiv.addClass(maskDivClass);
}
if(msg){
var msgDiv=$('<div style="position:absolute;border:#6593cf 1px solid; padding:2px;background:#ccca"><div style="line-height:24px;border:#a3bad9 1px solid;background:white;padding:2px 10px 2px 10px">'+msg+'</div></div>');
msgDiv.appendTo(maskDiv);
var widthspace=(maskDiv.width()-msgDiv.width());
var heightspace=(maskDiv.height()-msgDiv.height());
msgDiv.css({
cursor:'wait',
top:(heightspace/2-2),
left:(widthspace/2-2)
});
}
maskDiv.fadeIn('fast', function(){
// 淡入淡出效果
$(this).fadeTo('slow', op.opacity);
})
return maskDiv;
},
unmask: function(){
var original=$(document.body);
if(this[0] && this[0]!==window.document){
original=$(this[0]);
}
original.find("> div.maskdivgen").fadeOut('slow',0,function(){
$(this).remove();
});
}
});
})();
下面是使用實(shí)例代碼可供參考
<html>
<head>
<style>
body{
font-size:12px;
}
</style>
<script src="jquery-1.3.2.js" type="text/javascript"></script>
<script type="text/javascript">
(function(){
$.extend($.fn,{
mask: function(msg,maskDivClass){
this.unmask();
// 參數(shù)
var op = {
opacity: 0.8,
z: 10000,
bgcolor: '#ccc'
};
var original=$(document.body);
var position={top:0,left:0};
if(this[0] && this[0]!==window.document){
original=this;
position=original.position();
}
// 創(chuàng)建一個(gè) Mask 層,追加到對象中
var maskDiv=$('<div class="maskdivgen"> </div>');
maskDiv.appendTo(original);
var maskWidth=original.outerWidth();
if(!maskWidth){
maskWidth=original.width();
}
var maskHeight=original.outerHeight();
if(!maskHeight){
maskHeight=original.height();
}
maskDiv.css({
position: 'absolute',
top: position.top,
left: position.left,
'z-index': op.z,
width: maskWidth,
height:maskHeight,
'background-color': op.bgcolor,
opacity: 0
});
if(maskDivClass){
maskDiv.addClass(maskDivClass);
}
if(msg){
var msgDiv=$('<div style="position:absolute;border:#6593cf 1px solid; padding:2px;background:#ccca"><div style="line-height:24px;border:#a3bad9 1px solid;background:white;padding:2px 10px 2px 10px">'+msg+'</div></div>');
msgDiv.appendTo(maskDiv);
var widthspace=(maskDiv.width()-msgDiv.width());
var heightspace=(maskDiv.height()-msgDiv.height());
msgDiv.css({
cursor:'wait',
top:(heightspace/2-2),
left:(widthspace/2-2)
});
}
maskDiv.fadeIn('fast', function(){
// 淡入淡出效果
$(this).fadeTo('slow', op.opacity);
})
return maskDiv;
},
unmask: function(){
var original=$(document.body);
if(this[0] && this[0]!==window.document){
original=$(this[0]);
}
original.find("> div.maskdivgen").fadeOut('slow',0,function(){
$(this).remove();
});
}
});
})();
</script>
</head>
<body style="width:100%">
測試
<div id="test" style="width:200px;height:100px; border:black 1px solid;">
</div>
<a href="#" onclick="$('#test').mask('DIV層遮罩')">div遮罩</a>
<a href="#" onclick="$('#test').unmask()">關(guān)閉div遮罩</a>
<a href="#" onclick="$(document).mask('全屏遮罩').click(function(){$(document).unmask()})">全部遮罩</a>
</body>
</html>
以上就是jquery實(shí)現(xiàn)遮罩層的全部內(nèi)容介紹,希望對大家的學(xué)習(xí)有所幫助。
- JQuery 遮罩層實(shí)現(xiàn)(mask)實(shí)現(xiàn)代碼
- jQuery操作dom實(shí)現(xiàn)彈出頁面遮罩層(web端和移動(dòng)端阻止遮罩層的滑動(dòng))
- jQuery阻止移動(dòng)端遮罩層后頁面滾動(dòng)
- Jquery實(shí)現(xiàn)遮罩層的簡單實(shí)例(就是彈出DIV周圍都灰色不能操作)
- jquery下實(shí)現(xiàn)overlay遮罩層代碼
- jQuery實(shí)現(xiàn)彈出帶遮罩層的居中浮動(dòng)窗口效果
- jQuery遮罩層實(shí)現(xiàn)方法實(shí)例詳解(附遮罩層插件)
- jquery實(shí)現(xiàn)點(diǎn)擊其他區(qū)域時(shí)隱藏下拉div和遮罩層的方法
- 輕量級網(wǎng)頁遮罩層jQuery插件用法實(shí)例
- jQuery實(shí)現(xiàn)打開網(wǎng)頁自動(dòng)彈出遮罩層或點(diǎn)擊彈出遮罩層功能示例
- jQuery超簡單遮罩層實(shí)現(xiàn)方法示例
相關(guān)文章
javascript背景時(shí)鐘實(shí)現(xiàn)方法
這篇文章主要介紹了javascript背景時(shí)鐘實(shí)現(xiàn)方法,涉及javascript時(shí)間及頁面元素樣式的相關(guān)操作技巧,需要的朋友可以參考下2015-06-06
ES6?關(guān)鍵字?let?和?ES5?及關(guān)鍵字?var?的區(qū)別解析
var可以穿透控制語句、條件語句這樣的作用域,導(dǎo)致變量沖突經(jīng)常發(fā)生,這篇文章主要介紹了ES6?關(guān)鍵字?let?和?ES5?及關(guān)鍵字?var?的區(qū)別,需要的朋友可以參考下2022-09-09
移動(dòng)端Ionic App 資訊上下循環(huán)滾動(dòng)的實(shí)現(xiàn)代碼(跑馬燈效果)
這篇文章主要介紹了移動(dòng)端Ionic App 資訊上下循環(huán)滾動(dòng)的實(shí)現(xiàn)代碼,實(shí)現(xiàn)方法需要借助jQuery庫的選擇器和動(dòng)畫函數(shù),并且把jquery的操作封裝到指令里,具體指令代碼大家通過本文學(xué)習(xí)吧2017-08-08
BootStrap tab選項(xiàng)卡使用小結(jié)
這篇文章主要為大家詳細(xì)介紹了BootStrap tab選項(xiàng)卡使用小結(jié),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-10-10
JS跳出循環(huán)的方法區(qū)別對比分析(break,continue,return)
面向?qū)ο缶幊陶Z法中我們會(huì)碰到break ,continue, return這三個(gè)常用的關(guān)鍵字,那么關(guān)于這三個(gè)關(guān)鍵字的使用具體的操作是什么呢?接下來通過本文給大家講解JS跳出循環(huán)的方法區(qū)別對比分析(break,continue,return),感興趣的朋友一起看看吧2023-02-02
純css+js寫的一個(gè)簡單的tab標(biāo)簽頁帶樣式
最近經(jīng)常要用tab標(biāo)簽頁,于是就寫了一個(gè)簡單的tab標(biāo)簽頁,純css+js寫的,帶樣式。大家可以參考下2014-01-01

