首頁 web前端 js教程 如何建立一個JavaScript彈出DIV視窗層的效果_javascript技巧

如何建立一個JavaScript彈出DIV視窗層的效果_javascript技巧

May 16, 2016 pm 05:21 PM
彈出層

在本教學中,我將以最通俗的語言和最簡潔的程式碼為大家示範如何建立一個JavaScript彈出DIV視窗層的效果。

建立一個彈出DIV視窗可能是現在網站/網頁製作中最常碰到的問題之一。傳統的JavaScript彈窗已經不適合目前網站的設計理念了,理由有二:首先,不友好——生硬的彈出對話框且伴隨著“喲”的一聲對用戶體驗是個很大的挑戰;其次,兼容性不夠強-有相當多的瀏覽器屏蔽了這種JS的Alert()方法。於是,一個良好使用者體驗的網站需要一個更合理的解決方案-使用很少的HTML程式碼,很少的CSS程式碼和幾行的JavaScript程式碼來模擬瀏覽器預設的彈出視窗(即替換掉預設的Alert()介面和功能)。

實作原理:

首先,我們將彈出框中的內容放置在一個特殊的DIV層中,然後預設隱藏它(即初始不可見,使用CSS即可實現)。當使用者執行某個動作時-例如點擊某個連結或將滑鼠遊標移到某個連結上-我們將先前設定好的隱藏層顯示在所有頁面元素的最上層(將使用JS操作實作)。此外,我們還將在彈出DIV視窗中設定一個按鈕來執行-當使用者點擊此按鈕時關閉視窗的功能。

實現過程:

就如我上面提到的,我們首先需要創建一個特殊的DIV層,然後我們將彈出視窗的內容放在這個DIV層裡面。在這裡,我們將其ID命名為「popupcontent 」以區別於其他DIV層。

這是一個DIV彈跳窗效果!


彈出視窗的CSS修飾代碼:

接下來,讓我們給上面已創建好的這個DIV彈出層進行CSS美化。其中最重要的幾個參數分別是:overflow(內容溢出), visibility(可見性) 和position(定位方式)。同時我也為這個視窗效果添加了很多其他程式碼,但這些只是用於美化,使這個視窗更絢麗。所以,我們最後定義的CSS程式碼形如:
複製程式碼 程式碼如下:


程式碼如下:


#🎜>#🎜># popupcontent{
position: absolute;
visibility: hidden;
overflow: hidden;
border:1px solid #CCC;
background-color:#F9F9F9;order padding:5px;
}


從上面CSS程式碼中的紅色部分可以看出:這個DIV層初始預設狀態是不可見的。
大家可以依照需求對以上程式碼進行美化,但請務必保留position,visibility,overflow三個屬性。

JavaScript程式碼用於觸發和顯示彈出視窗:


這可能是本教學最重要、最有趣的地方了。我們接下來會寫2個過程函數分別用來顯示和隱藏上面那個DIV彈跳窗。當然,這兩個函數之中會包含一些主體邏輯。

過程函數中需要順序包含的邏輯:

計算JavaScript彈出視窗在螢幕上的顯示位置(定位);
在彈出視窗中新增一個狀態列(或按鈕) ,用於關閉開啟狀態下的視窗;
顯示彈出視窗。

為了簡單起見,本例中我們設定的顯示位置是Top:200,Left:200。即以瀏覽器內容框的左上角為座標,向下偏移200PX,向左偏移200PX。

彈出視窗的大小我們可以在顯示函數的參數中進行設置,包括兩個參數:視窗長度和視窗寬度。
如果你需要將本例中的程式碼進行二次開發,有個地方需要特別注意,那就是取得彈出視窗DIV層的DOM對象,我們可以透過下面這個getElementById函數來取得ID名為“Popcontent”的DOM對象。 複製程式碼

程式碼如下:

在取得這個(彈出視窗)DOM物件之後,我們可以在JS程式碼中修改視窗的相對的位置和視窗大小。 複製程式碼
程式碼如下:


popUp.style.top = "200px";視窗距離瀏覽器內容區最上方的偏移值

popUp.style.left = "200px";//視窗距離瀏覽器內容區最左邊的偏移值

popUp. style.width = w "px";//視窗的寬度
popUp.style.height = h "px";//視窗的高度
接下來,我們需要為視窗新增一個「關閉」按鈕,用於在視窗開啟狀態下關閉這個視窗。要完美的實現這項功能,首先我們需要聲明一個全域變量,用於儲存彈出視窗DIV中的內容。這是因為,如果你在一個頁面中顯示多個內容不同的彈出窗口,你不需要將按鈕重複的複製到這些DIV層中,這樣就簡化了行為邏輯:
複製程式碼 程式碼如下:

if (baseText == null) baseText = popUp.innerHTML;

"
";

最後一個需要注意的地方是這個「關閉」按鈕的定位問題。這個很容易實現,設定一下這個按鈕物件的向上的空白邊即可(空白邊的數值設定成稍小於整個彈出視窗的DIV高度即可)。

至此,所有的行為邏輯講解完畢,最後的彈跳窗顯示函數的完整程式碼如下:

複製程式碼複製程式碼

程式碼如下:


var baseText = null;

function showPopup(w,h){
var popUp = document.getElementById(w,h){
var popUp = document.getElementById(""popupById(""popa); >popUp.style.top = "200px";
popUp.style.left = "200px";
popUp.style.width = w "px";
popUp.style.height = h "px ";
if (baseText == null) baseText = popUp.innerHTML;
popUp.innerHTML = baseText "
";
var sbar = document.getElementById("statusbar");
sbar.style.marginTop = (parseInt(h)-40) "px";
popUpUp .style.visibility = "visible";
}

隱藏彈出視窗:
彈出視窗的過程就相當簡單了。只需要先取得彈出視窗那個DIV的DOM對象,然後將其屬性設為「隱藏」即可。 複製程式碼

程式碼如下:


function hideup(){

function hideup(){ .getElementById("popupcontent"); popUp.style.visibility = "hidden";
}



拓展HTML程式碼最終實現彈窗效果:


我們需要做的就是在某個連結或按鈕的對應事件上加入JS函數「showPopup() 」即可。
例如,需要在滑鼠移動到某連接上時彈出視窗:
Open popup 需要在滑鼠點擊某個連線時彈出視窗: Open popup
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

前端熱敏紙小票打印遇到亂碼問題怎麼辦? 前端熱敏紙小票打印遇到亂碼問題怎麼辦? Apr 04, 2025 pm 02:42 PM

前端熱敏紙小票打印的常見問題與解決方案在前端開發中,小票打印是一個常見的需求。然而,很多開發者在實...

神秘的JavaScript:它的作用以及為什麼重要 神秘的JavaScript:它的作用以及為什麼重要 Apr 09, 2025 am 12:07 AM

JavaScript是現代Web開發的基石,它的主要功能包括事件驅動編程、動態內容生成和異步編程。 1)事件驅動編程允許網頁根據用戶操作動態變化。 2)動態內容生成使得頁面內容可以根據條件調整。 3)異步編程確保用戶界面不被阻塞。 JavaScript廣泛應用於網頁交互、單頁面應用和服務器端開發,極大地提升了用戶體驗和跨平台開發的靈活性。

誰得到更多的Python或JavaScript? 誰得到更多的Python或JavaScript? Apr 04, 2025 am 12:09 AM

Python和JavaScript開發者的薪資沒有絕對的高低,具體取決於技能和行業需求。 1.Python在數據科學和機器學習領域可能薪資更高。 2.JavaScript在前端和全棧開發中需求大,薪資也可觀。 3.影響因素包括經驗、地理位置、公司規模和特定技能。

如何使用JavaScript將具有相同ID的數組元素合併到一個對像中? 如何使用JavaScript將具有相同ID的數組元素合併到一個對像中? Apr 04, 2025 pm 05:09 PM

如何在JavaScript中將具有相同ID的數組元素合併到一個對像中?在處理數據時,我們常常會遇到需要將具有相同ID�...

JavaScript難以學習嗎? JavaScript難以學習嗎? Apr 03, 2025 am 12:20 AM

學習JavaScript不難,但有挑戰。 1)理解基礎概念如變量、數據類型、函數等。 2)掌握異步編程,通過事件循環實現。 3)使用DOM操作和Promise處理異步請求。 4)避免常見錯誤,使用調試技巧。 5)優化性能,遵循最佳實踐。

如何實現視差滾動和元素動畫效果,像資生堂官網那樣?
或者:
怎樣才能像資生堂官網一樣,實現頁面滾動伴隨的動畫效果? 如何實現視差滾動和元素動畫效果,像資生堂官網那樣? 或者: 怎樣才能像資生堂官網一樣,實現頁面滾動伴隨的動畫效果? Apr 04, 2025 pm 05:36 PM

實現視差滾動和元素動畫效果的探討本文將探討如何實現類似資生堂官網(https://www.shiseido.co.jp/sb/wonderland/)中�...

JavaScript的演變:當前的趨勢和未來前景 JavaScript的演變:當前的趨勢和未來前景 Apr 10, 2025 am 09:33 AM

JavaScript的最新趨勢包括TypeScript的崛起、現代框架和庫的流行以及WebAssembly的應用。未來前景涵蓋更強大的類型系統、服務器端JavaScript的發展、人工智能和機器學習的擴展以及物聯網和邊緣計算的潛力。

console.log輸出結果差異:兩次調用為何不同? console.log輸出結果差異:兩次調用為何不同? Apr 04, 2025 pm 05:12 PM

深入探討console.log輸出差異的根源本文將分析一段代碼中console.log函數輸出結果的差異,並解釋其背後的原因。 �...

See all articles