35

我正在尝试将 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>

这是小提琴

但是当我添加这种样式时,它适用于我所有的对话框。谁能告诉我如何避免这个问题。

谢谢你。

4

3 回答 3

68

https://jsfiddle.net/qP8DY/24/

您可以直接在 HTML 中或在 JavaScript 中添加一个类(例如我的示例中的“success-dialog”)到 div#success,方法是添加到 dialogClass 选项,就像我所做的那样。

$('#success').dialog({
    height: 50,
    width: 350,
    modal: true,
    resizable: true,
    dialogClass: 'no-close success-dialog'
});

然后只需根据需要将成功对话框类添加到您的 CSS 规则中。要表示应用了两个(或更多)类的元素,只需将它们全部写在一起,中间没有空格。例如:

.ui-dialog.success-dialog {
    font-family: Verdana,Arial,sans-serif;
    font-size: .8em;
}
于 2013-06-30T04:00:02.077 回答
17

您可以通过选项为对话框的顶部元素指定自定义类dialogClass

$("#success").dialog({
    ...
    dialogClass:"myClass",
    ...
});

然后你可以通过.myClass.ui-dialog.

于 2013-06-30T04:00:09.577 回答
5

该解决方案只解决了部分问题,它可以让您设置容器和内容的样式,但不能让您更改标题栏。我开发了一种解决方法,但将 id 添加到对话框 div,然后使用 jQuery .prev 更改 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');
                     
                     }
                   });
    });

该示例仅显示简单的样式(背景),但您可以根据需要使其复杂。

你可以在这里看到它的实际效果:

https://codepen.io/chris-hore/pen/OVMPay

于 2015-05-12T03:53:28.393 回答