วิธีแสดงข้อความป๊อปอัปเช่นใน 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;
}

และนี่คือ javascript (โดยใช้ jQuery):

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

และ voila ขึ้นอยู่กับการตั้งค่าเพจของคุณคุณอาจต้องการแก้ไขขอบด้านบนของเนื้อหาบนหน้าจอ

นี่คือตัวอย่างของการใช้งานจริง


3
อ่านคำถามซ้ำฉันไม่คิดว่านี่คือสิ่งที่ Op ต้องการ ฉันคิดว่าเขากำลังมองหากล่องที่ปรากฏเป็นประกาศรอบ ๆ ไซต์ใกล้ ๆ กับสิ่งที่คุณทำ ฉันเดาว่าฉันจะปล่อยมันไปเรื่อย ๆ
เปาโลเบอร์แกนติโน

Paolo ขอบคุณที่ทิ้งสิ่งนี้ไว้! ฉันคิดว่าสิ่งนี้อาจได้ผลดีกว่าที่ฉันใช้สำหรับการกระทำนี้เล็กน้อย
Jayrox

3
แม้ว่าจะไม่ใช่คำตอบ แต่ก็มีประโยชน์อย่างเท่าเทียมกัน: P
rball

คุณต้องตั้งค่าคุกกี้เมื่อคุณคลิก X เพื่อไม่ให้ปรากฏต่อไปเมื่อคุณไปที่หน้าอื่น ๆ
แพะไม่พอใจ

1
ฉันหวังว่าฉันจะให้คำตอบด้วย ขอบคุณสำหรับรายการที่ยอดเยี่ยมนี้!
ประจบประแจง



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 วินาทีแล้ว


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.