我使用了不同的 jQuery 对话框。对于某些对话框,我想要一个透明的背景。如果我更改类background
中的 CSS,.ui-widget-overlay
那么它将应用于所有对话框。
如何为不同的对话框设置不同的背景颜色?
我使用了不同的 jQuery 对话框。对于某些对话框,我想要一个透明的背景。如果我更改类background
中的 CSS,.ui-widget-overlay
那么它将应用于所有对话框。
如何为不同的对话框设置不同的背景颜色?
只需创建如下所示的样式,然后dialogClass
在您希望拥有透明背景的对话框上使用该选项。当然,您可以制作多种样式并传入任何您想要的样式
<style type="text/css" media="screen">
.transparent { background:transparent }
</style>
//make dialog with transparent background
$("#dialog").dialog({dialogClass:'transparent'});
//make default dialog
$("#dialog2").dialog();
查看演示站点: http: //jsbin.com/ifoja(基础jquery、jquery ui、jquery ui css + 自定义css透明类)
所有 jQuery 小部件只有一个叠加层。因此,我们必须根据需要更改它的不透明度:
var overlayOpacityNormal = 0.3, overlayOpacitySpecial = 0;
$('#idOfDlg').dialog({
modal: true,
open: function()
{
overlayOpacityNormal = $('.ui-widget-overlay').css('opacity');
$('.ui-widget-overlay').css('opacity', overlayOpacitySpecial);
},
beforeClose: function()
{
$('.ui-widget-overlay').css('opacity', overlayOpacityNormal);
}
});
也许如果你设置 !important 关键字:
<style type="text/css" media="screen">
.transparent { background:transparent !important; }
</style>
我的解决方案类似于@RonnySherer,但它似乎不适用于带有多个 jQuery UI 对话框的脏旧 IE7。因此,我没有直接设置覆盖元素的不透明度,而是简单地添加/删除了一个 CSS 类,该类在 IE7 和现代浏览器中都可以使用。
CSS类:
div.modalOverlaySolid
{
opacity: 1 !important;
filter: alpha(opacity=100) !important;
}
Javascript:
$(div#divModalDialog).dialog({
modal: true,
open: function () {
$(this).closest(".ui-dialog").next(".ui-widget-overlay").addClass("modalOverlayPrivate");
},
beforeClose: function() {
$(this).closest(".ui-dialog").next(".ui-widget-overlay").removeClass("modalOverlayPrivate");
}
});
在您的对话框调用中,只需为您想要透明的对话框设置 modal:false 。
$( "#dialog-modal" ).dialog({
height: 140,
modal: false
});
我写了下面的代码,但它仍然是类的背景.ui-widget-overlay
$("#dialog_empty").dialog({
dialogClass:'transparent',
resizable: false,
draggable: false,
modal: true,
height: 0,
width: 0,
autoOpen: false,
overlay: {
opacity: 0
}
});
$('#dialog_empty').dialog('open');
$('#dialog_empty').css('display','');