设置JQuery UI模式对话框覆盖背景颜色

Von*_*der 46 jquery jquery-ui

当我加载对话框时,背景变得有点灰色.我想让它变暗,但我找不到一个对此负责的财产.我怎样才能做到这一点?

Nea*_*eal 45

这是在这个css元素:

.ui-widget-overlay {
   background: #AAA url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;
   opacity: .30;
   filter: Alpha(Opacity=30);
}
Run Code Online (Sandbox Code Playgroud)

它位于第294行: jquery-ui-1.8.11.custom.css

  • 我不建议编辑jQuery CSS - 这意味着放入新版本将是一件痛苦的事.我建议在一个CSS文件中提供一个覆盖,你在jQuery之后加载它,为同一个ui-widget-overlay类定义你的自定义样式. (27认同)
  • 不幸的是,jQueryUI CSS添加了视觉样式属性......甚至它的基本CSS也不是*假设*具有任何表示样式.这意味着每当你使用jQueryUI包时,你必须覆盖被jQuery覆盖的每一个属性,这不仅是乏味的,而且是一个移动的目标(如果你曾经升级过jQuery版本,你将必须验证所有的样式再次).这打破了DRY原则(两次声明相同的样式,一次在普通样式表中,再次在覆盖中). (3认同)

Ble*_*der 28

将此CSS添加到样式表:

.ui-widget-overlay
{
  opacity: .50 !important; /* Make sure to change both of these, as IE only sees the second one */
  filter: Alpha(Opacity=50) !important;

  background: rgb(50, 50, 50) !important; /* This will make it darker */
}
Run Code Online (Sandbox Code Playgroud)

  • 我知道,我只是覆盖它(最后请参阅`!important`).我通常不喜欢摆弄1000行CSS文件,所以我经常覆盖一些东西. (6认同)
  • @Blender - 很棒的解决方案.我把它插入我的网站,它有点工作,但有一个浅灰色条纹,横向贯穿整个叠加层.知道为什么会这样吗? (6认同)

Max*_*oom 7

什么对我有用:

//in dialog setting code
open: function(event, ui) {
  $('.ui-widget-overlay').css({ opacity: '.5' });
},
Run Code Online (Sandbox Code Playgroud)

我不建议直接在 CSS 中为对话框设置不透明度,因为它会影响您网站上打开的任何对话框,这可能不是您想要的结果。


nfe*_*ner 6

最简单的方法是使用themeroller.

  • 这是有争议的;) (10认同)

bed*_*mon 6

就像@spinlock一样,我有水平运行的条带:

要删除条带并使用自定义背景颜色,您可以在open事件中执行以下操作:

open : function(event, ui){
    $("body").css({
        overflow: 'hidden'
    });
    $(".ui-widget-overlay").css({
        background:"rgb(0, 0, 0)",
        opacity: ".50 !important",
        filter: "Alpha(Opacity=50)",
    });
},
beforeClose: function(event, ui) {
    $("body").css({ overflow: 'inherit' })
}
Run Code Online (Sandbox Code Playgroud)


Dav*_*son 5

我在 Blender 的解决方案中遇到了自旋锁的问题,但是将“背景颜色”更改为“背景”解决了这个问题。我怀疑原因是原始(jQuery-UI)CSS 使用该 PNG 图形。