Stack Overflow에서와 같이 팝업 메시지를 표시하는 방법


102

로그인하지 않고 투표 버튼을 사용하려고 할 때 Stack Overflow에 나타나는 것과 같은 팝업 메시지를 추가하고 싶습니다.

그것을 달성하는 가장 좋은 방법은 무엇입니까? jquery 라이브러리를 사용하여 수행됩니까?


16
소스보기!
Josh Stodola

비슷한 질문. 그것도 확인하고 싶을 것입니다.
Shoban

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;
}

그리고 이것은 자바 스크립트 (jQuery 사용)입니다.

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

그리고 짜잔. 페이지 설정에 따라 디스플레이의 본문 여백 상단을 편집 할 수도 있습니다.

여기에 실제 데모가 있습니다.


3
질문을 다시 읽으면 이것이 Op가 원했던 것이라고 생각하지 않습니다. 나는 그가 당신이 무엇을하든 사이트 주변에 알림으로 나타나는 상자를 찾고 있다고 생각합니다. 어차피 남겨 둘 게요.
Paolo Bergantino

Paolo, 남겨 주셔서 감사합니다! 이 작업에 사용했던 것보다 이것이 훨씬 더 잘 작동 할 것이라고 생각합니다.
Jayrox

3
대답은 아니지만 똑같이 도움이됩니다. : P
rball

또한 X를 클릭 할 때 더 많은 페이지로 이동할 때 쿠키가 계속 나타나지 않도록 쿠키를 설정해야합니다.
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 초 후에 모든 메시지가 실제로 사라진다는 것을 몰랐습니다.


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.