我正在尝试将 jQuery UI 对话框的默认样式更改为与此类似的样式 -
我已经完成了在 jQuery UI 中更改一些 CSS 的操作。
.ui-widget {
font-family: Verdana,Arial,sans-serif;
font-size: .8em;
}
.ui-widget-content {
background: #F9F9F9;
border: 1px solid #90d93f;
color: #222222;
}
.ui-dialog {
left: 0;
outline: 0 none;
padding: 0 !important;
position: absolute;
top: 0;
}
#success {
padding: 0;
margin: 0;
}
.ui-dialog .ui-dialog-content {
background: none repeat scroll 0 0 transparent;
border: 0 none;
overflow: auto;
position: relative;
padding: 0 !important;
}
.ui-widget-header {
background: #b0de78;
border: 0;
color: #fff;
font-weight: normal;
}
.ui-dialog .ui-dialog-titlebar {
padding: 0.1em .5em;
position: relative;
font-size: 1em;
}
HTML:
<div id="popup-msg">
<div id="loading">
<h2>Loading...</h2>
<h3>Please wait a few seconds.</h3>
</div>
<div id="success" title="Hurray,">
<p>User table is updated.</p>
</div>
</div>
但是当我添加这种样式时,它会应用于我的所有对话框。谁能告诉我如何避免这个问题。
谢谢你。
参见https://jsfiddle.net/qP8DY/24/
您可以直接在 HTML 中向 div#success 添加一个类(例如我的示例中的“success-dialog”),也可以通过添加到dialogClass 选项在 JavaScript 中添加,就像我所做的那样。
$('#success').dialog({
height: 50,
width: 350,
modal: true,
resizable: true,
dialogClass: 'no-close success-dialog'
});
然后只需将 success-dialog 类添加到适当的 CSS 规则中即可。 要指示应用了两个(或更多)类的元素,只需将它们全部写在一起,中间没有空格。 例如:
.ui-dialog.success-dialog {
font-family: Verdana,Arial,sans-serif;
font-size: .8em;
}
您可以通过选项
dialogClass
为对话框的顶部元素指定自定义类
$("#success").dialog({
...
dialogClass:"myClass",
...
});
然后你可以通过
.myClass.ui-dialog
在CSS中定位这个类。
该解决方案仅解决了部分问题,它可能允许您设置容器和内容的样式,但不允许您更改标题栏。我开发了一种解决方法,但向对话框 div 添加一个 id,然后使用 jQuery .prev 更改该 div 的样式,该 div 是对话框 div 的前一个同级。这是有效的,因为当 jQueryUI 创建对话框时,您的原始 div 成为新容器的同级,但标题 div 是原始 div 的上一个同级,但容器和标题 div 都没有 id 来简化选择 div .
HTML
<button id="dialog1" class="btn btn-danger">Warning</button>
<div title="Nothing here, really" id="nonmodal1">
Nothing here
</div>
您可以使用 CSS 来设置对话框主要部分的样式,但不能设置标题
.custom-ui-widget-header-warning {
background: #EBCCCC;
font-size: 1em;
}
你需要一些 JS 来设计标题
$(function() {
$("#nonmodal1").dialog({
minWidth: 400,
minHeight: 'auto',
autoOpen: false,
dialogClass: 'custom-ui-widget-header-warning',
position: {
my: 'center',
at: 'left'
}
});
$("#dialog1").click(function() {
if ($("#nonmodal1").dialog("isOpen") === true) {
$("#nonmodal1").dialog("close");
} else {
$("#nonmodal1").dialog("open").prev().css('background','#D9534F');
}
});
});
该示例仅显示简单的样式(背景),但您可以根据需要将其变得复杂。
您可以在这里看到它的实际效果:
jQuery UI 对话框中的dialogClass 选项已被弃用,取而代之的是classes 选项。
以下是如何使用类选项将自定义类添加到对话框中: JavaScript
$( "#dialog" ).dialog({
classes: {
"ui-dialog": "my-dialog-class"
}
});