2009-11-12 21 views

उत्तर

188

ओवरले, बस डाल दिया जाता है, एक div कि स्क्रीन (कोई फर्क नहीं पड़ता अगर आप स्क्रॉल) पर तय रहता है और अस्पष्टता के कुछ प्रकार है।

यह 0.5 के पार ब्राउज़र अस्पष्टता के लिए अपने सीएसएस होगा:

#overlay { 
    position: fixed; 
    top: 0; 
    left: 0; 
    width: 100%; 
    height: 100%; 
    background-color: #000; 
    filter:alpha(opacity=50); 
    -moz-opacity:0.5; 
    -khtml-opacity: 0.5; 
    opacity: 0.5; 
    z-index: 10000; 
} 

यह आपके jQuery कोड (कोई यूआई आवश्यक) हो जाएगा। आप आईडी #overlay के साथ एक नया तत्व बनाने जा रहे हैं। डीआईवी बनाना और नष्ट करना आपको चाहिए।

var overlay = jQuery('<div id="overlay"> </div>'); 
overlay.appendTo(document.body) 
प्रदर्शन के कारणों के आप चाहते DIV छिपे रहते हैं और ब्लॉक करने के लिए प्रदर्शन और कोई भी की स्थापना के रूप में आप यह नहीं की जरूरत है या हो सकता है के लिए

उम्मीद है कि यह मदद करता है!

संपादित करें: @Vitaly के रूप में इसे अच्छी तरह से रखें, अपने डॉक्टर टाइप को जांचना सुनिश्चित करें। अपने निष्कर्षों पर टिप्पणी पर और अधिक पढ़ें ..

+0

यह IE8 में काम नहीं करता है। "ओवरले" सामग्री के नीचे दिखाया गया है। इसे ठीक करने का कोई तरीका? – Vitaly

+0

@Vitaly क्या आप पृष्ठ के शीर्ष पर ओवरले DIV डाल रहे हैं? 'स्थिति के साथ: तय; शीर्ष: 0; बाएं: 0' अगर ऐसा है तो मुझे बताएं और मैं कार्यालय में आने पर इसे एक नज़र दूंगा। – Frankie

+0

हां, बस आप की तरह। "पूर्ण" स्थिति को सेट करने से यह काम करता है, लेकिन यह दस्तावेज़ के दाएं किनारे को कवर नहीं करता है और शेष सामग्री के साथ स्क्रॉल करता है। – Vitaly

1

यदि आप पहले से ही jquery का उपयोग कर रहे हैं, तो मुझे नहीं लगता कि आप हल्के ओवरले प्लगइन का उपयोग क्यों नहीं कर पाएंगे। अन्य लोगों ने पहले से ही jquery में कुछ अच्छे लिखा है, तो पहिया का फिर से आविष्कार क्यों करें?

+1

जो हल्के ओवरले प्लगइन है देख लिया? – aoghq

+14

क्यों घंटियाँ और सीटी के साथ एक पहिया उधार जब आप कोड की 3 लाइनों में एक पूरी तरह से स्वीकार्य पहिया बना सकते हैं? प्लगइन्स हमेशा सबसे अच्छा समाधान नहीं होते हैं। – Joel

+5

3 कोड की पंक्तियों IE के कुछ संस्करण में एफएफ में अच्छी तरह से काम कर सकते हैं, लेकिन फिर हो सकता है quirks। कम से कम एक ज्ञात उपकरण के साथ, अधिकांश कंक पहले से ही काम कर चुके हैं। –

0

ओवरले द्वारा क्या आप उस सामग्री का मतलब करते हैं जो शेष पृष्ठ को ओवरलैप/कवर करता है? एचटीएमएल में, आप इसे एक div का उपयोग करके कर सकते हैं जो पूर्ण या निश्चित स्थिति का उपयोग करता है। यदि इसे गतिशील रूप से उत्पन्न करने की आवश्यकता होती है, तो jQuery बस स्थिति शैली सेट के साथ एक div उत्पन्न कर सकता है।

0

ओवरले के साथ आप क्या करना चाहते हैं? यदि यह स्थिर है, तो कहें, कुछ सामग्री ओवरलैप करने वाला एक साधारण बॉक्स, बस सीएसएस के साथ पूर्ण स्थिति का उपयोग करें। यदि यह गतिशील है (मुझे विश्वास है कि इसे लाइटबॉक्स कहा जाता है), तो आप ऑन-डिमांड पर ओवरले को दिखाने/छिपाने के लिए कुछ सीएसएस-संशोधित jQuery कोड लिख सकते हैं।

3

यहाँ एक पूरी तरह से समझाया संस्करण है जो (एक साझा करें बटन सहित) एक ओवरले जोड़ देता है किसी भी आईएमजी तत्व को जहां डाटा-फोटो-ओवरले = 'सच है।

JSFiddle http://jsfiddle.net/wloescher/7y6UX/19/

एचटीएमएल

<img id="my-photo-id" src="http://cdn.sstatic.net/stackexchange/img/logos/so/so-logo.png" alt="Photo" data-photo-overlay="true" /> 

सीएसएस

#photoOverlay { 
    background: #ccc; 
    background: rgba(0, 0, 0, .5); 
    display: none; 
    height: 50px; 
    left: 0; 
    position: absolute; 
    text-align: center; 
    top: 0; 
    width: 50px; 
    z-index: 1000; 
} 

#photoOverlayShare { 
    background: #fff; 
    border: solid 3px #ccc; 
    color: #ff6a00; 
    cursor: pointer; 
    display: inline-block; 
    font-size: 14px; 
    margin-left: auto; 
    margin: 15px; 
    padding: 5px; 
    position: absolute; 
    left: calc(100% - 100px); 
    text-transform: uppercase; 
    width: 50px; 
} 

जावास्क्रिप्ट

(function() { 
    // Add photo overlay hover behavior to selected images 
    $("img[data-photo-overlay='true']").mouseenter(showPhotoOverlay); 

    // Create photo overlay elements 
    var _isPhotoOverlayDisplayed = false; 
    var _photoId; 
    var _photoOverlay = $("<div id='photoOverlay'></div>"); 
    var _photoOverlayShareButton = $("<div id='photoOverlayShare'>Share</div>"); 

    // Add photo overlay events 
    _photoOverlay.mouseleave(hidePhotoOverlay); 
    _photoOverlayShareButton.click(sharePhoto); 

    // Add photo overlay elements to document 
    _photoOverlay.append(_photoOverlayShareButton); 
    _photoOverlay.appendTo(document.body); 

    // Show photo overlay 
    function showPhotoOverlay(e) { 
     // Get sender 
     var sender = $(e.target || e.srcElement); 

     // Check to see if overlay is already displayed 
     if (!_isPhotoOverlayDisplayed) { 
      // Set overlay properties based on sender 
      _photoOverlay.width(sender.width()); 
      _photoOverlay.height(sender.height()); 

      // Position overlay on top of photo 
      if (sender[0].x) { 
       _photoOverlay.css("left", sender[0].x + "px"); 
       _photoOverlay.css("top", sender[0].y) + "px"; 
      } 
      else { 
       // Handle IE incompatibility 
       _photoOverlay.css("left", sender.offset().left); 
       _photoOverlay.css("top", sender.offset().top); 
      } 

      // Get photo Id 
      _photoId = sender.attr("id"); 

      // Show overlay 
      _photoOverlay.animate({ opacity: "toggle" }); 
      _isPhotoOverlayDisplayed = true; 
     } 
    } 

    // Hide photo overlay 
    function hidePhotoOverlay(e) { 
     if (_isPhotoOverlayDisplayed) { 
      _photoOverlay.animate({ opacity: "toggle" }); 
      _isPhotoOverlayDisplayed = false; 
     } 
    } 

    // Share photo 
    function sharePhoto() { 
     alert("TODO: Share photo. [PhotoId = " + _photoId + "]"); 
     } 
    } 
)(); 
15

यहाँ एक सरल जावास्क्रिप्ट एकमात्र समाधान है

function displayOverlay(text) { 
    $("<table id='overlay'><tbody><tr><td>" + text + "</td></tr></tbody></table>").css({ 
     "position": "fixed", 
     "top": 0, 
     "left": 0, 
     "width": "100%", 
     "height": "100%", 
     "background-color": "rgba(0,0,0,.5)", 
     "z-index": 10000, 
     "vertical-align": "middle", 
     "text-align": "center", 
     "color": "#fff", 
     "font-size": "30px", 
     "font-weight": "bold", 
     "cursor": "wait" 
    }).appendTo("body"); 
} 

function removeOverlay() { 
    $("#overlay").remove(); 
} 

डेमो:

http://jsfiddle.net/UziTech/9g0pko97/

सार:

https://gist.github.com/UziTech/7edcaef02afa9734e8f2

+2

कॉपी और पेस्ट करें और यह काम करता है। इसे प्यार करो, thx! – Chris

+2

ए '

'? क्या यह 1 99 0 है? – MECU

0

इस के साथ इस jQuery प्लगइन की जांच करें,

blockUI

आप सभी पेज या तत्वों उपरिशायी कर सकते हैं, मेरे लिए अच्छा काम करता है,

उदाहरण: ब्लॉक एक div: $('div.test').block({ message: null });

ब्लॉक पृष्ठ: $.blockUI({ message: '<h1><img src="busy.gif" /> Just a moment...</h1>' }); आशा है कि किसी को

अभिवादन

सबसे आसान विकल्प के लिए
संबंधित मुद्दे