Як відобразити спливаюче повідомлення, як у переливанні стека


102

Я хотів би додати спливаюче повідомлення на зразок того, яке з’являється у переповнюванні стека, коли я не ввійшов у систему та намагаюся використовувати кнопки голосування.

Який найкращий метод досягти цього? Це робиться за допомогою бібліотеки jquery?


16
Переглянути джерело!
Джош Стодола

Є подібне питання. Ви можете також перевірити це.
Шобан

8
Я це зробив, і, здавалося, посилався на
Question.min.js,

Відповіді:


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, щоб він не відображався, коли ви переходите на більше сторінок.
НезадоволенеЗакриття

1
Я хотів би, щоб і я міг зірочкою відповісти. Дякуємо за цей чудовий запис!
плаття


4

Я використовую jqModal , простий у використанні, і ви можете досягти чудових ефектів


4

Використання ModalPopup в наборі інструментів управління AJAX - це ще один спосіб отримати цей ефект.


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 секунд.


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.