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

來源:互聯網
上載者:User
在本教程中,我將用最通俗的語言和最簡潔的代碼給大家示範如何建立一個JavaScript彈出DIV視窗層的效果。

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

實現原理:

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

實現過程:

就如我上面提到的,我們首先需要建立一個特殊的DIV層,然後我們將快顯視窗的內容放在這個DIV層裡面。在這裡,我們將其ID命名為“popupcontent ”以區別於其他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;
border:1px solid #333;
padding:5px;
}

從上面CSS代碼中的紅色部分可以看出:這個DIV層初始預設狀態是不可見的。

大家可以根據需要對以上代碼進行美化,但請務必保留position,visibility,overflow三個屬性。

JavaScript代碼用於觸發和顯示快顯視窗:

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

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

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

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

快顯視窗的大小我們可以在顯示函數的參數中進行設定,包括兩個參數:視窗長度和視窗寬度。

如果你需要將本例中的代碼進行二次開發,有個地方需要特別注意,那就是擷取快顯視窗DIV層的DOM對象,我們可以通過下面這個getElementById函數來擷取ID名為“Popcontent”的DOM對象。
複製代碼 代碼如下:

var popUp = document.getElementById("popupcontent");

在擷取這個(快顯視窗)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;

popUp.innerHTML = baseText +

"<div id=\"statusbar\"><button onclick=\"hidePopup();\">Close window <button></div>";

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

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

var baseText = null;

function showPopup(w,h){
var popUp = document.getElementById("popupcontent");
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 + "<div id=\"statusbar\"><button onclick=\"hidePopup();
\">Close window<button></div>";
var sbar = document.getElementById("statusbar");
sbar.style.marginTop = (parseInt(h)-40) + "px";
popUp.style.visibility = "visible";
}

隱藏快顯視窗:

隱藏快顯視窗的過程就相當簡單了。只需要首先擷取快顯視窗那個DIV的DOM對象,然後將其屬性設定成“隱藏”即可。
複製代碼 代碼如下:

function hidePopup(){
var popUp = document.getElementById("popupcontent");
popUp.style.visibility = "hidden";
}

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

我們需要做的就是在某個連結或者按鈕的對應事件上添加JS函數“showPopup() ”即可。

比如,需要在滑鼠移動到某串連上時快顯視窗:

<a href="#" onmouseover="showPopup(300,200);" >Open popup</a>

需要在滑鼠點擊某個串連時快顯視窗:

<a href="#" onclick="showPopup(300,200);" >Open popup</a>
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.