2012-02-13 18 views
25

मैं jquery ui का उपयोग करके एक मोडल डायलॉग पॉप करना चाहता हूं जहां ओवरले पूरी तरह से काला है। मुझे पता है कि मैं इसे थीम में सेट कर सकता हूं, लेकिन मैं नहीं चाहता कि सभी संवादों में ब्लैक ओवरले हो। उनमें से सिर्फ एक।jQuery: मोडल डायलॉग ओवरले रंग सेट करें

क्या प्रति-संवाद आधार पर एक संवाद की पृष्ठभूमि (ओवरले) रंग को कॉन्फ़िगर करने का कोई तरीका है? शायद जब यह बनाया गया है?

$("#yourDialog").dialog("widget") 
       .next(".ui-widget-overlay") 
       .css("background", "#f00ba2"); 

:

TIA

+0

संभव डुप्लिकेट (http://stackoverflow.com/questions/5583995/darker-background-in-jquery-ui-dialog) –

उत्तर

3

फ्रेडेरिक का जवाब बहुत करीब था, लेकिन यह मुझे एक समस्या के साथ छोड़ दिया: मैं उस पृष्ठ पर एक से अधिक संवाद था, और बाद मैं एक संवाद के लिए ओवरले बदल गया है, यह जब तक पेज को पुनः लोड नहीं किया गया तब तक उन सभी को बदल दिया। हालांकि, यह मुझे एक विचार दिया था;

सबसे पहले मैंने डिफ़ॉल्ट मानों को चर (पृष्ठ स्कोप) में संग्रहीत किया, और फिर मेरी कस्टम शैली सेट की।

var overlay = $(".ui-widget-overlay"); 
baseBackground = overlay.css("background"); 
baseOpacity = overlay.css("opacity"); 
overlay.css("background", "#000").css("opacity", "1"); 

फिर जब संवाद बंद हो जाता है, तो मैंने उन मानों को पुनर्स्थापित किया।

$(".ui-widget-overlay").css("background", baseBackground).css("opacity", baseOpacity); 

उन्हें चर में संग्रहीत (के रूप में उन्हें स्पष्ट मान को रीसेट करने के खिलाफ) के लिए मुख्य कारण रख-रखाव के लिए है। इस तरह, भले ही साइट.css बदल जाए, यह काम करेगा।

आपकी मदद के लिए धन्यवाद!

+0

तो ओवरले तत्व सभी संवाद विगेट्स के लिए पुन: उपयोग किया जाता है ... अच्छी पकड़ :) –

+0

यह वही मैकेनिक एक सीएसएस क्लास को जोड़कर और हटाकर पूरा किया जा सकता है जो इन मानों को सेट करता है (जो कि मैंने आखिरकार कार्यान्वित किया है)। – mtmurdock

11

ओवरले तत्व संवाद विजेट इसके बारे में तुरंत भाई ताकि आप इसे से मेल खाते हैं और एक प्रति-संवाद के आधार पर पृष्ठभूमि रंग संशोधित कर सकते हैं और ui-widget-overlay वर्ग को उजागर करता है, आप परिणाम this fiddle में देख सकते हैं।

+0

हममम इस जब मैं करता हूँ मेरे मूल संवाद –

+0

के मुकाबले पृष्ठ की ऊंचाई को विस्तारित करने वाले पेज के निचले हिस्से में मेरा ओवरले दिखाई देता है असल में यह मेरे साथ सीएसएस के माध्यम से ऐसा करने के साथ भी हो रहा है, इसलिए उपरोक्त जावास्क्रिप्ट में कुछ भी गलत नहीं है। –

8

JQuery संवाद की पृष्ठभूमि एक div है जिसमें वर्ग "ui-widget-overlay" है। जिन कुंजी शैलियों को आप समायोजित करना चाहते हैं वह "अस्पष्टता", "फ़िल्टर" और "पृष्ठभूमि-रंग" ("अस्पष्टता" और "फ़िल्टर" विभिन्न ब्राउज़रों के लिए अस्पष्टता सेट करने के दो अलग-अलग तरीके हैं।) आप या तो कक्षा परिभाषा को समायोजित कर सकते हैं या संवाद परिभाषा निम्न कार्य करें:

$("div#MyDialog").dialog({ 
    title: "My Dialog Title", 
    open: function (event, ui) { 
     $(".ui-widget-overlay").css({ 
      opacity: 1.0, 
      filter: "Alpha(Opacity=100)", 
      backgroundColor: "black" 
     }); 
    }, 
    modal: true 
}); 
+0

जेक्यू यूआई अपने ओवरले के लिए एक छवि का उपयोग कैसे करता है? –

3

पृष्ठभूमि बदलें:

$(".ui-widget-overlay").css({background: "#000", opacity: 0.9}); 

सीएसएस मूल्यों के लिए पृष्ठभूमि पुनर्स्थापित करें:

$(".ui-widget-overlay").css({background: '', opacity: ''}); 
+0

सरल समाधान। धन्यवाद! –

39

आप खुला और पास ui-संवाद की घटनाओं का उपयोग कर सकते हैं।

$("#your-dialog").dialog(
{ 
    autoOpen: false, 
    modal: true, 
    open: function() { 
     $('.ui-widget-overlay').addClass('custom-overlay'); 
    }   
}); 

और सीएसएस में आवश्यक स्टाइल जोड़ें। उदाहरण:

.ui-widget-overlay.custom-overlay 
{ 
    background-color: black; 
    background-image: none; 
    opacity: 0.9; 
    z-index: 1040;  
} 
[jQuery के यूआई संवाद में गहरा पृष्ठभूमि] की
+2

इसके साथ एकमात्र समस्या "जेड-इंडेक्स: 1040" संवाद के शीर्ष पर ओवरले रखती है। जेड इंडेक्स निकालें और यह ठीक काम करता है। – Mark

+1

@ मार्क, हटाएं .... इसे 1001 बनाएं। – Jaikrat

संबंधित मुद्दे