Показать div как модальное всплывающее окно - PullRequest
13 голосов
/ 07 июня 2011

У меня есть следующий div:

<div id="divAlert">
    <div id='divAlertText'>You must select a language.</div>
    <div id='divAlertButton' class='btn blue' onclick="HideAlert();">Ok</div>
</div>

Есть ли на этой HTML-странице больше div-ов и кнопок.Я хочу показать divAlert как модальное всплывающее окно.

Я знаю, что в jQuery есть что-то, что я могу использовать, чтобы показать мой div с полупрозрачным черным фоном, заполняющим всю страницу.Но я не могу вспомнить его имя.

Любой совет?

Ответы [ 2 ]

46 голосов
/ 03 октября 2012

Простое модальное всплывающее окно div или диалоговое окно можно сделать с помощью свойств CSS и небольшого количества jQuery. Основная идея проста:

1. Создайте div с полупрозрачным фоном и покажите его в верхней части страницы с контентом. 2. Покажите всплывающий элемент div или оповещения в верхней части полупрозрачного элемента затемнения / скрытия.

Итак, нам нужно три элемента:

контент (основной контент сайта). hider (для затемнения содержимого). popup_box (модальный div для отображения).

Сначала давайте определим CSS:

    #hider
    {
        position:absolute;
        top: 0%;
        left: 0%;
        width:1600px;
        height:2000px;
        margin-top: -800px; /*set to a negative number 1/2 of your height*/
        margin-left: -500px; /*set to a negative number 1/2 of your width*/
        /*
        z- index must be lower than pop up box
       */
        z-index: 99;
       background-color:Black;
       //for transparency
       opacity:0.6;
    }

    #popup_box  
    {

    position:absolute;
        top: 50%;
        left: 50%;
        width:10em;
        height:10em;
        margin-top: -5em; /*set to a negative number 1/2 of your height*/
        margin-left: -5em; /*set to a negative number 1/2 of your width*/
        border: 1px solid #ccc;
        border:  2px solid black;
        z-index:100; 

    }

Важно, чтобы мы установили z-индекс нашего hider div ниже, чем поле pop_up, так как мы хотим показать popup_box сверху.
Вот сценарий Java:

        $(document).ready(function () {
        //hide hider and popup_box
        $("#hider").hide();
        $("#popup_box").hide();

        //on click show the hider div and the message
        $("#showpopup").click(function () {
            $("#hider").fadeIn("slow");
            $('#popup_box').fadeIn("slow");
        });
        //on click hide the message and the
        $("#buttonClose").click(function () {

            $("#hider").fadeOut("slow");
            $('#popup_box').fadeOut("slow");
        });

        });

И, наконец, HTML:

<div id="hider"></div>
<div id="popup_box">
    Message<br />
    <a id="buttonClose">Close</a>
</div>    
<div id="content">
    Page's main content.<br />
    <a id="showpopup">ClickMe</a>
</div>

Я использовал jquery-1.4.1.min.js www.jquery.com/download и протестировал код в Firefox. Надеюсь, это поможет.

13 голосов
/ 07 июня 2011

Вы можете использовать виджет диалога jquery

http://jqueryui.com/demos/dialog/

...