自定义样式到jquery ui对话框

时间:2013-06-30 03:26:40

标签: css jquery-ui

我正在尝试将jquery ui对话框的默认样式更改为类似于此的内容 -

enter image description here

我让它关闭更改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>

THIS IS FIDDLE

但是当我添加这个样式时,它适用于我的所有对话框。任何人都可以告诉我如何避免这个问题。

谢谢。

3 个答案:

答案 0 :(得分:60)

请参阅http://jsfiddle.net/qP8DY/24/

您可以通过添加到dialogClass选项,直接在HTML中或在JavaScript中添加一个类(例如&#34;成功对话框&#34;在我的示例中)成为div#success,因为我&# 39;已完成。

$('#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;
}

答案 1 :(得分:17)

您可以通过选项dialogClass

为对话框的顶部元素指定自定义类
$("#success").dialog({
    ...
    dialogClass:"myClass",
    ...
});

然后,您可以通过.myClass.ui-dialog在CSS中定位此类。

答案 2 :(得分:4)

该解决方案仅解决部分问题,它可以让您设置容器和内容的样式,但不允许您更改标题栏。我开发了一种解决方法,但是在对话框div中添加了一个id,然后使用jQuery .prev来改变div的样式,这就是对话框div的前一个兄弟。这是有效的,因为当jQueryUI创建对话框时,你的原始div成为新容器的兄弟,但是标题div是你原来div的前一个兄弟,但是容器而不是title 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');

                     }
                   });
    });

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

你可以在这里看到它:

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