Как показать всплывающее сообщение, как в Stack Overflow

102

Я хотел бы добавить всплывающее сообщение, подобное тому, которое появляется в Stack Overflow, когда я не вошел в систему и пытаюсь использовать кнопки голосования.

Как лучше всего этого добиться? Это сделано с помощью библиотеки jquery?

Puneet
источник
16
Посмотреть источник!
Джош Стодола,
Есть аналогичный вопрос. Возможно, вы захотите это проверить.
Shoban,
8
Я сделал это, и мне показалось, что это относится к question.min.js. Я не смог найти этот плагин, поэтому я задал вопрос
Puneet
В Dojo есть панель обновления, которая делает это: trac.dojotoolkit.org/browser/branches/1.6/dojox/widget/… trac.dojotoolkit.org/browser/branches/1.6/dojox/widget/…
mwilcox

Ответы:

154

РЕДАКТИРОВАТЬ : В приведенном ниже коде показано, как воспроизвести полосы, которые отображаются в верхней части экрана, когда вы получаете новый значок, впервые заходите на сайт и т. Д. Для диалоговых окон, которые вы получаете, когда вы пытаетесь комментировать слишком быстро, проголосуйте для вашего собственного вопроса и т. д. ознакомьтесь с этим вопросом, где я покажу, как это сделать, или просто перейдите к примеру .


Вот как это делает Stackoverflow:

Это разметка, изначально скрытая, чтобы мы могли ее добавить:

<div id='message' style="display: none;">
    <span>Hey, This is my Message.</span>
    <a href="#" class="close-notify">X</a>
</div>

Вот применяемые стили:

#message {
    font-family:Arial,Helvetica,sans-serif;
    position:fixed;
    top:0px;
    left:0px;
    width:100%;
    z-index:105;
    text-align:center;
    font-weight:bold;
    font-size:100%;
    color:white;
    padding:10px 0px 10px 0px;
    background-color:#8E1609;
}

#message span {
    text-align: center;
    width: 95%;
    float:left;
}

.close-notify {
    white-space: nowrap;
    float:right;
    margin-right:10px;
    color:#fff;
    text-decoration:none;
    border:2px #fff solid;
    padding-left:3px;
    padding-right:3px
}

.close-notify a {
    color: #fff;
}

А это javascript (с использованием jQuery):

$(document).ready(function() {
    $("#message").fadeIn("slow");
    $("#message a.close-notify").click(function() {
        $("#message").fadeOut("slow");
        return false;
    });
});

И вуаля. В зависимости от настроек вашей страницы вы также можете изменить отображаемую верхнюю границу основного поля.

Вот его демонстрация в действии.

Паоло Бергантино
источник
3
Перечитывая вопрос, я не думаю, что ОП хотела этого. Я думаю, он ищет коробки, которые появляются в виде уведомлений на сайте рядом с тем, что вы делаете. Думаю, я все равно оставлю это.
Паоло Бергантино,
Паоло, спасибо, что оставили это! Я думаю, это может сработать немного лучше, чем то, что я использовал для этого действия.
Jayrox,
3
Хотя это и не ответ, но столь же полезно: P
rball
Вам также необходимо установить файл cookie при нажатии X, чтобы он не появлялся при переходе к другим страницам.
DisgruntledGoat
1
Я бы тоже хотел пометить ответ. Спасибо за отличную запись!
cringe
4

Я использую jqModal , простой в использовании, и вы можете добиться отличных эффектов

цзюань
источник
4

Использование ModalPopup в наборе инструментов управления AJAX - еще один способ получить этот эффект.

patjbs
источник
1
прокомментируйте, пожалуйста, отрицательный голос, использование модального всплывающего окна вполне подходит для того, что задан исходным вопросом.
patjbs
3

Вот что я обнаружил, просмотрев исходный код StackOverflow. Надеюсь сэкономит время для кого-то. Функция showNotification используется для всех этих всплывающих сообщений.

var showNotification=function(jClicked,msg){master.showErrorPopup(jClicked.parent(),msg)};
var showFadingNotification=function(jClicked,msg){master.showErrorPopup(jClicked.parent(),msg,true)};

//master...
showErrorPopup: function (e, h, f) {
    var g = $('<div class="error-notification supernovabg"><h2>' + h + "</h2>" + (f ? "" : "(click on this box to dismiss)") + "</div>");
    var i = function () {
        g.fadeOutAndRemove()
    };
    $(e).append(g);
    g.click(i).fadeIn("fast");
    setTimeout(i, (f ? Math.max(2500, h.length * 40) : 1000 * 30))
}

css

.error-notification{z-index:1;cursor:pointer;display:none;position:absolute;padding:15px;-moz-box-shadow:2px 2px 5px #000;-webkit-box-shadow:2px 2px 5px #000;box-shadow:2px 2px 5px #000;}
.error-notification a{color:inherit;text-decoration:underline;}
.error-notification li{font-size:110%;padding-top:3px;}
.supernovabg{color:#fff !important;background-color:#fe7a15 !important;}

Круто, как они используют длину сообщения для установки таймаута затухания. Я не осознавал, что все сообщения (стиль без затухания) на самом деле исчезают через 30 секунд.

дотджо
источник
0

Проверьте бутстрап . Есть всплывающие эффекты, модальные окна, переходы, предупреждения, все на основе javascriptи css.

Стивен967
источник