用jQuery實現彈出窗口/彈出div層

原文鏈接:http://hi.baidu.com/awz_tiger/item/863cfc10c4bb0f6171d5e8d9

http://blog.163.com/qiuxinke2006@126/blog/static/24885580201131763139536/

http://hi.baidu.com/kilwin/blog/item/f4cfaf2695375920c9955947.html

?

  用div層代替傳統的彈出窗口已經變得很普遍了,因為div層是網頁的一部分,不會像傳統的彈出窗口那樣容易被瀏覽器攔截。我們常見的彈出div層就是在頁面加載后或者點擊頁面的某個鏈接時彈出一個div層,同時頁面的其他地方會變灰。那么今天我就試著用jquery來實現這個效果。


  通過今天的jquery實例學習,我們要達到這樣的效果:點擊頁面的鏈接,彈出一個div層,同時頁面的其他部分變灰并且不能點擊;無論是改變瀏覽器窗口大小還是下拉滾動條,這個彈出層都能始終保持居中;點擊頁面的關閉按鈕,彈出層消失,頁面恢復原樣。

  點擊查看效果>>>

  這里借鑒之前的一篇文章《基于jQuery的固定飄浮層》,使彈出窗口可以始終固定在瀏覽器的正中間。在這里有一個要點,就是如何使頁面的其他地方在彈出窗口的同時變灰。我使用的方法就是在點擊鏈接彈出div層的時候,給頁面增加一個div層,這個層就“負責”使頁面變灰。點擊關閉后,刪除這個層就能使頁面恢復原樣。不知道有沒有更好的方法,有的話請告訴我哦。

  其他應該沒什么問題了,還是很簡單的,在這里順便貼上jquery代碼:
  
$(function(){var screenwidth,screenheight,mytop,getPosLeft,getPosTopscreenwidth = $(window).width();screenheight = $(window).height();//獲取滾動條距頂部的偏移mytop = $(document).scrollTop();//計算彈出層的leftgetPosLeft = screenwidth/2 - 260;//計算彈出層的topgetPosTop = screenheight/2 - 150;//css定位彈出層$("#box").css({"left":getPosLeft,"top":getPosTop});//當瀏覽器窗口大小改變時...$(window).resize(function(){screenwidth = $(window).width();screenheight = $(window).height();mytop = $(document).scrollTop();getPosLeft = screenwidth/2 - 260;getPosTop = screenheight/2 - 150;$("#box").css({"left":getPosLeft,"top":getPosTop+mytop});});//當拉動滾動條時...$(window).scroll(function(){screenwidth = $(window).width();screenheight = $(window).height();mytop = $(document).scrollTop();getPosLeft = screenwidth/2 - 260;getPosTop = screenheight/2 - 150;$("#box").css({"left":getPosLeft,"top":getPosTop+mytop});});//點擊鏈接彈出窗口$("#popup").click(function(){$("#box").fadeIn("fast");//獲取頁面文檔的高度var docheight = $(document).height();//追加一個層,使背景變灰$("body").append("<div id='greybackground'></div>");$("#greybackground").css({"opacity":"0.5","height":docheight});return false;});//點擊關閉按鈕$("#closeBtn").click(function() {$("#box").hide();//刪除變灰的層$("#greybackground").remove();return false;});});



  源代碼
<!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="Content-Type" content="text/html; charset=utf-8" />  
<title>jquery pop up</title>  
<script src="jquery-ui-1.10.3/jquery-1.9.1.js" type="text/javascript"></script><style type="text/css"> ?* { margin:0; padding:0;? } #wrapper {? height:1000px;? } ?#box { ?display:none;? ?position:absolute; ?width:520px; ?height:300px; border:#f60 solid 2px; z-index:200; ?background:#fff; ?} ?#closeBtn {? position:absolute;? right:10px;? top:10px;? cursor:pointer;? } ?#greybackground { ?background:#000; ?display:block; ?z-index:100; ?width:100%; ?position:absolute; ?top:0; ?left:0; } ?</style>  
</head><body><div id="wrapper">   <a href="http://www.netchina.com.cn" id="popup">點擊彈出div窗口</a>   </div><div id="box"><span id="closeBtn">關閉</span></div><script type="text/javascript"> ?
$(function(){ ?var screenwidth,screenheight,mytop,getPosLeft,getPosTop;screenwidth = $(window).width(); ?screenheight = $(window).height(); ?mytop = $(document).scrollTop(); ?getPosLeft = screenwidth/2 - 260; ?getPosTop = screenheight/2 - 150; ?$("#box").css({"left":getPosLeft,"top":getPosTop}); $(window).resize(function(){ ?screenwidth = $(window).width(); ?screenheight = $(window).height(); ?mytop = $(document).scrollTop(); ?getPosLeft = screenwidth/2 - 260; ?getPosTop = screenheight/2 - 150; ?$("#box").css({"left":getPosLeft,"top":getPosTop+mytop}); ?}); ?$(window).scroll(function(){ ?screenwidth = $(window).width(); ?screenheight = $(window).height(); ?mytop = $(document).scrollTop(); ?getPosLeft = screenwidth/2 - 260; ?getPosTop = screenheight/2 - 150; ?$("#box").css({"left":getPosLeft,"top":getPosTop+mytop}); ?}); ?$("#popup").click(function(){ ?$("#box").fadeIn("fast"); ?$("body").append("<div id='greybackground'></div>"); ?var documentheight = $(document).height(); ?$("#greybackground").css({"opacity":"0.5","height":documentheight}); ?return false; ?}); ?$("#closeBtn").click(function() { $("#box").hide(); ?$("#greybackground").remove(); ?return false; ?}); ?}); ?</script></body>
</html>

  

JavaScript實現彈出窗口實質上就是在瀏覽器上畫了一個方形區域,并在開始時將其隱藏,只是到某個JavaScript事件時才通過修改css的屬性值來將其顯示出來。

其大致步驟為:

創建一個裝載彈出窗口的div

<html>? ?
<head>? ?
<title>jQuery實例1:浮動窗口</title>? ?
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">? ?
<style type="text/css">
#win{?? ?
/*邊框*/? ?
border:1px red solid;?? ?
/*窗口的高度和寬度*/? ?
width : 300px;?? ?
height: 200px;?? ?
/*窗口的位置*/? ?
position : absolute;?? ?
top : 100px;?? ?
left: 350px;?? ?
/*開始時窗口不可見*/? ?
display : none;?? ?
}?? ?
/*控制背景色的樣式*/? ?
#title{?? ?
background-color : blue;?? ?
color : red;?? ?
/*控制標題欄的左內邊距*/? ?
padding-left: 3px;?? ?
}?? ?
#cotent{?? ?
padding-left : 3px;?? ?
padding-top :? 5px;?? ?
}?? ?
/*控制關閉按鈕的位置*/? ?
#close{?? ?
margin-left: 188px;?? ?
/*當鼠標移動到X上時,出現小手的效果*/? ?
cursor: pointer;?? ?
}? ?
#win{ ?
/*邊框*/ ?
border:1px red solid; ?
/*窗口的高度和寬度*/ ?
width : 300px; ?
height: 200px; ?
/*窗口的位置*/ ?
position : absolute; ?
top : 100px; ?
left: 350px; ?
/*開始時窗口不可見*/ ?
display : none; ?
} ?
/*控制背景色的樣式*/ ?
#title{ ?
background-color : blue; ?
color : red; ?
/*控制標題欄的左內邊距*/ ?
padding-left: 3px; ?
} ?
#cotent{ ?
padding-left : 3px; ?
padding-top :? 5px; ?
} ?
/*控制關閉按鈕的位置*/ ?
#close{ ?
margin-left: 188px; ?
/*當鼠標移動到X上時,出現小手的效果*/ ?
cursor: pointer; ?
}? ?
</style>
<script type="text/javascript" src="jquery-ui-1.10.3/jquery-1.9.1.js"></script>
<script type="text/javascript">
function showWin(){?? ?
/*找到div節點并返回*/? ?
var winNode = $("#win");?? ?
//方法一:利用js修改css的值,實現顯示效果?? ?
// winNode.css("display", "block");?? ?
//方法二:利用jquery的show方法,實現顯示效果?? ?
// winNode.show("slow");?? ?
//方法三:利用jquery的fadeIn方法實現淡入?? ?
winNode.fadeIn("slow");?? ?
}?? ?
function hide(){
var winNode = $("#win");?? ?
//方法一:修改css的值?? ?
//winNode.css("display", "none");?? ?
//方法二:jquery的fadeOut方式?? ?
winNode.fadeOut("slow");?? ?
//方法三:jquery的hide方法?? ?
winNode.hide("slow");?? ?
} ?
</script>
</head>? ?
<body>? ?
</body>? ?
<a onClick="showWin()" href="#" mce_href="#">彈出窗口</a>? ?
<div id="win">? ?
<div id="title">我是標題欄!<span id="close" onClick="hide()">X</span></div>? ?
<div id="content">我是一個窗口!</div>? ?
</div>? ?
</html> 

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/276614.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/276614.shtml
英文地址,請注明出處:http://en.pswp.cn/news/276614.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

模塊定義文件導出類_濃縮的就是精華——ES6模塊精煉講解

概述在 ES6 前&#xff0c; 實現模塊化使用的是 RequireJS 或者 seaJS(分別是基于 AMD 規范的模塊化庫&#xff0c; 和基于 CMD 規范的模塊化庫)。ES6 引入了模塊化&#xff0c;其設計思想是在編譯時就能確定模塊的依賴關系&#xff0c;以及輸入和輸出的變量。ES6 的模塊化分為…

關于快速開發和設計應用系統的一些個人的意見

作為程序員&#xff0c;經常會為我們的客戶去開發和設計各種應用系統&#xff0c;比如OA /CRM/物流調度/客戶服務/電子政務。。。及各種管理信息系統&#xff0c;我們經常會去開發和實現這樣的一些系統&#xff0c;每周、每月、每年經常都要去做這樣的一些開發工作&#xff0c;…

Jquery1.6版本后attr的變化

原文鏈接&#xff1a;http://www.cnblogs.com/-run/archive/2011/11/16/2251569.html Jquery1.6版本后attr的變化 Jquery1.6版本后 attr 改動后的效果&#xff1a; jquery1.6版本&#xff1a; 下文來自www.jquery.com The difference betweenattributes and properties can b…

idea main scanner 輸入_哇曬,你竟然不知道idea的 Live Templates

最近公司新近來一名程序猿&#xff0c;在寫代碼時&#xff0c;美美寫到System.out.println的時候&#xff0c;都要一母不差的用鍵盤敲上去&#xff0c;我問他你之前有用過eclipse中的快捷方法syso嗎&#xff1f;于是&#xff0c;我給他介紹了一下&#xff0c;在idea中如何自定義…

Android開發需要了解的 IM 知識

引言即便在通訊如此發達的今天&#xff0c;IM 也依然是諸多場景下非常重要的基礎能力。因此做為 一名 Android 開發&#xff0c;不可避免的會遇到一些IM 相關的需求或問題。本文以一個Android開發的角度來講述IM 開發相關的基礎知識。想要閱讀更多技術干貨、行業洞察&#xff0…

偷梁換柱做自己的封裝系統

偷梁換柱做自己的封裝系統&#xff01;菜鳥一開始都想把自己的信息加到系統里&#xff0c;但封裝系統只會一點&#xff01;但我們可“拿來”&#xff0c;我們可以用偷梁換柱的方法來修改別人的系統&#xff0c;本文以雨林的GHOST5.0系統為例。一、準備工作1、當然是下載一個自己…

JQuery 1.6+ checkbox 狀態選擇

示例&#xff1a; HTML: <form><table><tr><td><input type"checkbox" id"select_all"/></td></tr><tr><td><input type"checkbox" name"select[]"/></td></…

臺電u盤量產工具_簡單幾步,讓U盤起死回生

如今&#xff0c;雖說云存儲風靡&#xff0c;但U盤仍存在價值&#xff0c;畢竟在很多場合并不方便上網&#xff0c;即便如此網上存儲有時也并不方便&#xff0c;也不安全。與此同時&#xff0c;如果是大文件存儲&#xff0c;云盤上傳和下載速度非常慢&#xff0c;并不適合海量數…

PXC集群常見錯誤(一)

歡迎關注MySQL 8.0必知必會系列課程。MySQL8.0必知必會-自動化部署 https://edu.51cto.com/course/16368.htmlMySQL8.0必知必會之參數標準化配置 https://edu.51cto.com/course/16358.html1.Cant start server: Bind on TCP/IP port: Address already in use…

獲取GridView中RowCommand的當前選中行的索引或主鍵Id

獲取GridView中RowCommand的當前索引行 前臺添加一模版列,里面添加一個LinkButton前臺 (如果在后臺代碼中用e.CommandArgument取值的話前臺代碼就必須在按鈕中設置CommandArgument的值&#xff0c;值為綁定的數據庫字段<asp:TemplateField HeaderText"操作"> …

系統架構師 項目經理 哪個更有前景_中央空調加地暖與五恒系統,哪個更省錢?...

每逢嚴冬酷暑,人們都會感嘆空調是最偉大的發明,并且隨著科技發展還在不斷進化。從烤火取暖到空調和地暖的供暖,從紙扇電扇的吹風到空調的制冷,人們的需求正在不斷提高,于是,為了滿足人們的需求&#xff0c;市場上又衍生出了家裝五恒系統。 恒溫、恒濕、恒氧、恒潔、恒靜這…

軟件架構基本原則

軟件架構本質上是繪制一幅復雜素描所打的草稿&#xff0c;我還說&#xff0c;如果你罩得住&#xff0c;可以不需要這個草稿。但這只是“理論上”&#xff0c;我們寫軟件&#xff0c;基本上不是在寫只有幾千行的代碼的小程序&#xff0c;而是寫數千萬行的大型程序。《道德經》說…

Smarty目錄結構和子目錄路徑問題

原文鏈接&#xff1a;http://bbs.csdn.net/topics/80223905 問題 1).最初在模板文件中使用了絕對路徑&#xff08;相對于站點根的路徑 ).如在system_info.tpl中圖片是這樣顯示的<img src"/templates/default/images/logo.gif"/>這樣當系統發布時&#xff0c;…

c++直角坐標系與極坐標系的轉換_一篇閱讀量高達2百6十多萬的關于坐標系和投影的相關知識探討...

本文轉載于CSDN作者rsyaoxin這是一篇關于坐標和投影的「神文」截止目前瀏覽量已達2698239是相關文章中不可打破的神話...文末有本文作者推薦的兩款坐標轉換的小工具下載鏈接回想一下&#xff0c;接觸遙感專業也有幾個年頭了&#xff0c;而現在越來越偏離遙感了&#xff0c;突然…

c# xmlhttp POST提取遠程webservice數據

public string cancel(string StudentID,string Mobile){string datanull;data "<?xml version1.0 encodingutf-8?><soap:Envelope xmlns:xsihttp://www.w3.org/2001/XMLSchema-instance xmlns:xsdhttp://www.w3.org/2001/XMLSchema xmlns:soaphttp://schemas.…

Javascript實現的左右滑動菜單

原文鏈接&#xff1a;http://www.cnblogs.com/miqi2214/archive/2009/04/28/1445308.html Javascript實現的左右滑動菜單 先看Demo便于理解&#xff1a;請大家往這里看 業務需求&#xff1a; 1. 菜單個數不固定&#xff0c;當菜單個數長度小于給定范圍寬度&#xff0c;則左右移…

查詢用戶分配角色TCODE

s_bce_68001419 轉載于:https://www.cnblogs.com/yangliang/archive/2009/04/13/1434862.html

query string parameters什么意思_public static void main(String[] args) 是什么意思?(轉)...

public static void main(String[] args)&#xff0c;是java程序的入口地址&#xff0c;java虛擬機運行程序的時候首先找的就是main方法。一、這里要對main函數講解一下&#xff0c;參數String[] args是一個字符串數組&#xff0c;接收來自程度序執行時傳進來的參數。如果是在控…

經典算法:位圖排序

最近發現一個有趣的排序算法&#xff0c;通過位圖來完成排序。位圖排序其實就是基數排序&#xff0c;只不過位圖排序的下標是比特位。 問題描述 輸入&#xff1a;一個最多包含n個正整數的文件&#xff0c;每個數都小于n&#xff0c;其中n10^7。如果在輸入文件中有任何正數重復出…

PHP中刪除目錄的三種方法

原文鏈接&#xff1a;http://www.chinaz.com/program/2008/1022/41645.shtml PHP中刪除目錄的三種方法 1、遞規法&#xff1a;利用遞歸一層一層的刪。 deleteDir(&#xff04;dir) { if (rmdir(&#xff04;dir)false && is_dir(&#xff04;dir)) {if (&#xff04;d…