如何像堆栈溢出一样显示弹出消息


102

我想添加一个弹出消息,如未登录且尝试使用投票按钮时出现在Stack Overflow上的消息。

实现此目标的最佳方法是什么?使用jQuery库完成吗?


16
查看源代码!
乔什·斯托多拉

类似的问题。您可能还需要检查一下。
Shoban

8
我做到了,它似乎是指问题
.min.js

Answers:


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
重新阅读这个问题,我认为这不是Op想要的。我认为他正在寻找在您所做的任何事情附近都显示为网站周围的通知的框。我想无论如何我都会把它保留下来。
Paolo Bergantino,

保罗,谢谢你留下来!我认为这可能比我在此操作中使用的要好得多。
Jayrox

3
虽然不是答案,但同样有用:P
rball 2009年

当您单击X时,还需要设置一个cookie,这样当您进入更多页面时它就不会一直显示。
DisgruntledGoat

1
我也希望我也能给出答案。感谢您的优秀参赛作品!
畏缩


4

我使用jqModal,易于使用,可以实现一些出色的效果


4

使用AJAX控件工具包中的ModalPopup是获得此效果的另一种方法。


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秒后消失。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.