【问题标题】:Jquery Ui dialog button changes position on mouse hoverJquery Ui对话框按钮在鼠标悬停时更改位置
【发布时间】:2013-05-03 15:17:33
【问题描述】:

我正在使用 jquery ui 对话框并使用 jquery 添加按钮,如下所示:

 $("#151").dialog({
                autoOpen: false,
                autoResize: true,
                buttons: {
                    "OK": function () {
                        jQuery(this).dialog('close');
                    }
                }
                ,
                open: function () {
                    $('.ui-dialog-buttonset').find('button:contains("OK")').focus();
                    $('.ui-dialog-buttonset').find('button:contains("OK")').addClass('customokbutton');
                }
            });

自定义按钮类如下所示:

.customokbutton { 
    text-indent: -9999em; /* hides the text */
    color: transparent; /* also hides text */
    background-image: url(images/login-icon.png); /*replaces default image */
     background-repeat: no-repeat; 
    background-color: transparent;  
    background-repeat: no-repeat;   
    cursor: pointer;  
    border:none;
    height:30px;
    outline: none;
}

但是当我将鼠标放在按钮上时,它会向下和向右移动一点。我看到使用 Firebug 时,当我将鼠标移开时会添加以下 css 类(更改位置)

<button type="button" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only customokbutton" role="button" aria-disabled="false"><span class="ui-button-text">OK</span></button>

当我将鼠标悬停在按钮上时:

<button type="button" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only customokbutton ui-state-hover" role="button" aria-disabled="false"><span class="ui-button-text">OK</span></button>

而css是这样的:

.ui-state-hover,
.ui-widget-content .ui-state-hover,
.ui-widget-header .ui-state-hover,
.ui-state-focus,
.ui-widget-content .ui-state-focus,
.ui-widget-header .ui-state-focus {
    border: 1px solid #707070;
/*  background: #dadada;*/
    font-weight: normal;
    color: #212121;
}

我该如何解决?

【问题讨论】:

  • 给我们一个使用 jsfiddle 之类的代码的工作示例
  • 而在jquery ui css中ui-state-hover类是如何定义的?
  • @Tallmaris 请检查更新后的 css 问题
  • 是的,可能是边框本身导致了这种转变。查看答案以获取可能的修复...
  • 这个问题有没有得到解决?我在这个帖子中没有看到任何解决方案,但我有同样的问题。

标签: jquery css jquery-ui stylesheet


【解决方案1】:

这很大程度上取决于主题,但似乎 jQuery CSS 中的 ui-state-hover 有一个 1px 边框:

border: 1px solid #fbcb09;

css 在这里:http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.2/themes/ui-lightness/jquery-ui.css

也许这就是将按钮向右和向下移动 1px 的原因。您可以尝试在 CSS 中强制执行 border: none; 属性,如下所示:

.customokbutton { 
  [...]
  border:none !important;
  [...]
}

【讨论】:

  • 嗯...你能创建一个快速工作的小提琴吗?我试过了,它似乎工作正常:jsfiddle.net/QbuT3
  • 很抱歉我无法制作提琴手,因为我的 css 文件太长而且我不知道哪种风格会影响这个。我怎样才能强制按钮在同一个地方?
  • 您可以使用 Chrome 调试器并自己手动添加ui-state-hover,这样您就可以调查正在应用的样式。
  • 我应该在 ui-state-hover 中添加哪些样式以使按钮处于相同位置?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-06-23
  • 2017-07-28
  • 1970-01-01
  • 2012-08-16
  • 2017-12-18
  • 2014-01-30
  • 2016-02-01
相关资源
最近更新 更多