スタックオーバーフローのようにポップアップメッセージを表示する方法


102

ログインしていないときに投票ボタンを使用しようとすると、Stack Overflowに表示されるようなポップアップメッセージを追加したいと思います。

それを達成するための最良の方法は何ですか?jqueryライブラリを使用して行われますか?


16
ソースを見る!
Josh Stodola、

同様の質問があります。あなたもそれをチェックしたいかもしれません。
ショーバン、

8
私はそれをしました、そしてそれはquestion.min.jsを参照しているようですそのプラグインを見つけることができなかったので私は質問しました
Puneet

回答:


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 2009年

3
答えではありませんが、同様に役に立ちます:P
rball 2009年

また、XをクリックしたときにCookieを設定して、他のページに移動しても表示されないようにする必要があります。
DisgruntledGoat 09/07/12

1
私も回答にスターを付けたいと思います。この素晴らしいエントリーをありがとう!
うんざり



4

AJAXコントロールツールキットでModalPopupを使用すると、この効果を得ることができます。


1
投票にコメントを付けてください。モーダルポップアップの使用は、元の質問の質問に対して完全に有効です。
patjbs 2009年

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秒後にフェードアウトすることに気づきませんでした。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.