फेसबुक शैली "लाल" सूचनाओं के लिए सबसे आसान सीएसएस


87

मुझे एक फेसबुक स्टाइल नोटिफिकेशन की जरूरत है, लेकिन कुछ ऐसा हो रहा है जो देखने में अच्छा लगता है। उदाहरण के लिए, अलग-अलग ब्राउज़र पैडिंग्स को अलग-अलग तरीके से मानते हैं, जिसके परिणामस्वरूप अजीब दिखने वाले नोटिफिकेशन मिलते हैं।

सूचनाओं को अच्छी तरह से दिखाने के लिए सबसे अच्छा क्रॉस-ब्राउज़र तरीका क्या है? जावास्क्रिप्ट का उपयोग करने के लिए प्रतिकूल नहीं है, लेकिन शुद्ध सीएसएस निश्चित रूप से बेहतर है

यहाँ छवि विवरण दर्ज करें


7
Facebook CSS3 का उपयोग करता है - यदि उपयोगकर्ता के पास एक ब्राउज़र नहीं है जो इसका समर्थन करता है, तो अन्य नियम हैं ताकि यह नीचा हो। उदाहरण के लिए, IE उपयोगकर्ताओं को गोल कोने नहीं मिलेंगे।
क्रिस बेकर

वास्तव में? यह बहुत अच्छी जानकारी है।
मिंग यूओव

जवाबों:


172

इसे प्राप्त करने का सबसे अच्छा तरीका पूर्ण स्थिति का उपयोग करके है :

/* Create the blue navigation bar */
.navbar {
  background-color: #3b5998;
  font-size: 22px;
  padding: 5px 10px;
}

/* Define what each icon button should look like */
.button {
  color: white;
  display: inline-block; /* Inline elements with width and height. TL;DR they make the icon buttons stack from left-to-right instead of top-to-bottom */
  position: relative; /* All 'absolute'ly positioned elements are relative to this one */
  padding: 2px 5px; /* Add some padding so it looks nice */
}

/* Make the badge float in the top right corner of the button */
.button__badge {
  background-color: #fa3e3e;
  border-radius: 2px;
  color: white;
 
  padding: 1px 3px;
  font-size: 10px;
  
  position: absolute; /* Position the badge within the relatively positioned button */
  top: 0;
  right: 0;
}
<!-- Font Awesome is a great free icon font. -->
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet"/>

<div class="navbar">
  <div class="button">
    <i class="fa fa-globe"></i>
    <span class="button__badge">2</span>
  </div>
  <div class="button">
    <i class="fa fa-comments"></i>
    <span class="button__badge">4</span>
  </div>
</div>


1
इसे बदलने के लिए <div id = "notif_Container"> से <div id = "noti_Container"> को काम पर
लाएँ

3
यानी 7, 8 और 9 समर्थन के लिए अंगूठे। IE6 थोड़े रूप में अच्छी तरह से काम करता है, लेकिन मैं अब और नहीं परवाह नहीं है :)
बेंजामिन Crouzier

1
यह बहुत बढ़िया है, मुझे इसे काम करने के लिए Jquery टैब के <li> अनुभाग में रखना था, लेकिन यह बहुत अच्छा काम करता है।
पसीने से तर

यह काम करता है यहां तक ​​कि मैं एक पृष्ठ में कई बार कंटेनर की आईडी को बदलकर उपयोग करता हूं।
Web_Developer

34

यहां वह है जिसमें गिनती बदलने पर एनीमेशन शामिल है।

http://jsfiddle.net/rahilsondhi/FdmHf/4/

<ul>
<li class="notification-container">
    <i class="icon-globe"></i>
    <span class="notification-counter">1</span>
</li>

    .notification-container {
    position: relative;
    width: 16px;
    height: 16px;
    top: 15px;
    left: 15px;

    i {
        color: #fff;
    }
}

.notification-counter {   
    position: absolute;
    top: -2px;
    left: 12px;

    background-color: rgba(212, 19, 13, 1);
    color: #fff;
    border-radius: 3px;
    padding: 1px 3px;
    font: 8px Verdana;
}




$counter
.css({opacity: 0})
.text(val)
.css({top: '-10px'})
.transition({top: '-2px', opacity: 1})

JQuery के साथ एनीमेशन:

$('button').click(function()
{
    var $counter = $('.notification-counter')
    var val = parseInt $counter.text();
    val++;
    $counter.css({opacity: 0}).text(val).css({top:'-10px'}).animate({top: '-1px', opacity: 1}, 500);
});

यह ग्लोब आइकन के लिए फ़ॉन्ट और एनीमेशन के लिए jQuery ट्रांज़िट का उपयोग करता है।


2
@AmbiguousTk यह एक संक्रमण प्लगइन jquery.transit.min.js या इसके बजाय आप उपयोग कर सकते हैं: code$ counter.css ({अस्पष्टता: 0}) .text (घाटी) .css ({शीर्ष: '-10px'}) द्वारा सेवा की। चेतन ({शीर्ष: '-1px', अपारदर्शिता: 1}, 500); code
Marcel Djaman

आपका बहुत बहुत धन्यवाद! मेरा समय बचाता है।
एड्रियन पी।

4

शायद absolute स्थिति:

<div id="globe" style="height: 30px; width: 30px; position: relative;">
 <img src="/globe.gif" />
 <div id="notification" style="position: absolute; top: 0; right;0;">1</div>
</div>

ऐसा कुछ। जाहिर है आप बारीकियों को बदलना चाहेंगे और शायद बैकग्राउंड इमेज का इस्तेमाल करेंगे। बिंदु पूर्ण स्थिति पर जोर देना है जो यह वास्तव में ब्राउज़रों के अनुरूप है, कम से कम मेरे अनुभवों में।


1

मार्कअप:

<div id="ContainerDiv">
    <div id="MainImageDiv"> //Add the image here or whatever you want </div>
    <div id="NotificationDiv"> </div>
</div>

सीएसएस:

#NotificationDiv {
    position: absolute;
    left: -10 //use negative values to push it above the #MainImageDiv
    top: -4 
    ...
}

0

मुझे यकीन है कि पूर्ण स्थिति के बारे में उत्तर सही हैं। प्रयोग के लिए, मैंने एक एसवीजी-केवल समाधान बनाने की कोशिश की। परिणाम आदर्श से बहुत दूर है, शायद किसी को एक समान एसवीजी पहेली का अधिक सुरुचिपूर्ण समाधान पता है? :)

http://jsfiddle.net/gLdsco5p/3/

<svg width="64" height="64" viewBox="0 0 91 91">
    <rect id="Artboard1" x="0" y="0" width="90.326" height="90.326" style="fill:none;"/>
    <g id="Artboard11" serif:id="Artboard1">
        <g id="user-circle-o" transform="matrix(2.69327,0,0,2.69327,7.45723,7.45723)">
            <path d="M14,0C21.734,0 28,6.266 28,14C28,21.688 21.766,28 14,28C6.25,28 0,21.703 0,14C0,6.266 6.266,0 14,0ZM23.672,21.109C25.125,19.109 26,16.656 26,14C26,7.391 20.609,2 14,2C7.391,2 2,7.391 2,14C2,16.656 2.875,19.109 4.328,21.109C4.89,18.312 6.25,16 9.109,16C10.375,17.234 12.093,18 14,18C15.907,18 17.625,17.234 18.891,16C21.75,16 23.11,18.312 23.672,21.109ZM20,11C20,7.687 17.312,5 14,5C10.688,5 8,7.688 8,11C8,14.312 10.688,17 14,17C17.312,17 20,14.312 20,11Z" style="fill:rgb(190,190,190);fill-rule:nonzero;"/>
        </g>
        <g transform="matrix(1,0,0,1,1.36156,0)">
            <circle cx="63.708" cy="18.994" r="9.549" style="fill:rgb(255,0,0);"/>
        </g>
        <g transform="matrix(1.66713,0,0,1.66713,-51.5278,-2.33264)">
            <text  id="counter" x="68.034px" y="15.637px" style="font-family:'ArialMT', 'Arial', sans-serif;font-size:7.915px;fill:white;">1</text>
        </g>
    </g>
</svg>
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.